Raspberry Pi 2 用の USB-DAC 専用 upnpplayer を公開しました。

2,504 views
Skip to first unread message

donuts...@gmail.com

unread,
Oct 17, 2017, 12:19:36 PM10/17/17
to lightMPD
Raspberry Pi 2 用の USB-DAC 専用 upnpplayer を公開しました。


upnpgwと連携してupnpのレンダラーとして使用します。
基本的にはダウンロードしたそのままの状態でご利用ください。

【特徴】
 MPDはSYMPHONIC-MPDのモジュールを使用しています。
 (作者の方には公開の了解をいただいています。)
 その他、SYMPHONIC-MPDの特徴をなるべく盛り込むようにしました。

 私はRaspberry Pi 3、I2S接続DAC、両方とも持っていませんが、
 SYMPHONIC-MPDの音が気になりましたのでこのような形で
 音出しをしてみました。
 全く別物になっている可能性もあります。
 両方の音を聞ける環境をお持ちの方、感想など頂けると幸いです。

【格納場所】
 https://drive.google.com/file/d/0B9LSJY9xM01jUmZhS0Rwb0lkM2c/view?usp=sharing

【ファイル名】
 rpi2-smpdplayer-usb-20171017.zip

【対応機種】
 Raspberry Pi 2
 ※Rpi3用のdtbも格納していますが、確認はとれていません。

【インストール手順】
 (1)パッケージをダウンロード
 (2)解凍して出来たフォルダの中身のみをmicroSDカードへコピー

