NanoPi NEO2用Volumio2の機能切り替え(dtb差し替え)について
大まかな仕組み
- NEO2用Volumio2に採用しているLinuxカーネルはdevice treeという方法でドライバのパラメータなどを変更し実際の動作を切り替えています
- device treeの実行時バイナリはdtbとdtboの2種あります。
- NanoPi NEO2の場合、現時点ではdtbのみを使用しています。
- 使用するdtbは/boot/boot.scrで指定されている /boot/sun50i-h5-nanopi-neo2.dtb となります。
- そんなわけで、/boot/sun50i-h5-nanopi-neo2.dtbを差し替えることで動作を変えることができるわけです。
変更方法
- /boot/sun50i-h5-nanopi-neo2.dtbを任意のdtbで上書きすることで動作が変わります。
- ここではsun50i-h5-nanopi-neo2-i2s-generic.dtbに変更する例を書いておきます。
- SSHでログインして変更する方法と、Windows上で変更する方法を紹介します。どちらかお好みの方法で変更してください。
その1 NanoPi NEO2にログインして変更
- TeraTermやputty、sshコマンドでログインしdtbを変更する方法
- まずはWEB UIに接続してみます。ブラウザで接続してみましょう。volumio.local(mDNS経由)での接続ができない場合は、直接IPアドレスを指定して接続してください。
- http://volumio.local
- 無事繋がったらSSHを有効化します。ブラウザで開発者メニューを開きsshをEnableにします。イメージを書き込んだ後に一度だけやればOKです。
- http://volumio.local/dev
- sshクライアントでvolumio2が動作しているNanoPi NEO2に接続します。
ssh volumio.local
- ログインできたらコピーコマンドでdtbファイルを差し替えます
cp /boot/sun50i-h5-nanopi-neo2-i2s-generic.dtb /boot/sun50i-h5-nanopi-neo2.dtb
- あとはリブートして反映します
reboot
- 再起動したらWEB UIから「プレイバックオプション」を開き、出力デバイスを選択し直してください。
その2 MicroSDをカードリーダでWindows PCに接続し書き換え
- イメージ書き込み済みのMicroSDをカードリーダでPCに接続してください。
- イメージを書き込んだ直後は認識できていないことがあるので、一度カードリーダを外して付け直してください。
- ボリューム名BOOTというドライブを認識するはずです。ドライブを認識しない場合は、ドライブ文字の割り当てがされていない可能性があります。ドライブ文字を変更したいのですが?|Q&A | IODATA アイ・オー・データ機器などを参考にBOOTパーティションのドライブ文字を設定してください。
- まずはsun50i-h5-nanopi-neo2.dtbを削除
- sun50i-h5-nanopi-neo2-i2s-generic.dtbを複製
- 複製したファイルをsun50i-h5-nanopi-neo2.dtbにリネームしてください。
- 「安全な取り外し」を行なったらNEO2にSDカードを差し込み起動してください。
- 起動したらWEB UIから「プレイバックオプション」を開き、出力デバイスを選択し直してください。
dtbの簡単な説明
sun50i-h5-nanopi-neo2-i2s-generic.dtb
- もっとも基本的にI2Sドライバです。
- PCM5102A/ES9023/TDA1387T/TDA1543などのMCLKが不要なDACを鳴らす場合にはこれを選択してください。
sun50i-h5-nanopi-neo2-i2s-generic_32fs.dtb
sun50i-h5-nanopi-neo2-i2s-generic_mclk.dtb
- 基本的なI2Sドライバですが、BCLK/LRCLKに加えPA6ピンからMCLKを出力します。
- MCLKが必要なFN1242A/PCM1794などの再生に利用します。
sun50i-h5-nanopi-neo2-pcm_rj16_32fs_mclk.dtb
- PCM RJ 16bit固定出力とするドライバです。
- TDA1545A/TDA1543Aなど、RJフォーマットで16bitが上限のDACで再生する場合に利用します。
sun50i-h5-nanopi-neo2-i2s-generic_mclk_ak449x.dtb
sun50i-h5-nanopi-neo2-i2s-dacpluspro.dtb
sun50i-h5-nanopi-neo2-spdif.dtb
- NEO2内蔵のS/PDIF出力を有効にするdtbです。
- 下記で暫定公開中のお試し版のみで利用可能です。
最新ブートローダ差し替え版のNanoPi NEO2用Volumio2暫定リリース。
— __tkz__ (@__tkz__) 2018年10月12日
デフォルトではS/PDIF出力になっています。https://t.co/KUfk1GMiTS
その他情報・メモなど
device tree関係
mDNS関係
- volumio.localでのアクセスですが、LinuxやMacであれば問題なくアクセスできると思います。
- 同じネットワーク内に複数Volumio2を動かしているときどうなるかは不明。
- Volumio2のWEB UIでホスト名を変えるとvolumioの部分が変わりますのでご注意を。
- WindowsでのmDNSの動作はよくわかりません。Windows10で実装されたようですが完璧では無いようで。
- Windows利用者でもiTunesを導入している環境だとBonjourサービスがインストールされるため動くことがあるようです。
- 繋がらない場合はIPアドレスでアクセスしてください。
- arpコマンドで調べるか、ルータのDHCP振り出し情報を見るか。
- mDNSを使ってローカルDNSサーバーを廃止する - Qiitaに情報あります。
Volumio2でsshの有効化関連
WindowsでUSBドライブが見えない問題
- 複数のドライブが見えるタイプのカードリーダでガチャガチャやってると発生する模様
- Windowsのシステム上は認識しているが、ドライブ文字が割り当てられていないだけのようです。
- 手動でドライブ文字を割り当てれば見えるはず。