LineageOS18.1にハイレゾDACをつなぐ

こんにちは、turtlekazuです。今回の記事では、RaspberryPiに入れたAndroidのカスタムROMであるLineageOSに、ハイレゾ対応のDAC(Digital Analog Converter)を接続し、動作させるところまでを書いていきたいと思います。

LineageOSの開発者であるKonstaKANGさんのサイトによれば、「Working」の部分でHifiberryDAC+などなどが使えるよ、と書いてあったのですが、意外と一筋縄ではいかず、動作させるまで試行錯誤が必要でした。どなたかの参考になれば幸いです。

   

今回使用するハイレゾDAC

自分が持っているハイレゾDACは、Takazineさんという方が開発されたRaspberryPi用超小型DACボード「Sabreberry DAC Zero」です。ESS社のES9023Pという24bit/192kHzの再生に対応したDACチップを搭載しています。ヘッドホンアンプと3.5mmジャック、各種ボタンがついており、厳選パーツを使用した完成度の高い基盤で、今は販売終了してしまっているのが非常に惜しまれます。ちなみに「Sabre」は鳩サブレのサブレではなく、セイバー(軍刀)と読むそうですね。

この基盤は「Hifiberry DAC」というRaspberryPi用DACのデバイスドライバ設定で動作するため、同じドライバで使える他のDACの方もこの方法で動作させられるはずです。

   

まずは普通につないでみる

LineageOSの Settingsアプリ -> System -> Advanced settings -> Audio の項目を見てみると、HDMIと3.5mmに加えて、あるじゃないですか、「HifiberryDAC+」の項目が。こちらに設定を変更して、いったん電源を切ります。
そして、Sabreberry DAC ZeroをRaspberryPi4のGPIO端子にドッキングします。再び電源をつけて、AppleMusicで音楽を再生すると…

…全く音が流れない…!

ということで、色々調べたり試したりしまして、やっとこさ音が出るようになりました。

   

結論

まず、結論から言ってしまうと、以下の作業を行えばDACが使えるようになります。

(0. DACを外す)

  1. 管理者権限を有効化
  2. config.txtを開く
  3. Audio DACの項目で、「dtoverlay=hifiberry-dacplus」となっているところのコメントを外し、「dtoverlay=hifiberry-dac」に書き換える(Sabreberry DAC Zeroの場合)
  4. Ramdiskの項目で、「gpio=21=ip,pu」「gpio21=1」「gpio21=0」のところをそれぞれ、「gpio=25=ip,pu」「gpio25=1」「gpio25=0」に書き換える(25以外でも、汎用GPIO端子なら多分どれでも可)
  5. Graphics accelerationの項目で、「gpio21=1」のところを「gpio25=1」に書き換える(同上)
  6. Settingアプリ -> System -> Advanced settings -> Audio device で「Hifiberry DAC+」を選択
  7. DACをつないで再起動

この方法は自分なりに編み出した方法なので、間違い等ありましたらご指摘いただけると嬉しいです。(理論上は間違っていないはず…)

   

以下に各項目の詳細を述べていきます。

1. 管理者権限を有効化

LineageOS18.1では、管理者権限でのアクセスにはSSHやシリアルコンソールを使う必要があり、ターミナルアプリ上で行うことができません(17.1以前はデフォルトでできた模様)。
ターミナルアプリで管理者権限の実行をするには、KonstaKANGさんの用意してくださっているsuアドオンを入れるを入れる必要があります。前の記事にも書いているので、実行済みの方は読み飛ばしてください。

suアドオンは、ここからダウンロードできます。ダウンロードしたら、zipファイルをUSBメモリに移動させます。

その後、リカバリーモードで再起動し、TWRPの「Mount」の項目でUSBをマウント、「Install」の項目から、上でダウンロードしたzipファイルをインストールします。
つづいて通常の起動(System)をして、
Settingsアプリ -> System -> Developer options -> Root access から有効化できます。

   

2. config.txtを開く

