apu1用のlightMPD-v1.0.2(64bit版)を公開しました

投稿日: 2016/05/20 3:03:55

[更新履歴]

  • 2016/05/20 公開

apu1用のlightMPD-v1.0.2(64bit版)を公開しました。

バグフィックスとチューニング方法を変更しました。

主な変更点

  • バグフィックス
  • 64bit版ではsoxrがopenmpに未対応でした。openmpに対応しました。
  • kernelのバージョン
    • linux-4.4.6rt14
  • mpdのバージョン
    • mpd-0.19.14rt-native-dsd
  • cpuaffinityの変更と強化
  • microSDメモリ,USBメモリからのブートを識別するために、ブートパラメータでブートデバイスの指定を行えるようにしました。

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はAmanero combo384をサポートしています。

combd384 でnative dsdを使う場合は audio_output を以下のようにして下さい。

(combo384ではdsd128->dsd64の切換が旨く出来ません)。

native_dsd "yes"

    native_dsd_type    "3"

cpuaffinityについて

cpuaffinityを以下のようにしました。

  • type=0
  • cpuaffinity を使用しない
  • type=1
    • core1: irqhandlerで指定した割込ハンドラーが動作する
    • core0,2,3: 上記のハンドラー以外が動作する
  • type=2
  • 指定は出来ますが、動作はtype=1と同じになります。

cpuaffinityの設定はlightmpd.confの[cpuaffinity]とブートパラメータ(/boot/grub/menu.lst)で行います。

[cpuaffinity]
    type=1

cpuaffinityに1を指定した場合はブートパラメータに以下を追加して下さい。

isolcpus=1 nohz_full=1 rcu_nocbs=1

デフォルトはtype=1です。

irqhandlerについて

lightmpd.confの[irqpriority]でDACを接続したUSBのirqhandlerのプライオリティの指定が行えます。

apu1では無指定の場合以下の用に設定されます。

ehci_hcd:usb1=FIFO:99

ohci_hcd:usb1=FIFO:99

デフォルト値を変更する場合は以下のようにして下さい。

[irqpriority]
setdefault=no                          <-- デフォルトの設定を無効にする
   ehci_hcd:usb2=FIFO:99

ブートデバイスについて

lightMPDではkernelのブート完了後ブートデバイスからlightmpd.confを参照して初期化を行います。

apu2等のようにブートするデバイスによってデバイス名が変わる機種の為に

lightmpd.bootdev

というパラメータを追加しました。

apu1ではmicroSDメモリとUSBメモリからブートできますが、いずれのデバイス名も/dev/sda1になります。

apu1ではブートデバイス毎に下記の様に指定します。この指定を行わないとブートに失敗します。

lightmpd.bootdev=/dev/sda1

USBメモリとmicroSDメモリの共存

microSDメモリが装着されたシステムでUSBメモリからブートするとブート失敗する場合があります。

USBメモリの機種やDACの接続状況によってブートが出来たり失敗したりします。

これはブートしたUSBメモリのデバイス名が/dev/sda1ではなく/dev/sdb1になってしまうためです。

microSDメモリを装着したapu1でUSBメモリからブートする場合は、USBメモリをUSBポートの上段に装着すると

このような事はなくなります。

不要なトラブルを防ぐためにもUSBメモリからブートする場合はUSBメモリをUSBポートの上段に装着して下さい。

クロックソース

apu2,apu1ではclocksourceにhpetとtscを指定できます。

以前はhpetをデフォルトにしてましたが、このバージョンからtscをデフォルトにしました。

clocksourceの指定を行う場合は /boot/grub/menu.lstのkernelに下記を追加します。

  1. hpet
    • clocksource=hpet
  2. tsc
    • clocksource=tsc idel=poll processor.max_cstate=1

ブートパラメータ

ブートパラメータは/boot/grub/menu.lstで指定します。従来のパラメータから下記の物を追加しました。

  1. lightMPDで追加したブートパラメータ
    1. lightmpd.bootdevlightmpd.systype
    2. システムのタイプを指定します。apu2の場合は
    3. lightmpd.systype=apu2
    4. とします。
    5. cpuaffinity関連のパラメータ
    6. クロックソース

/boot/grub/menu.lstにはいくつかのパターンが用意されてます。

デフォルトは

  • クロックソースはtsc
  • cpuaffinityを使用する

になってます。

インストール

  1. イメージファイルのダウンロード
  2. インストールするSDメモリに合わせたイメージをダウンロードします。SDメモリより大きなイメージを選択するとインストールできません。
  3. イメージファイルの解凍
  4. イメージファイルは圧縮されてますので、それを解凍します。
  5. xzという属性のファイルは7zip等のプログラムを使って解凍します。
  6. xzが解凍できない場合は、256MbyteのイメージはWindows付属のプログラムで解凍できますので、SDメモリの容量によらず256Mbyteのイメージを使って下さい。
  7. 解凍したイメージをSDメモリに書き込みます。
  8. 書き込みにはDDwin for Windowsを使って下さい。
    1. 一度SDメモリを取り出して下さい。
  9. 配布パッケージのダウンロード
  10. 配布パッケージの解凍
  11. 配布パッケージはzipで圧縮されています。配布パッケージをイメージファイルをインストールしたSDメモリに解凍します。
  12. /lightMPD/lightmpd.confの編集
  13. 必要があれば/boot/grub/menu.lstの編集

linux-4.6rt1

パッケージ作成中に4.6の正式版が公開されました。パッケージとは別に4.6rt1を用意しました。

  • インストール方法
  • apu1-linux-4.6rt1-201605120zipを解凍すると bzImage-4.6rt1-64が作成されます。
  • このファイルを/boot/bzImage-64にオーバーライトして下さい。
  • 注意
  • 4.6rt1でnohz_full=1を指定するとhtop(CPUの利用状況を表示するプログラムでCPUの使用率が50%近くの値を表示しますが、
  • これはhtopが対応出来ていない為で問題はありません。

ダウンロード