【設定変更手順】
 confフォルダ内にmpdとpolipoの設定ファイルがありますが
 通常は使用しません。initrd.romfs.gzですべて完結させています。
 設定を変更したい場合は以下手順でinitrd.romfs.gzの再作成をします。
 (1)config.txt変更 (#を付け替える、以下は変更後の内容)
   #kernel=/boot/zImage.player
   kernel=/boot/zImage.setup
   ※zImage.playerはSDマウント、telnet接続ができません。
 (2)confディレクトリのupload.lstを変更
   mpd、mpd.conf、polipo.confの内取り込みたい行を有効化(#を外す)
   ※'='の右に取り込みたいファイル名を指定
 (3)起動&接続
   アダプター経由でtelnet接続(root/パスワードなし)
 (4)/var/bin/mkimage.shを実行
   /var/tmp/imgディレクトリが作成され、initrd.romfs.gzに必要な情報
   が収集されます。
   ※(2)の内容も反映されます。
 (5)/var/tmp/imgの内容を変更(任意)
   ※mpd.conf、polipo.confの変更だけであればこの手順は不要です。
 (6)/var/bin/mkinitrd.shを実行
   /var/tmp/imgの内容からinitrd.romfs.gzを作成
   ※作成したファイルはSDのconfディレクトリへコピーされます。
 (7)SD内のbootディレクトリへ作成したinitrd.romfs.gzをコピー。
 (8)config.txtの戻し
 ※(1)(2)(7)(8)はWindows上の操作です。
  (3)(4)(5)(6)はtelnetで接続したRaspberryPi2上の操作です。


イメージは無保証です、個人の責任でご利用ください。

質問などありましたらこのスレッドにお願いします。私が回答いたします。
※正式版とは関係ありませんので、digififanさん、SYMPHONIC-MPDの作者の方
 へ直接問い合わせることはおやめください。

digi...@gmail.com

unread,
Oct 18, 2017, 12:29:31 AM10/18/17
to lightMPD
donuts.sho73さん

興味深いパッケージの公開ありがとうございます。

今回公開されたファイルをテストしました。

raspi2,raspi3でも起動しますが、再生ができません。
telnetでloginして確認すると /pro/asound がありませんでした。
多分 zImage.playerでも同じ状況ではないでしょうか?

------------------------

[注意]以下技術ネタになります。


symphonic-mpdは私も気になっていてパッケージをダウンロードして眺めています。まだ、音だしはしていません。音よりも中身が興味あるので(笑)

設定値は違いますが、アプローチの方向としてはlightMPDの影響もみられちょとうれしく感じています。
ちょっとこれはと思うところもあるのですが、一番興味をもっているのがio_directです。これはmpdの改造が必要なので気軽に試す事はできないので、今回のリリースは感謝です。

確認したい点

 timer_slac
オリジナルのmpdもoutput thread ではpriorityを FIFO:30にtimer_slackを100us(デフォルトは50us)に
設定しています。rt-optでもoutput threadだけはtimer_slackの設定ができるようになっています。
しかし、この値を変更しても音の変化は感じませんでした。
FIFOやRRではtimer_slackなんてあったら逆に困るなと思って調べてみると、timer_slackはFIFOやRRのプロセスでは0に固定されていました。
symphonic-mpdではtimer_slackで結構音が変わるという評価が見られるので、これは確認したい点です。

io_direct
これは盲点でした。OSのキャッシュは結構いやらしく、リードオンリーでほぼシーケンシャルアクセスの
音楽ファイルにはむしろキャッシュはない方がいいのではと感じていましたが、あいにくio_directの存在をしりませんでした。
これは結構効果的だと思います。
lightMPDでもio_directはぜひ実装したいので現在問題点を洗い出しています。
  • io_directではディスクのプロッグサイズバウンダリの入出力が要求されますが、実際のIOを発行するのはデコーダーです。デコーダーではディスクのブロックサイズなんて意識していないので、mpd側でブロッキングしなければなりません。これをうまくやらないと同じブロックを何度も読むことになります。
    nfs,cifsではnfs,cifsないであるていどキャッシュされるので問題はでないと思いますが、スピンドルをもったデバイスでは逆にわるくなるかもしれません。
  • ライブラリのスキャンをio_directで行うと相当に遅くなると予想できるので、音楽ファイルの再生とライブラリのスキャンでio_directの有無を切り替える必要がある。
ついでになりますが、donuts.shop73さんのupnpplayeのようにkernelからブロックデバイスを無くすことを考えています。
設定ファイルやmpdのロードモジュールはwgetでupnpgwから持ってくる予定です。

digi...@gmail.com

unread,
Oct 18, 2017, 3:41:49 AM10/18/17
to lightMPD
donuts.sho73さん

mount -t nfs はサポートされていないのですね。
upnp専用なのであたりまえですね。



uehar...@gmail.com

unread,
Oct 18, 2017, 10:22:43 AM10/18/17
to lightMPD
donuts.sho73さん

raspi 3で動作を確認しました。dtbファイルはどちらを選択しても動作するようです。

donuts...@gmail.com

unread,
Oct 18, 2017, 10:31:55 AM10/18/17
to lightMPD
digififanさん

手持ちのファイルではなくダウンロードし直して確認しましたが、
私の環境ではどちらのカーネルでも再生できました。
telnetがつながるのであれば再生できても良さそうなものですが...

【再生を確認した環境】
 upnpplayer: ココで公開している物(Raspberry Pi 2)
 upnpgw: 「NanoPiNEO用lightMPDにupnpgwの機能を追加しました」で公開している物(NanoPiNEO2)
 USB-DAC: uDSD
 その他: USB-LANアダプター(NanoPiNEO2に接続)

【接続】
[HUB]---USBLAN---[NanoPINEO2]---LAN---[RaspberryPi2]---USB---[USBDAC]

【upnpplayer仕様】
 カーネル: 4.12.14
 MPD: 0.19.21
 ネットワーク設定はlightMPDのupnpplayerに準拠
 polipoはupnpplayerとupnpgwでカスケード接続を想定
 DSDは dop="yes" を設定

/pro/asoundが無いのは正常です。再生中も無いです。
カーネルをスリム化している際に落ちたようですが、
私的にはなくても問題ないためそのままにしています。
以前公開したものに対してもどなたかから同じ指摘を受けたことがあります。

同じ構成のupnpplayerがもう一つあります。これもココで公開いたしますので
お手数ですが再生可能かご確認いただけないでしょうか。
こちらはapuとの接続で再生できたと報告いただいているものです。

【格納場所】
 https://drive.google.com/file/d/0B9LSJY9xM01jTG4yZDNmWVJyTzg/view?usp=sharing

【ファイル名】
 rpi2-upnpplayer-usb-20171015.zip

これはSYMPHONIC-MPDのMPDを取り込んだ版の前身にあたるもので
とことんスリム化を追求したものです。initrd.romfs.gzのサイズが
4MB強ほどとなっています。
再生可能なフォーマットは、flac, wav, dsd に絞っています。

digi...@gmail.com

unread,
Oct 18, 2017, 12:23:33 PM10/18/17
to lightMPD
donuts.sho73さん

raspi3 で動作確認できました。

upnpgw(apu)のpolipoの設定(allowclient)が間違ってました。

/proc/asoung がないのでてっきりこれだと思って他をしらべてませんでした。
大変ご迷惑をおかけしました。

mojoというDACで再生しました。ちょっとしか聴いてないのですが、とても優しい音がでています。raspiのusbでこの音はすごいですね。
一つ確認ですが、mpd以外のライブラリは普通にbuildしたものですか?
あと、upnpモードだとdirect ioの効果は確認できないのでSDメモリから再生するつもりです。

> とことんスリム化を追求したものです。initrd.romfs.gzのサイ.ズが

> 4MB強ほどとなっています。
> 再生可能なフォーマットは、flac, wav, dsd に絞っています。
最初にダウンロードしたバージョンでも面くらいましたが、これも壮絶ですね。
また、ダウンロードしてませんが、よくデバッグできましたね。

uehar...@gmail.com

unread,
Oct 19, 2017, 4:19:55 AM10/19/17
to lightMPD
donuts.shop73さん

apu1d4をアダプターとして試聴しました。アダプター側のpolipoの設定ですが、donutsさんが他で公開している数字にしないと、容量の大きいハイレゾファイルの再生が、途中で中断する(その後はシステムがハングする)現象が発生しました。apuをプレーヤーにも使う場合とくらべて、各設定を半分以下にする必要があるようです。
音は素晴らしいです。apuほど太い音ではありませんが、透明感があり、しなやかであると感じました。

kubo...@nifty.com

unread,
Oct 19, 2017, 5:02:25 AM10/19/17
to lightMPD
donuts.sho73さん

apu1c2(lightMPD upnpgw) adapter + Korg 10R DAC と繋いで、音出し、確認しました。r-pi3を使い、device_tree=/boot/bcm2710-rpi-3-b.dtb、arm_freq=1320に変更しています。MPDが0.20.9rtの直前の版を試していましたので、問題なく動かせました。素晴らしい音ですね。
ちなみに
> /pro/asoundが無いのは正常です。再生中も無いです。...以前公開したものに対してもどなたかから同じ指摘を受けたことがあります。
は僕です。
「まさか /proc/asound まで削除しているソフトがある」とは夢にも思いませんでしたので、ビックリ。あまりの刈り込みの凄さに驚いた記憶があります。

基本的にホールトーン重視のSymphonicMPDの世界に近づいた音になりますね。
MPDが0.20.9rtの版は徹底したオンマイク、クリアな音ですが、こちらはもっと雰囲気重視、柔らかい音になっていると思います。どちらが良いかは好みだと思いますが、僕はこちらの音が好きです。
SymphonicMPDとの比較ですが、SymphonicMPDで raspbianを排除して、upnp対応させたらどんな音になるのかなと思っていました。scratch linux、upnpタンデム構成で、「なるほどねぇ。よりリアルな音になるなぁ。」と分かったというところですかね。まあ、このあたりは試聴に使う DACによって変わる範囲ですので、あくまで参考にというレベルの感想です(SymphonicMPDは r-pi2 + TerraBerryという構成で鳴らしています)。

質問が三つ。
一 mpdはSymphonicMPDのものをそのまま入れ換えたのでしょうか ?
二 mpd以外にSymphonicMPDを参考にチューニングされたのは何でしょうか ?
三 mpd以外のソフトに手は入っていますか(例えばpolipoにdigififanさんのパッチは適用されているか) ?

面白いソフトの公開ありがとうございました。

donuts...@gmail.com

unread,
Oct 19, 2017, 10:17:48 AM10/19/17
to lightMPD
digififanさん

動作確認がとれて良かったです。
感想もいただきありがとうございます。
BBでのboticやOrangePiZero、NanoPiNEOなどに手を出してはいるものの
RaspberryPi2でのUSB接続を基本にやっていますので、
そう言っていただけるとうれしいです。

>mpd以外のライブラリは普通にbuildしたものですか?
mpd以外のライブラリもmpdが必要なものはglibcをのぞいてすべて
SYMPHONIC-MPDから持ってきました。
glibcとそれ以外のライブラリは普通にbuildしたものです。

後から公開したもののスリム化は、mpd、polipoなど実行プログラムが
必要とするライブラリをldd コマンドで事前確認した上で徐々に
外していきました。
その他、以前どなたかがスリム化を行っていた情報も
参考にさせていただきました。


uehara2007さん

polipoの設定に関するご報告ありがとうございます。
参考にさせていただきます。
感想もいただきありがとうございます。


kubota.yoさん

感想いただきありがとうございます。
>SymphonicMPDの世界に近づいた音になりますね。
これが聞けて安心しました。
SYMPHONIC-MPDはMPDだけでなくシステムトータルで開発されていますので、
MPDだけ持ってきてどこまでの音が出せるのか不安でした。

>一 mpdはSymphonicMPDのものをそのまま入れ換えたのでしょうか ?
上にも書いている通り関連ライブラリ含めそのまま入れ替えています。

>二 mpd以外にSymphonicMPDを参考にチューニングされたのは何でしょうか ?
SYMPHONIC-MPDのホームページから引用すると以下ぐらいでしょうか。
 11.CPUのオーバークロック
  ⇒ SYMPHONIC-MPDのRpi2用の設定にしています。
 12.GPUのアンダークロック
  ⇒ 設定が反映されているのか未確認ですが 0 を設定しています。
 15.CPU Affinity設定
  ⇒ MPDの起動をCPU1からCPU0に変更しました(変化が合ったのかどうか?ですが)
 19.USBポートへのバスパワー供給停止
  ⇒ 公開状態では無効にしていますがUSB-DACの電源を外部供給している場合は
   有効だと思います。/etc/init.d/S99rc.localに設定があります。
 20.LED消灯
  ⇒ もともとやっていたことではありますが、電源のみ残しています。
   /etc/init.d/S99rc.localに設定があります。
   Rpi3のSYMPHONIC-MPDではどのような状態なのでしょうか?
 21.ALSAバッファのチューニング
  ⇒ 256 (デフォルトから気持ち多め)にしていましたが 4096に変更しました。

>三 mpd以外のソフトに手は入っていますか
polipoにはdigifaifanさんのパッチを適用させていただいています。
それ以外では、カーネルにパッチを当ててLANのLEDを消しているくらいです。

digififanさんのlightMPDを自分なりにスリム化し、そこへパパリウスさんのMPDを乗せてみた。
私のやっていることはただそれだけです。

最後になってしまいましたが、みなさん Rpi3 をお使いなのですね。
公開しているものは Rpi2 用ですので、Rpi3を使う際にはconfig.txtに
以下を加えるともう少し変わってくるのでしょうか。

# disable wifi/bluetooth
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt

kubo...@nifty.com

unread,
Oct 20, 2017, 5:11:30 AM10/20/17
to lightMPD
donuts.sho73さん

ご返事ありがとうございました。どういう仕組みなのかよく分かりました。
僕も以前botic版のlightMPDで同じようなことを試したことがあります。
http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5508#5509
ライブラリを含めて、丸ごともってきたのが、SymphonicMPDの世界を引き継いでいるということだと思います。

> # disable wifi/bluetooth

試してみましたが、僕の耳(環境)では違い分かりませんでした。
変わったような気もするのですが、多分気のせいですね(^^;;;。

Message has been deleted

ksp...@gmail.com

unread,
Oct 20, 2017, 11:45:00 PM10/20/17
to lightMPD
donuts.sho73さま

>それ以外では、カーネルにパッチを当ててLANのLEDを消しているくらいです

HDMI、USBのOFFは以前から当方も適用していました。
LANのLED消灯はやり方が分かりません。

差し支えなければ、やり方や、参考ページなどをご教授いただけないでしょうか。


ksp130k

donuts...@gmail.com

unread,
Oct 21, 2017, 12:44:09 AM10/21/17
to lightMPD
ksp130kさん

LANのLED消灯についてはこの掲示板の別スレッド「なんちゃってネットワーク分離」で公開しています。1月15日のコメントを参考にしてください。

digi...@gmail.com

unread,
Oct 21, 2017, 2:28:01 AM10/21/17
to lightMPD
donuts.shop73さん

> 以下を加えるともう少し変わってくるのでしょうか。
> # disable wifi/bluetooth
> dtoverlay=pi3-disable-wifi
> dtoverlay=pi3-disable-bt

これはカーネルによると思います。kernelにwifi,bluetoothのドライバーが入っていなければ影響ないと思います。
ドライバーがないので設定しようがありません。
ドライバーが無いときのデバイスの状態がどうなっているか分かっていません。
ドライバーが無いときは初期化がちゃんとされ、その上でdisableの状態であればいいのですが...

newbig...@gmail.com

unread,
Oct 28, 2017, 2:55:11 AM10/28/17
to lightMPD
こんにちは、オーシャンです
今話題の
force_turbo=1
over_voltage=8
を追加してみました。
静けさと安定感が増し、素晴らしいと思います

アダプタはNano Pi neo2です

newbig...@gmail.com

unread,
Oct 30, 2017, 9:12:21 PM10/30/17
to lightMPD
おはようございます、オーシャンです
その後、見返してみるとすでに設定済みで有ることが分かりました
コア電圧も先頭に追加したので、その後異なる電圧指定をした場合、どうなるのか分かりません
とにかく、とんでもない駄耳を晒したようで、申し訳ありません
ただ、説得力無いですが、force_turbo=1に効果がある事は間違いないです
lightmpd1.0.4で確認して頂ければ分かります
Reply all
Reply to author
Forward
0 new messages