ターミナルアプリを開き、以下のように入力してconfig.txtを開きます。($や#は入力不要です)

$ su
# mount -o rw,remount /boot
# nano /boot/config.txt

2行目は、デフォルトではbootフォルダは書き換え不可能な形でマウントされているため、書き込み可能な形で再マウントしています -> 参考URL

   

3. Audio DACの項目

config.txtのAudio DACの項目にある

dtoverlay=hifiberry-dacplus

dtoverlay=hifiberry-dac

に書き換えます。BB社のチップとESS社のチップでは、ドライバが違うんでしょうか。変更しないと鳴りませんでした。

dtoverlayというのは、デバイスツリーオーバーレイの略です。ハードウェアの構成情報に関して書かれたファイルである”デバイスツリー”の上書きをしてくれるそうです。RaspberryPiの場合は、/boot/config.txtがそれにあたるみたいですね。
ちなみに、RaspberryPi用DACボードのまとめをしてくれているサイトを見つけました。こちら

しかし、これを書き換えただけではまだ音は鳴りません。次の項目と次の次の項目が、肝です。

   

4. RamDiskの項目

config.txtのRamDiskの項目にある

gpio=21=ip,pu 
[gpio21=1]
[gpio21=0]

を、それぞれ

gpio=25=ip,pu 
[gpio25=1]
[gpio25=0]

に書き換えます。
RaspberryPi用LineageOSでは、デフォルトで外付けシャットダウンボタンをGPIO21のピン(40番)にあてています。
しかし、このピンはSabreberry DAC Zeroにおいて、ひいては他のほとんどのRaspberryPi用DACボードにおいて、オーディオ関連の出力に利用できる唯一のピン(PCM_DOUT)だったのです!そんな貴重なピンが通電の有無の判別だけに使われているという、非常にもったいない仕様になっています。音が出ないのも納得ですね。

シャットダウンに使うのは別のGPIOピンで十分なので、他の汎用GPIOピンを選んで設定します。自分はSabreberry DAC Zeroが確実に使用していないGPIO25(22番)を使うことにしました。GPIO23(16番),GPIO27(13番)などの他の汎用GPIO端子でもいけると思います(確認していませんが…)。

   

5. Graphic Accelerationの項目

上記と同様に、config.txtのGraphic Accelerationの項目にある

[gpio21=1]

[gpio25=1]

に書き換えます。
この部分を見落としていて、私は何回もブラックスクリーンを拝むことになりましたのでご注意ください。以上の書き換えが終わったら、「Ctrl + X」-> 「Y」を押してconfig.txtの内容を保存します。ここで一旦RaspberryPiを再起動しておきます。

   

6. Settingsアプリ

Settingsアプリを開き、
Settingアプリ -> System -> Advanced settings -> Audio device
から「Hifiberry DAC+」を選択します。

この画面は先ほど編集したconfig.txtファイルとは関係がないため、表示名が「Hifiberry DAC」に更新されてるわけではないのでややこしいのですが、他のHDMIや3.5mmジャックの出力を無効化するという意味でこちらを選択する必要がありました。Androidにおいてconfig.txtと設定アプリの設定が互いにどう影響しているのか、いまいち掴みきれておりません…。

   

7. DACをつないで再起動

諸々の設定が終わったので、いよいよDACをつなぎましょう。その前に、上記のSettingsアプリの設定は再起動しないと適用されないので、一旦RaspberryPiをシャットダウンします。DACをつないで再度電源を入れると、DACから音が出るようになっているはずです!(自分の場合、基盤上のLEDが明るく光り出したので、分かりやすかったです)

   

結び

LineageOSは、公式サイトではDACボードへの対応を標榜しているのですが、GPIOピンのアサインで予想外のトラップが待っていました。あまりWeb上にまとまった情報がなかったので、音を出すまでに少々苦労しましたが、ハードウェアとソフトウェアの関係の良いお勉強になりました。

Androidの多様なハイレゾ対応ストリーミングサービスを、I2Sを利用した高音質で楽しめちゃうなんて、本当にありがたい時代ですね(ビットパーフェクトかは知りませんが)。次のどこかの記事では、ディスプレイをつけてスタンドアロン化する記事を書きたいと思っております。

turtlekazu

モノづくりが大好きです。オーディオや車、ガジェットなども。ミシシッピニオイガメを飼育中。最近、ほうじ茶にハマっています。

おすすめ記事

コメントを残す

メールアドレスが公開されることはありません。