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メモリに書き込むことによりブートディスクを作ります。

  1. イメージファイルのダウンロード
  2. インストールするSDメモリに合わせたイメージをダウンロードします。SDメモリより大きなイメージを選択するとインストールできません。
  3. cuboxi4,wandboardとも256M,2G,4Gのイメージファイルを用意しました。
  4. イメージファイルの解凍
  5. イメージファイルは圧縮されてますので、それを解凍します。
  6. xzという属性のファイルは7zip等のプログラムを使って解凍します。
  7. xzが解凍できない場合は、256MbyteのイメージはWindows付属のプログラムで解凍できますので、SDメモリの容量によらず256Mbyteのイメージを使って下さい。
  8. 解凍したイメージをSDメモリに書き込みます。
  9. 書き込みはDDwin for Windowsを使うと便利です。
    1. イメージファイルの書き込みが終了したら一度SDメモリを取り出して下さい。

配布パッケージのインストール

    1. ブートディスクを用意します。
  1. 配布パッケージのダウンロード
  2. 配布パッケージの解凍
  3. 配布パッケージはzipで圧縮されています。配布パッケージをブートディスクに解凍します。

設定

  • 利用状況に合わせて/lightMPD/lightmpd.confを編集します。
  • cpuaffinityに合わせて/boot/uEnv.txtの編集もして下さい。
    • /lightMPD/mpd.confの編集をします。
    • 付属のmpd.confは下記のようになっています。
    • dsdの再生は内蔵のdsd2pcmを使ってpcmに変換されます。
      • サンプリングレート変換は"soxr very high openmp"
      • サンプリングレートの変換は行わない

ダウンロード

cuboxi4pro

wandboard

ブートローダを新しくしたので、イメージファイルは必ず下記の物を使用して下さい。以前のイメージファイルではブートできません。