cuboxi4pro,wandboard向けlightMPD v1.0.2
[更新履歴]
- 2016/06/02 公開
概要
cuboxi4pro,wandboard用のlightMPD v1.0.2を公開します。
cuboxi4pro,wandboardでカーネル、rootイメージは同じですがbootローダの仕様が異なるため、各々独自のパッケージとして公開します。
主な変更点
- kernelのバージョン
- linux-4.4.6rt14
- mpdのバージョン
- mpd-0.19.14rt-native-dsd
- cpuaffinityの変更と強化
- bootパラメータの変更
- wandboardのbootローダの変更
- これにより、ボードのrev-bにも対応できるようになりました
linux-4.4.6rt14について
native-dsdに対応するDAC(DDC)
- Wyred 4 Sound DAC-2 DSD
- iFi Audio micro/nano iDSD
- Matrix Audio X-Sabre
- Matrix Audio Mini-i Pro
- OPPO HA-1
- Mytek Brooklyn DAC
- Gustard DAC-X20U
- DIYINHK DSD DXD 384kHz USB to I2S/DSD
- JLsounds I2SoverUSB
- Aune X1S 32BIT/384 DSD DAC
- Unison Research Unico CD Due
- OPPO HA-2
- PS Audio NuWave DAC
- Amanero Combo384
- ElectrArt USDA2, USDA_MINI
このうち実際に動作確認したのは
- ElectrArt USDA2, USDA_MINI
- DIYINHK DSD DXD 384kHz USB to I2S/DSD
- JLsounds I2SoverUSB
です。
mpd-0.19.14rt-native-dsdについて
- native_dsd_typeに3(DSD_U32_LE)を追加しました
- Amanero Combo384を使う場合は native_dsd_type を "3"にして下さい
- 拡張オーディオフォーマットの倍率の上限を64にしました
cpuaffinityについて
cpuaffinityを以下のようにしました。
- type=0
- cpuaffinity を使用しない
- type=1
- core1: irqhandlerで指定した割込ハンドラーが動作する
- core0,2,3: 上記のハンドラー以外が動作する
- type=2
- core1: irqhandlerで指定した割込ハンドラーが動作する
- core2,3 mpdが動作する
- core0: 上記以外のプログラムが動作する
cpuaffinityの設定はlightmpd.confの[cpuaffinity]とブートパラメータ(/boot/uEnv.txt)で行います。
例
[cpuaffinity]
type=2
cpuaffinityに1,2を指定した場合はブートパラメータに以下を追加して下さい。
isolcpus=1
nohz_full=1
rcu_nocbs=1
cpuaffinityに2を指定した場合は isolcpus=1-3 を指定する事も出来ます。
デフォルトはtype=2です。
irqhandlerについて
lightmpd.confの[irqpriority]でDACを接続したUSBのirqhandlerのプライオリティの指定が行えます。
cuboxi4pro,wandboardのirqhandlerは以下の通りです。
[irqpriority]ではirqhandlerのプライオリティを下記の様に指定します。
[irqpriority]
2184000.usb=FIFO:99
irqpriorityを省略するすると下記のデフォルトが設定されます。
- cuboxi4pro
- 2184000.usb=FIFO:99 上段のUSBポート
- wandboard
- 2184200.usb=FIFO:99
cuboxi4proで下段のUSBポートを使用する場合はirqpriorityを
2184200.usb=FIFO:99
にして下さい。
ブートパラメータ(uEnv.txt)
/boot/uEnv.txtというファイルでkernelのブートパラメータを変更できます。
cuboxi4pro,wandboardでuEnv.txtは異なりますが、kernelのパラメータの部分は共通になっています。
kernelのパラメータ部分は下記の様になっています。
##################
isolcpus=1
nohz_full=1
rcu_nocbs=0-3
systype=wandboard
bootdev=/dev/mmcblk0p1
##################
isolcpus,nohz_full,rcu_nocbs
cpuaffinityと連動してkernelの動作を変更します。
- isolcpus
- kernelのスケジューラの管理から外すCPUを指定します。
- nohz_full
- ticklessで動作するCPUを指定します。
- rcu_nocbs
- 説明しずらいので省略します。
これらはlinuxのkernelについての知識を必要とします。取りあえずは下記のようにして下さい。
- cpuaffinity type = 0の時
- isolpus=
- nohz_full=
- rcu_nocbs=0-3 または rcu_nocbs=
- cpuaffinity type = 1の時
- isolcpus=1
- nohz_full=1 または nohz_full=1-3
- rcu_nocbs=0-3 または rcu_nocbs=
- cpuaffinity type = 2の時
- isolcpus=1 または isolcpus=1-3
- nohz_full=1 または nohz_full=1-3
- rcu_nocbs=0-3 または rcu_nocbs=
systype
systypeは使用するボードの種類をしてします。
cuboxi4 , wandboardを指定して下さい。
bootdev
lightMPDをブートしたデバイスを指定します。
cuboxi4,wandboadとも
bootdev=/dev/mmcblk0p1
を指定して下さい。
インストール
ブートディスクの作成
cuboxi4,wandboardはSDメモリの特定の領域にブートローダを書き込む必要があります。これはWindows系のPCでは行えません。
ブートローダを書き込んだSDメモリのイメージファイルを用意しました。そのイメージファイルをSDメモリに書き込むことによりブートディスクを作ります。
- イメージファイルのダウンロード
- インストールするSDメモリに合わせたイメージをダウンロードします。SDメモリより大きなイメージを選択するとインストールできません。
- cuboxi4,wandboardとも256M,2G,4Gのイメージファイルを用意しました。
- イメージファイルの解凍
- イメージファイルは圧縮されてますので、それを解凍します。
- xzという属性のファイルは7zip等のプログラムを使って解凍します。
- xzが解凍できない場合は、256MbyteのイメージはWindows付属のプログラムで解凍できますので、SDメモリの容量によらず256Mbyteのイメージを使って下さい。
- 解凍したイメージをSDメモリに書き込みます。
- 書き込みはDDwin for Windowsを使うと便利です。
- イメージファイルの書き込みが終了したら一度SDメモリを取り出して下さい。
配布パッケージのインストール
- ブートディスクを用意します。
- 配布パッケージのダウンロード
- 配布パッケージの解凍
- 配布パッケージはzipで圧縮されています。配布パッケージをブートディスクに解凍します。
設定
- 利用状況に合わせて/lightMPD/lightmpd.confを編集します。
- cpuaffinityに合わせて/boot/uEnv.txtの編集もして下さい。
- /lightMPD/mpd.confの編集をします。
- 付属のmpd.confは下記のようになっています。
- dsdの再生は内蔵のdsd2pcmを使ってpcmに変換されます。
- サンプリングレート変換は"soxr very high openmp"
- サンプリングレートの変換は行わない
ダウンロード
cuboxi4pro
- イメージファイル
- 256Mbyte(cuboxi4boot256m.img.zip)
- 2Gbyte(cuboxi4boot2g.img.xz)
- 4Gbyte(cuboxi4boot4g.img.xz)
- パッケージ
wandboard
ブートローダを新しくしたので、イメージファイルは必ず下記の物を使用して下さい。以前のイメージファイルではブートできません。
- イメージファイル
- 256Mbyte(wandboot256m-20160530.img.zip)
- 2Gbyte(wandboot2g-20160530.img.xz)
- 4Gbyte(wandboot4g-20160530.img.xz)
- パッケージ