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

投稿日: 2016/05/18 13:44:48

[更新履歴]

  • 2016/05/18 公開

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

apu2ではmicroSDメモリのインターフェイスがapu1から変更になってます。

apu1のmicroSDメモリはUSBを経由して接続されてました。その為、Linuxではscciデバイスとして扱われてました。

apu2のmicroSDメモリはPCI接続になったため、LinuxではSDメモリデバイスとして扱われます。

scsiとSDメモリではデバイス名が異なるためその対応を行いました。

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

主な変更点

  • バグフィックス
  • 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 を以下のようにして下さい。

native_dsd "yes"

    native_dsd_type    "3"

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/grub/menu.lst)で行います。

[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のプライオリティの指定が行えます。

apu2は通常のUSBポート(USB3.0)の他内部にUSBポート(USB2.0,1.1)がありそれぞれirqhandlerが異なります。

USB3.0         xhci_hcd#0
USB2.0         ehci_hcd:usb1

[irqpriority]ではirqhandlerのプライオリティを下記の様に指定します。

USB3.0を使う場合

[irqpriority]
    xhci_hcd#0=FIFO:99

USB2.0を使う場合

[irqpriority]
    ehci_hcd:usb1=FIFO:99

ブートデバイスについて

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

apu2ではmicroSDメモリとUSBメモリからブートできますが、これらのデバイス名が異なります。

  • USBメモリ /dev/sda1
  • microSDメモリ /dev/mmcblk0p1

kernel起動後はどのデバイスからブートされたか解りません。その為、/boot/grub/menu.lstのkernelに

lightmpd.bootdev

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

ブートデバイス毎に下記の様に指定します。

  • USBメモリからブートする場合 lightmpd.bootdev=/dev/sda1
  • microSDメモリからブートする場合 lightmpd.bootdev=/dev/mmcblk0p1

クロックソース

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にはいくつかのパターンが用意されてます。

デフォルトは

  • USBメモリからブート
  • クロックソースは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メモリに解凍します。

linux-4.6rt1

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

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

ダウンロード