無事にインドからPiano 2.1 と Kali が到着し、ハードウェア的には問題なさそうです。
自動的にドライバーを組み込んで使える状態にしてくれるなんて素敵な機能はないので自力で何とかします。
Volumioで使うことがメイン?
色々調べてみると、どうもPiano 2.1のメインターゲットはVolumioを使うユーザーになっているようです。Raspbian等のOSで使うためのドキュメントが全然なく、自力で何とかするしかありません。
ちなみに、Volumioの場合は最新のVolumioを使えばPiano 2.1のドライバーは標準で組み込まれていますので、Volumioの設定を変えるだけです。
カーネルのコンパイルは必要なかった
まず、Kali Reclockerにはドライバーやソフトウェアは特に必要ありません。Piano 2.1が使えるようになれば自動的にKaliも使われることになりますので、どうやってPiano 2.1を使えるようにするかが問題となります。
Piano 2.1(とかBoss DACとかのAllo製品)のドライバー関連はこちらのページにあります。
カーネル4.9.*と4.4.*用のドライバーやパッチがあり、これらを使ってカーネルをコンパイルすれば使えるようになりそうです。
しかしながら、カーネルをコンパイルするのは面倒です。
そこで、rpi-updateして調べてみると、どうやらRaspbianのカーネル4.9.20以降にはデフォルトでAlloのPiano, Piano 2.1, Boss DACのドライバーが組み込まれているようです。
したがって、rpi-updateさえしてしまえばカーネルのコンパイルなしにこれらのDACが使えてしまいます。
Piano 2.1 HI-FI DACのドライバーインストール方法
以下が私がPiano 2.1 HI-FI DACを使えるようにした手順です。
1. rpi-updateで最新のカーネルにバージョンアップ
前述の通り、最新のRaspbianのカーネルにはPiano 2.1やBoss DACのドライバーが標準でありますので、
sudo rpi-update
でカーネルのバージョンを最新にします。もしくは、カーネルのバージョンがすでに4.9.20以降であれば必要ありません。
バージョンを変えたくない場合は上述のAlloサイトからパッチをダウンロードしてカーネルをコンパイルする必要があります。
ちなみに、フォーラムをのぞいていると、Piano 2.1のドライバーはデュアルモノモードを可能にするためにベータテストしているようなので、ドライバーについては時々チェックした方がいいかもしれません。rpi-updateで入ってくるものなのか、自力でコンパイルする必要があるかどうかはわかりませんが。。。
2. ドライバーをブート時に読み込むようにする
次に、Piano 2.1用のドライバーをブート時に読み込むようにします。プラグ&プレイなんていう気の利いたものはないので自力です。
まず、念のためドライバーが存在していることを確認します。
uname -a
を実行し、現在のカーネルのバージョンを確認します。
そして、
ls /lib/modules/4.9.25-v7+/kernel/sound/soc/bcm/snd-soc-allo-*
と実行します。”4.9.25-v7+”の部分は自分のカーネルのバージョンに置き換えます。
すると、私の環境では、
/lib/modules/4.9.25-v7+/kernel/sound/soc/bcm/snd-soc-allo-boss-dac.ko
/lib/modules/4.9.25-v7+/kernel/sound/soc/bcm/snd-soc-allo-piano-dac-plus.ko
/lib/modules/4.9.25-v7+/kernel/sound/soc/bcm/snd-soc-allo-piano-dac.ko
と表示されます。一番上がAllo Boss DAC、2番目がPiano 2.1、3番目がPianoのドライバーです。今回はPiano 2.1を組み込みます。
/etc/modulesを編集し、”snd-soc-allo-piano-dac-plus”という一行をどこか(末尾にでも)追加します。
さらに、/boot/config.txtを編集し、”dtoverlay=allo-piano-dac-plus-pcm512x-audio”という一行を加えます。ちなみに、こちらは/boot/overlaysにあるファイル名を使っているので先ほどの”snd-soc-*”とは名前が異なります。
再起動と確認
ここまでできたらRaspberry piを再起動します。
そして、”lsmod”を実行し、ドライバーが無事組み込まれていることを確認します。
snd_pcm 98501 7 snd_soc_pcm512x,snd_usb_audio,snd_pcm_dmaengine,snd_bcm2835,snd_soc_core,snd_soc_allo_piano_dac_plus
また、ALSAにも認識されていることを確認するため、”aplay -l”を実行します。
カード 1: PianoDACPlus [PianoDACPlus], デバイス 0: PianoDACPlus multicodec-0 []
サブデバイス: 0/1
サブデバイス #0: subdevice #0
なぜか”Piano 2.1″ではなく、”Piano DAC Plus”になっていますが、こういうもののようです。
4. mpdの設定
mpdで音を鳴らしたいのでmpdにPiano 2.1を認識させます。
/etc/mpd.confを編集して以下を追加します。
audio_output {
type “alsa”
name “PianoDACPlus”
device “hw:PianoDACPlus,0” # optional
# mixer_type “hardware” # optional
# mixer_device “default” # optional
# mixer_control “PCM” # optional
# mixer_index “0” # optional
# dsd_usb “yes”
# dop “yes”
# dsd_navtive “yes”
}
以前の記事でも書きましたが、”hw:PianoDACPlus,0″は”aplay -l”で確認した文字列を使います。これにより、ハードウェアの認識順に左右されずに使えます。
5. PCM5142内蔵DSPのファームウェアをダウンロード
これで普通のステレオでは音が出るのですが、Piano 2.1に搭載されたDSPを利用した機能が使えません。そこで、こちらのページの”Piano 2.1 DSP Firmware”からファームウェアをダウンロードします。
ファームウェアのページの右上の緑色のボタンからダウンロードを選ぶと、”piano-firmware-master.zip”というファイルがダウンロードできます。
これを解凍して得られる”lib/firmware/”にある”allo/”というフォルダを”/lib/firmware/”にコピーします。
ややこしいのですが、最終的に、”/lib/firmware/allo/”というフォルダが存在していて、その中に”piano/2.1″というフォルダと”piano/2.2″というフォルダがあって、それらの中に*.binというファイルが大量にあればOKです。
Piano 2.1のドライバーは現在再生中の音楽のフォーマットを認識し、それと現在の設定に合わせたファームウェアを上記のフォルダから探してDSPにダウンロードします。
これらのファイルがないとそもそも2.1モードや2.2モードにできません。
mpdもAmazon Prime Musicも問題なく再生可能、音飛びがまったくなしなのがうれしい
これらの設定でmpdもChromiumブラウザからのAmazon Prime Musicもまったく問題なく再生できるようになりました。
うれしいのは、USB-DACで発生していた音飛び(音切れ?)が全く発生しなくなった点です。
I2SはUSBと異なり、ハンドシェイクなしに一方的にデータを送りつけるだけなのでCPU負荷が小さいのでしょうか。
音についてはもう少し聞きこんでからレビューしようと思いますが、ステレオセパレーションがUSB-DACのものよりも良い気がします。
次回は音のレビューと、Piano 2.1の設定、そしてKali Reclockerの音質に対する効果について書きたいと思います。
コメント