buildrootで作ろう、完全にメモリ上で動くシステム の続きです。
これはlightmpdv1.03にupmpdcliとpolipoを追加してupnpレンダラ化をやってみたというだけの記録です。
digififanさんが公開されている
lightMPDのrootイメージの作成方法(暫定版)
に書かれていることが実行できることを前提としております。
いずれ、digififanさんがやり方を教えてくださると思います
のでそれを待たれてもよろしいかと思います。あくまで私の
やったことの記録ですので。
$ make lightmpd_beaglebone_defconfig
ここまでやりましたらここから前準備をします。
https://drive.google.com/file/d/0B6wqcK_p4l0RWEZ2dlFpeEtOR0E/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B6wqcK_p4l0RWEZ2dlFpeEtOR0E/view?usp=sharing
からpolipo-buildroot-pkg.tgzを落として来て適当な場所に
展開します。中に以下の3つのファイルがあります。
0001-discardOblects.patch
Config.in
polipo.mk
buildroot-2016.11.1ディレクトリの中にpackageがあります
ので、その中にpolipoディレクトリを作りそこに上の3つの
ファイルをコピーしておきます。
同じくpackageの中にあるConfig.inをエディタで開いて以下の
ように編集します。
source "package/opus-tools/Config.in"
source "package/polipo/Config.in" <---追加
あとdigififanさんの指示通りにディレクトリ構成をつくって
おられれば、lightmpd-root-v15というディレクトリがあります
のでその中のrootdirディレクトリを開いてください。
これはこれから作るrootイメージに追加したいものをいれておく
場所です。この中のetcに以下のファイルを作っていきます。
etc/init.d/S94polipo(実行権限の付与を忘れずに)
etc/polipo.conf
etc/upmpdcli.conf
lightmpdupnpgwを参考にすれば作れると思いますが、私の設定
を書いておきます。
(polipo.conf)
enable=yes
proxyAddress=0.0.0.0
allowedClients=127.0.0.1
chunkHighMark=335544320
chunkLowMark=83886080
chunkCriticalMark=251658240
objectHighMark=512
dnsQueryIPv6=no
cacheIsShared=false
dnsUseGethostbyname=yes
disableConfiguration=true
disableIndexing=true
disableLocalInterface=true
(upmpdcli.conf)
enable=yes
upnpiface=eth0
mpdhost=localhost
mpdport=6600
friendlyname=BBGmpd <---好きな名前にしてください
ohproductroom=BBGmpd <---好きな名前にしてください
openhome=1
ohmetapersist=1
logfilename=/var/log/upmpdcli.log
loglevel=3
(S94polipo)
これは、buildroot-2016.11.1/package/upmpdcliの中にS99upmpdcliというファイルが
ありますのでこれを上記etc/init.dにS94polipoという名でコピーしてその中身を編集します。
(編集したところだけ示します)
NAME=polipo (変更箇所)
DAEMON=/usr/bin/$NAME (変更なし)
CONFFILE=/etc/$NAME.conf (変更なし)
PIDFILE=/var/run/$NAME.pid (変更なし)
DAEMON_ARGS="-c $CONFFILE pidFile=$PIDFILE"(変更箇所)
以上が終わりましたら
$ make menuconfig
でtarget packages としてpolipoも表示されているはずですので、upmpdcliとともにチェックを
いれてexitしてください。
以上で前準備が終わりましたのでやっと「lightMPDのrootイメージの作成方法(暫定版)」
の手順に戻ります。
$ make
これ以降も手順通りにすすめて、uInitrdを作ってlightmpdbbbv1.03のものと入れ替えてください。
あと、lightMPD/mpd.confもレンダラーにしたときの以下の設定を追加してください。
input {
plugin "curl"
proxy "127.0.0.1:8123"
}
私はbbgにamaneroを繋いで音出しを確認しております。
upmpdcliはbuildrootにありますが、polipoはサポートされていません。
digififanさんがbuildrootでpolipoをビルドできるようにconfig.in ,polipo.mkやパッチまで
用意してくださっていますのでなんとか簡単にできますが、buildrootにないパッケージは
自力でビルドするなりして追加しないといけません。
digififanさんがやり方を公開してくださる前の予習になればと思っております。
inthedark
inthedark さん、情報ありがとうございます。
早速、試してみて、僕の boticized-lightmpd-v03alpha に uInitrd-103-upnp という名前で組み込み、問題なく動作しました。lightmpd.conf、mpd.conf共に変更しませんでしたが、gmpc(従来型接続)、UPnPlay+MinimServerの両方でノイズの無い、きれいな音が出ることを確認しました。素晴らしい。
それで、いくつか質問です。
polipo-buildroot-pkg.tgz はdigififanさん、提供のものなのでしょか ?
lightmpd.conf、mpd.confはupnpgw版に変えた方がいいのでしょうか ?
psでmpdとupmpdcliの起動は確認しました。polipoの動作を確認する方法はありますか ?
yoさん
早速お試しいただきありがとうございます。
一人でもやってくれる人いてよかったです。まあ、いいんですけどね。
>polipo-buildroot-pkg.tgz はdigififanさん、提供のものなのでしょか ?
そのとおりです。
>lightmpd.conf、mpd.confはupnpgw版に変えた方がいいのでしょうか ?
これは試してませんので詳細はわかりません。
upnpgw版は、僕が作成したpolipo.conf,upmpdcli.confに
lightmpd.confでの設定が反映されるように作られている
ので、このへんの仕組みをyoさんが解明されているなら
boticized lightmpdでやってみてください。私も勉強に
なりますので。
mpd.confはupnpgw版はどうなっているのかわかりませんので
なんとも言えません。試してみてください。
>polipoの動作を確認する方法はありますか ?
僕は、topでpolipoのvsz値をみています。
これが曲に合わせて大きくなり、最終的にpolipo.confで
設定したchunkhighmarkの値になっていけばokです。
あと、lanケーブルを再生途中で引きぬいても、polipo
が働いていればしばらく再生は続きます。
polipoが起動に失敗している場合、S94polipoに実行
権限が与えられているかどうか、編集箇所の大文字、小文字
の区別など間違いがないか確認してください。
upnpgw版をお使いなら、その中の、SXXpolipoが私のお手本
ですので、もし間違いがあれば指摘してください。
inthedark
inthedark さん
二番目の質問はピントはずれだったですね。
要するにこれは 1.0.2or3 のlightmpdにupmpdcliとpolipoを追加し、起動するための仕組みで、confも別枠で用意する必要があるということですね。
upnpgw版は lightmpd.confからそれらのconfをGaucheを使って初期生成できるようにした版である。従って、bb lightmpd1.0.3はupnpgw版ではないので、confファイルを入れ換えても意味はないようです。
しかし、同じシステムで gmpc(従来型接続)と UPnPlay+MinimServer(UPnP接続)が共存出来ると分かったのはビックリでした。
inthedarkさん、こんばんは。
upnpを試せる環境が現在ないので、私はすぐ試せない状況です。polipoの話は十分理解してないものの、興味はあるんですけれど…。
curlで受けると言うことは、ラジオみたいにhttp経由でデータを受信するわけですよね。だとすると、他のmpdでhttpdでoutputしたのを受ければ、polipoを通したことになるわけでしょうか。(httpdについては、マニュアルで見かけただけで実行したことはないです。)
あと、polipoを使うのはキャッシュの形でメモリを通したい、と言う理解で良いんでしょうか。送信・受信ともpolipoが使えるらしいので、その場合は双方のメモリ間でデータをやりとりするわけですかね。
ca2さん こんばんは。
cpufreqの件自分なりに調べているのに回答できずすいません。
私もlightmpdでこれが試せればと思っておりますので。
polipoですがdigififanさんがメモリ再生にヒントをえて組み込まれた
ということからも想像できるかと思いますが、キャッシュサーバー
であるpolipoでメモリにhttp経由で送られてきた音楽データを
ため、それを再生するものと簡単にですがわかった気でおります。
恐らくですがおっしゃられているご理解でよいのではないかと
思います。
digififanさんが次期lightmpdbbbでやろうとされていることに比べれば
簡易なupnpレンダラーですが機会がありましたらやってみてください。
inthedark
inthedarkさん
cpufreqの件は、妙なことを持ち出してすみません。前々から気になっていたもので…。
upnpについては、考えるよりとにかく一度やってみるのが良いのかもしれませんね。そのうち、できるように用意したいと思います。
ca2 さん
> upnpについては、考えるよりとにかく一度やってみるのが良いのかもしれませんね。
その通りだと思います。とにかく便利ですよ。
音もupnpgw版を使い、apu(BBBなども使えそうですね)+BBGでデュアル接続すれば、素晴らしいですから。
nasは空いているSoCを使い(僕は古いcuboxを使っています)、linux化していれば、簡単にdlnaサーバ対応できます。
inthedark さん
もう少しこだわります。
どうもpolipoがうまく動いていないという感じだったので、シリアルを使い、起動メッセージを調べました。結論としては
nano ../lightmpd-root-v15/rootdir/etc/init.d/S94polipo
NAME=polipo
DAEMON_ARGS="-c $CONFFILE pidFile=$PIDFILE"
CONFFILE=/etc/$NAME.conf
PIDFILE=/var/run/$NAME.pid
#DAEMON_ARGS="-D -c $CONFFILE"
としないと駄目なようですね。追加した2行目の最後は「”」でなく「"」。4行目のDAEMON_ARGSをコメントアウト。これでいいのでしょうか。こちらの環境ではこれでエラーなしとなりました。
もう一つ。こっちの方が謎は大きいのですが、mpd.confに
input {
plugin "curl"
proxy "127.0.0.1:8123"
}
を追加する。
とありますが、僕の環境ではこれを追加するとエラー(mpd起動は出来るが、音が出ない)になります。
上記inputの指定はapuのupnpgw版では有効になっていますし、なんとも不思議です。昨日、的外れな質問をした理由もこれが原因です。
input 4行をコメントアウトすると正常に動作します、素晴らしい音がします。
何かとんでもない勘違いをしている可能性もありますが、topで見る限り、upmpdcli、mpd共に正常に動いているように見え、vszの値も正常のように見えます。
upmpdcli.conf、polipo.confの内容はinthedark さんの書かれた内容通りです。
inthedark さんと僕の環境の違いはBotic化しているかいないかだけですので、「うーむ分からない」状態ですね。僕もinput文を有効にする方が正しいと思うのですが、現実は逆なので、混乱しています。
yoさん
S94polipoですが、私の言い方が誤解を招いていますね。
私の最初の5行をあらためて記述します。
NAME=polipo (変更した箇所)
DAEMON=/usr/bin/$NAME
CONFFILE=/etc/$NAME.conf
PIDFILE=var/run/$NAME.pid
DAEMON_ARGS="-c $CONFFILE pidFile=$PIDFILE" (変更した箇所)
-Dオプションを入れるとだめですのでその行は上記のように
変更してください、という意味合いなんです。
"と”の違いもNo5624で訂正しておきます。
こちらの環境を再度topで確認し、polipoも起動し正常に
動いて音も出ています。
と私の錯覚ではないことを確認したうえで環境の
チェックを。
cat /proc/version
Linux version 4.9.3-rt1-lightMPDbbb (araki@armlmpd64)
mpd -V
Music Player Daemon 0.19.21-dsd (lightmpdbbbv1.03にあったもの input pluginsにcurlもちゃんとある)
あとlightMPD/mpd.confにレンダラー(polipoを通す場合)
の呪文を
input {
plugin "curl"
proxy "127.0.0.1:8123"
}
追加記入しただけなんですが。(この4行がなければ、本来の
nfs,cifsによる音だしにもどる)
それ以外はいじってませんし。
input {
plugin "curl"
# proxy "127.0.0.1:8123"
}
のようにするとpolipoを無効にできるのでこれで音が
でるなら、polipoに原因があるということになりますね。
僕のpolipoはdigififanさんのオリジナルの
polipo.mkからオプションを変えてビルドしています。
(オリジナルのpolipo.mk)
EXTRA_DEFINES="-DNO_DISK_CACHE"
(私のpolipo.mk)
EXTRA_DEFINES="-DNO_DISK_CACHE -DNO_IPv6 -DNO_SYSLOG"
これでビルドするとpolipoも違いがなくなりますので
これで起動しないとなると難しいですね。
inthedark
inthedark さん
どうも、boticドライバ付きのカーネルだと、curl input無しでないとupnpレンダラとして認識されないということみたいですね。
試しにと、boticドライバ無のシステムを作成してみたら、逆にcurl input有りでないとupnpレンダラとしては認識されませんでした。環境の問題で、まだ音は出せてませんが、curl input無しでは認識されないことを確認済ですので、間違いないと思います。
うーむ、こうなるとmieroさんとdigififanさんに両方に調査依頼を出さないと解決出来そうにないですね。困ったなぁ。
頂いた情報をもとにもう少し頑張ってみます。
polipoの件、調査ありがとうございました。
yoさん
>curl input無しでないとupnpレンダラとして認識されないということみたいですね。
僕はpolipoを入れずにupmpdcliだけでやっていたことが
あります。
input {
plugin "curl"
}
これでupnpレンダラーとしてコントローラに認識されますので
正常ですね。
input {
plugin "curl"
proxy "127.0.0.1:8123"
}
これにして初めてpolipoを通るわけですがこれで音が
でないということはpolipoの起動に失敗していることが
考えられます。
topで
/usr/bin/polipo -c /etc/polipo.conf
の表示があればpolipoは起動してますので。
起動はしているのに音がでないということはpolipoの
ビルドに失敗しているくらいしか思いつきませんね。
私がboticized lightmpdで音出しを確認できれば
なんの問題もないんですが。なかなか手ごわい。
inthedark
inthedark さん
オリジナル版がcurl有りで音が出ないのも問題ですが、boticized版がcurl無しで音が出るのが不思議なのですよね。upmpdcliはhttp渡しのストリームとしてデータを送り出しているわけだから、mpd側にそれを受け取る仕組みが必要なはずです。その仕組みがcurlだと思っていたので、「curl無しで音が出るとは何事だ」となるわけです。boticドライバにinとoutがあって、このin側の機能がcurlと同じように働くということなのですかね。
まあ、解明のし甲斐のありそうな謎なので、丁寧に解き明かそうかなと考えています。
> 私がboticized lightmpdで音出しを確認できれば
> なんの問題もないんですが。なかなか手ごわい。
amaneroをお使いだとすれば、dacとはi2S接続となりますから、そんなにハードルは高くないと思います。3年位前にこの掲示板でさんざん議論していますので、ご参考になるかと思います。
upmpdcli、mpdはちゃんとupnpで動いているようですね。再生中のmpd.logです。シェーンベルクがupnp再生、シューベルトがnas再生です。
Jan 01 09:04 : client: [0] opened from 127.0.0.1:58826
Jan 01 09:07 : client: [1] opened from 127.0.0.1:58842
Jan 01 09:08 : player: played "http://192.168.0.35:9790/minimserver/" target="_blank">http://192.168.0.35:9790/minimserver/*/CD/1973-Suite_op_29,_Wind_Quintet_op._26--John_Shirley-Quirk,_Mary_Thomas_David_Atherton_London_Sinfonietta/01-Suite_op_29_Overture_Allegretto.flac"
Jan 01 09:08 : player: played "sdd/CD/1972-Schubert_Piano_Sonata_#21--Richter/01-Schubert_Piano_Sonata_#21_In_B_Flat,_D_960-1._Molto_Moderato.flac"
Jan 01 09:08 : client: [1] closed
Jan 01 09:09 : player: played "http://192.168.0.35:9790/minimserver/" target="_blank">http://192.168.0.35:9790/minimserver/*/CD/1973-Suite_op_29,_Wind_Quintet_op._26--John_Shirley-Quirk,_Mary_Thomas_David_Atherton_London_Sinfonietta/04-Suite_op_29_Gigue.flac"
yoさん
私のupmpdcli+polipo入りのlightmpdbbbv1.03で確かめたことを
書いておきます。
lightmpdを通常の使い方ではnfsを使ってます。
mpd.confには
input {
plugin "curl"
proxy "127.0.0.1:8123"
}
が挿入された状態です。
cantata(mpdclieant)から再生をしてみました。
ちゃんと音がでます。
topで/usr/bin/polipoのvsz値を観察します。
いくら再生時間が経過してもvszに変化はありません。
upmpdcliのvsz値も変化はありません。
polipoは通っていないわけです、nfsでの再生ですから
当然ですね。
今度はLUMINから再生します。
cantataでの再生をストップしLUMINを起動します。
するとLUMINにもcantataで再生していた曲が表示されます。
そしてupmpdcliのvsz値が跳ね上がりました。
再生を開始すると音はでます。
が polipoのvszは変化がありません。
polipoを通ってませんね。
これはupmpdcliのみ入れていた状態と同じです。
今度はLUMINで(cantataで再生していた曲)を消しあらためて
LUMINでplaylistに追加した曲目を再生します。
すると、今度はpolipoのvszも跳ね上がりました。
これはちゃんとpolipoを通っている証拠ですね。
以上のように私の環境では通常のnfsによる再生も
upnpレンダラーとしての再生もできているじゃないかなあ
と思ってますが、いかがなもんでしょうかね。
inthedark
inthedark さん
polipoの設定を修正してやってみたら、curl有りできれいにupnp再生できるようになりました。どうも、polipoがきちんと立ち上がっていなかったというのが、諸悪の根源であったようです(^^;;;。お騒がせしました。
あとわかったのは polipoが変な状態になっていても、curl無しにすれば、upmpdcli+mpdはupnp再生が出来るようですね。この時、upmpdcliからmpdにどういう形でストリームデータのやりとりがされているのか、謎ですね。まあ、upmpdcliのマニュアルにあたって調べるしかなさそうです。
苦戦しましたが、これは素晴らしい音ですね。仮公開している boticized lightmpd v03 に uinitrd を追加するかなと思っています。まあ、このスレッドのやりとりを見れば、誰でも出来るわけですが。お付き合いいただいた inthedark さんに感謝です。
yoさん
> まあ、このスレッドのやりとりを見れば、誰でも出来るわけですが。
確かにおっしゃる通りなのですが、出来れば追加していただけるとありがたいです。
apu2c4などでUPnPを頻繁に使い始めましたが、操作性の点で便利であることはもとより、気のせいかも知れませんが更に音の良さを感じています。(NASマウントとの当社比較)
以下は全くスレッドには関係ない私の独り言です(^^;
inthedarkさんは、もしかして「デジファイのおと」さんの掲示板で登場されるtakobozuさんと同一人物なのかな…
こちらの掲示板と同一時間帯に同内容のコメントをupされていたのでそう思いました。
えふ さん
> 出来れば追加していただけるとありがたいです。
了解しました。今週末位にアップするつもりです。例によって着せ変え人形方式でやります。
> 気のせいかも知れませんが更に音の良さを感じています。
気のせいではなく、UPnPの方が良いと僕も思います。まあ環境次第という部分はあると思いますが、一番音の良い upnp-arch をディフォルトにするつもりです。
apuをお持ちなら、apuをホスト、BBBをUPNPアダプターとするデュアル方式が音としてはザベストだと思います。
ただ、この方式をとる場合、ipアドレスの変更が必要ですが、どうしますかね。バラして、編集して、再生成するというのが簡単そうですが。Gaucheを使うのが正攻法であるのは承知していますが...。
この掲示板やlightmpdの掲示板での皆様のやりとりを参考にして、ようやくmpdのクロスビルドが出来るようになりました。結構大変ですね。悪戦苦闘しました。
まだ分かっていないのは packages/mpd-native-dsd を単独でクロスビルドさせる方法です。
make mpd-native-dsd-dirclean
がメークするルールがないというエラーになってしまうのですよね。
このため、以下の方法で回避しました。
一番目の方法(mpd.mk にオプション指定を追加)
packages/mpd-native-dsd/mpd-native-dsd.mk の
MPD_NATIVE_DSD_CONF_OPTS = \
以下のオプション指定の記述を MPD_CONF_OPTS に変えて packages/mpd/mpd.mk にコピーする。
二番目の方法(Config.in を使ってメニューに rtopt を追加)
package/mpd/Config.inに以下を追加(場所は適当でよいが、僕はDSDの後にしました)
config BR2_PACKAGE_MPD_RTOPT
bool "rtopt"
help
Enable rtopt to set mpd thread priority on rt Kernel
RT patches by yan and digififan are required.
packages/mpd/mpd.mk に以下を追加する(場所は適当でよいが、僕はDSDの後にしました)
ifeq ($(BR2_PACKAGE_MPD_RTOPT),y)
MPD_CONF_OPTS += --enable-rtopt
else
MPD_CONF_OPTS += --disable-rtopt
endif
あとは ca2さんが書いておられますが、
make mpd-dirclean
ccache make
でビルドを行えばいいです。
環境によっては
apt-get install ccache
が必要です。
パッチはpackages/mpd/に番号数字付(000n)付きで置いておけば、その順番で自動的にかかります。
hashを回避する方法は packages/mpd/mpd.hash に以下を追加すればいいです。
none xxx mpd-0.20.4.tar.xz
ビルドは
output/build/mpd-0.20.4
ベースで行われます。この時、
output/target/
がクロスビルドの環境になるようです。従って、mpdは
output/target/usr/bin/mpd
にインストールされます。また
output/build/mpd-0.20.4/src/mpd
にコンパイルされたmpdが置かれます。
不思議なのはこの二つにかなり大きいサイズの差があること。
yo@ubuntu:~/digifi/beaglebone/buildroot-2016.11.1$ ls -l output/target/usr/bin/mpd
-rwxr-xr-x 1 yo yo 409704 2月 10 18:24 output/target/usr/bin/mpd
yo@ubuntu:~/digifi/beaglebone/buildroot-2016.11.1$ ls -l output/build/mpd-0.20.4/src/mpd
-rwxr-xr-x 1 yo yo 730748 2月 10 18:24 output/build/mpd-0.20.4/src/mpd
となります。なんでですかね。とりあえず公開する時、「どうしたものかいな」と悩んでいます。
upnp版は音は圧倒的に良いと思いますが、かなり動作はセンシティブですね。dsd再生でpolipoのrt優先レベルを上げすぎるとノイズが発生します。他にも何か有りそうなので、公開は遅れそうです。
まあ、さっさと公開して、皆でバグ出しという手もあるのだけど。
yoさん
> 他にも何か有りそうなので、公開は遅れそうです。
了解しました。人柱が必要な時は協力させていただきますので(^^;
待つだけでは芸がないので、当方もinthedarkさんの手順のとおりにやってみて、何とか音出しにこぎ着けました。
途中、makeinfoが無いとかいろいろありましたが、無事コンパイル終了。ちゃんとLUMINからも再生指示ができました。
他人様に教えて貰ったとおりだとしても、やはり嬉しいものですね。inthedarkさん、ありがとうございましたm(_ _)m
yo さん、inthedark さん こんばんは。
当方でもinthedark さんの手順でpolipoを通してupnpレンダラー化に成功しました。
NASの音源を聴いているのにLANケーブルを抜いても暫く音が途切れないのが不思議な感覚です。
これまでホームネットワークとは別に有線ルーターで分離したオーディオ専用ネットワーク(digififan さんが自身のdigifi laboで公開しているネットワークプレーヤ用ネットワーク)にBBGを接続していたのですが、polipo & upnpレンダラー化を機にBBGをホームネットワーク側に繋げ変えました。
BBB版lightMPDのBoticizedカーネル、最新版MPD、rootイメージ作成等がbuildrootでセルフビルド&構築できるようになったことで自分専用カスタマイズが俄然面白くなってきました。
こうなってくるとやはりapuが欲しくなってきますね。UPNPアダプターモードを試してみたいです。
えふ さん、kens さん
polipo + upnpレンダラー化成功おめでとうございます。
案外簡単でしょ。音は素晴らしいし、自分好みの設定は出来るので、この機能追加はお勧めですね。
あと、直前にやり方を書き込んだMPDのクロスビルドもお勧めです。最新のMPDを簡単に追っかけられるようになりますので、楽しいですよ。時間も実機の数分の1に短縮されます。
digififanさんはupnpgwのデータも公開されるようなので、余っているrpiやbbbを活用できるようになるだろうから、楽しみですね。
buildrootというのは本当によくできたおもちゃ箱ですね。
yo さん こんばんは。
本当によくできたのおもちゃ箱、まさにその通りだと思います。
まず、inthedark さんのご教示によりbuildrootの使い方を知るとともにBoticizedカーネルが(しかも今では最新版にrtパッチ当てて)セルフビルドできるようになり、
次にdigififan さんの情報公開によりrootイメージの作成やMPDのリビルドができるようになり、
加えてpolipo&upnpレンダラーの組込みへと進んできました。
私の場合、MPDのセルフビルドはdigififan さんのmpd-native-dsdをベースにパッチ当てとmpd-native-dsd.mkを編集して使用しないdecoder、encoder、その他のプラグインを削ることでビルド時間の短縮と軽量化を図っています。MPDの最新版の追っかけもmpd-native-dsdをベースに行っています。
buildrootはgit版を使用していて、rootイメージの作成時にpackageファイルが無くてエラーが出た箇所はbuildroot-2016.11.1のpackageから該当ファイルをコピーして対応しました。
皆様に教えていただいたことを辿っているだけですが、音出しに成功する度に感動しました。
勿論、yo さんがリリースされているBoticized lightMPDの解説や構造も大いに参考になりました。
どうもありがとうございました。
えふさん、kensさん
おはようございます。buildroot生活を楽しんでいただいているとの
ことで,嬉しいご報告ありがとうございます。
これからもこういう楽しい連鎖が起こっていくといいなあと思い
ます。
digififanさんがアイデアを詳細に公開してくださるおかげで、
私はupnpアダプタをrpi2Bでやってます。apu要らないです。
rpi2Bにupmpdcli+polipoを, bbgにmpdをいれたシステムを作り
遊んでおります。digififanさんのアイデアの奥深さに感心させられ
ます。rpiお持ちの方は是非やってみてください。
inthedark
polipoの優先度について私の理解している(と思っている)
範囲でお話したいと思います。
digififanさんとお話していての私なりの理解です。
mpdはpolipoが音楽データをキャッシュしてからでないと
音楽を再生できない。だからmpdの優先度がpolipoより
高くてもなんの問題もない。だが常にpolipoの優先度が
mpdより高いとおかしなことになる。(音飛びや、システムの
フリーズなど)<----私は体験済み
つまりキャッシュにデータがある一定程度貯まるまでは
polipoはmpdより優先度が高くてもいいがmpdが再生できる
ほどのデータが貯まればpolipoにはさっさとmpdに優先権
を明け渡す必要があるわけです。polipoにはchrtをせずmpdに
だけ優先度設定をしておけばいい、これがdigififanさんの
考え方だと思います。
これを一歩進めたのがdonuts.shop73さんです。この方はある
一定程度データをキャッシュするまではpolipoにchrt 98を
与えるが、それ以降はpolipoの優先度をmpdより下げるという
ことをスクリプトで実現させておられるようです。
donutsさんのmpd.confを見ればわかりますが、rtoptionの値も
audio_buffer_sizaやbefore_buffer_playの値もdigififanさん
のものとは全く違います。この当たりからも様々な試行錯誤を
されているのではないかと思います。
お二方に共通するのは以上からわかるようにpolipoにいつまで
もmpdより高い優先度で居座られては困る、ということだと
私は勝手に理解しております。
inthedark
inthedark さん
> 私はupnpアダプタをrpi2Bでやってます。apu要らないです。
これは、是非、手口をサルでも分かるように公開して頂けるとうれしいです。
僕はrpiは余りがないのですが、BBBはあまっているのがあるので。
polipoは、先のメッセージにも書きましたが、かなりセンシティブですね。
優先度だけではなく、chunkサイズなんかもシビアです。まあ、BBBはメモリが512MBしかないというハンディがありますが、大きくすると簡単にハングします。また、許容されるサイズも、wav再生かdsd再生かで変わったりします(dsd再生の方がシビアです)。
というわけで、polipo.confとupmpdcli,confをリードオンリーの/etcに置くのは使いづらいかなと思います。
sdカードの/lightmpd/に置いて、S00setupvarで/var/lightmpd/etcにコピーして使うという方法が良さそうです。
CONFFILES="lightmpd.conf mpd.conf sysctl.conf polipo.conf upmpdcli.conf"
さらに、S94polipoと(package/upmpdcli/)S99upmpdcliの修正が必要になりますが、
CONFFILE=/var/lightMPD/etc/$NAME.conf
で済むので、問題はなさそうです。
優先度の設定なども同じ方法で行えそうですね。タイミングの問題はありますが。
yoさん
>sdカードの/lightmpd/に置いて、S00setupvarで/var/lightmpd/etcにコピーして使うという方法が良さそうです。
CONFFILES="lightmpd.conf mpd.conf sysctl.conf polipo.conf upmpdcli.conf"
さらに、S94polipoと(package/upmpdcli/)S99upmpdcliの修正が必要になりますが、
CONFFILE=/var/lightMPD/etc/$NAME.conf
で済むので、問題はなさそうです。
私もそうした方がいいと思います。
外から簡単にいじって色々試せるようにしておいた方がいい
ですね。
>手口をサルでも分かるように公開して頂けるとうれしいです。
いやー、しんどいっすね。笑
buildrootで懲りてますし。もう少しまてばlightmpdの次期
バージョンで試せるようになるんではないかと思いますし。
僕のようにapuを買わないで当面済ませようと考えている
人には有用ですが、財力のある方はapu買った方が早いかと。
まあ、考えておきます。
inthedark
無理されることはありません。実は、只今、apuのupnpgw版のinitrd-lightmpd-64をばらしてどうなっているのか観察しているところです。
こちらでははじめましてになる、donuts.shop73です。
普段はネットに書き込むことはあまり無いのですが、一言だけ。
(1)polipo.confとupmpdcli.conf
既に中身を見られておられるようですが、
lightMPD/upnpgwではlightmpd.confの同セクションの記述を起動時にそのままファイルに書き出しています。
syssetup.scmは各機種である程度共有されていますので、必要な部分のみを持ってくるのはありです。
私の公開しているイメージでは、テンプレートを用意しlightmpd.confの内容で置き換えています。
(2)chunkサイズ
私の環境では以下の設定で特に問題なく動いています。
chunkHighMark=402653184
chunkLowMark=100663296
chunkCriticalMark=268435456
ただpolipoの制限として、chunkHighMarkを超えるサイズのファイルについては再生が寸断されてしまう(プレイリストの次曲へ移る)のはどうしようもないです。
chunkCriticalMarkを超えた場合、古いデータを削除しようとして再生中のファイルが破壊されているではと考えています。
(3)upnpアダプタ
ちょっと系統は異なりますが、私の公開しているRPi2用のイメージではWi-Fiに対応しています(GW-USNANO2専用ですが)。複数のネットワークを内包しているという点ではお役に立てるかもしれません。(有線2本よりは面倒なことになっていますが。)
(4)その他
お遊び程度ですが、私の公開しているイメージではMiniDLNAを搭載しています。SDカードのmusicフォルダに格納された音楽ファイルをUPnPクライアントから選択可能です。
UPnPの環境が整っていない方でもUPnPの操作性を手軽に体験していただけます。
(5)Botic化
私の環境でもBBのBotic化で音出しまでできました。
おこがましいようですが、動いて満足している程度のものですが、お声掛け頂ければひとつのサンプルとしてご参考にしていただく事も可能です。
donuts.shop73さん
ここまでご足労いただきましてありがとうございます。
お時間が許す限りで結構ですので色々ご教示いただければ
幸いです。
inthedark
donuts.shop73 さん、こちでははじめまして。
この掲示板でもアドバイスいただけると嬉しいです。
(1) syssetup.scmでpolipo、upmpdcliのパラメータ設定を操作している部分は分かりました。ただ、Gaucheは苦手なので、とりあえずは直前のメッセージで書いたように、S00setupvarによりかかるという方法で対応するかなと思っています。
(2) まだチューニング中ですが、僕のところの数字です。
#chunkHighMark=335544320
chunkHighMark=235544320
chunkLowMark=83886080
#chunkCriticalMark=251658240
chunkCriticalMark=201658240
大分低い値ですが、uInitrdやmpdを肥大化させているからかなと思っています。
> ただpolipoの制限として、chunkHighMarkを超えるサイズのファイルについては再生が寸断されてしまう(プレイリストの次曲へ移る)のはどうしようもないです。
これはまだ経験していませんが、クラシックの長大な曲(20分以上)だと再生出来ないということになるのでしょか。
(3)(4) rpi用の公開イメージを拝見しようかなと思っています。複数回線の処理は必須になりますから。
(5) 参考にしたいので、お手数をかけて恐縮ですが、Botic化したイメージのアドレスを教えていただけますか。
私見ですが、Boticドライバはlightmpdとの相性は随分良いとと思っています。
yoさん
イメージは下記にあります。ご参考までに。
【イメージ格納場所】
https://drive.google.com/file/d/0B9LSJY9xM01jUDJtNkZVOHNDTzQ/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B9LSJY9xM01jUDJtNkZVOHNDTzQ/view?usp=sharing
【ファイル名】
bb-upnp-botic-20170212.zip
standalone, playerの2つのconfファイルを格納しています。
デフォルトはstandaloneです。
networkの設定変更のみで動作すると思います。
musicフォルダもお試しください。
私の環境では 96kHz24bit 26分 の曲が再生できません。
50秒あたりで次曲へスキップしてしまいます。
yoさん
おはようございます。
donutsさんが書き込まれたのには驚きました。
yoさんが何かされたのですか?
inthedark
> yoさんが何かされたのですか?
何も怪しいことはしてませんよ(苦笑)。
只今、upnp botic版をダウンロードして、試しているところです。ネットワークアドレスの設定だけで、一発で音が出ました。素晴らしい音がします。これはお勧めです。
これは以前digififanさんの掲示板で紹介されたバージョンをbotic対応させたものみたいですね。素晴らしい完成度だと思います。これから内部調査してみるつもりです。
僕のupnp版を待っていた方は是非これをダウンロードして下さい。僕のやつはアップロードに時間がかかりそうなので。こっちの方が完成度は高いです。シンプルで使いやすいです。ビーグル犬のアイコンも楽しいです。
yoさん
>何も怪しいことはしてませんよ(苦笑)。
少なくとも関心をもって頂いているということでしょう。
それが私にとっては驚きだったわけです。
(botic化までして頂いてますので。)
>これから内部調査してみるつもりです。
これはサルでもわかるように調査結果をお願いします。
inthedark
donuts.shop73さん
素晴らしいイメージの提供ありがとうございました。早速インストールし聞いております。
素晴らしい音が出ています。
私の設定は以下の通りで聞き取りました。
Win10+MinimServar→pad+BubbleUPnP→BBG→ B3D-A4495
PCM44.1k
・問題なく聞けますが曲選択、時間選択、曲間時に小さなプチノイズが出ます
・曲の時間移動時に、曲の最初に戻るのに曲時間が継続されるため、曲の途中で次の曲に移動する
PCM96k
・曲の選択ダブルクリックでないと選択できない(BubbleUPnPの問題?)
・曲が選択できても再生する前に止まることが多い
PCM192k
・ノイズのみで曲が再生されない
DSD
・問題なく再生される
SDカード
・約5秒ほど再生されるがその後停止
・音量が大きくなるよう
・音質はUPnPより良い感じ(短時間の聞きにより断定できない)
BBGのハードの変化
面白い現象が出ていますuser led d2が起動後は全く点滅していないもよう
まとめ
UPnPは素晴らしい音を出している
SDカードからの音を聞いてみたい
今まで聞いた感想です
sugi- さん、僕がわかるやつだけお答えしておきます。
プチノイズ、止まる、ノイズのみ、すべてchunkサイズの問題だと思います。lightmpd.confで数値を調整すれば解決すると思います。詳しくは直前の僕、donutsさん、inthedarkさんのメッセージを読んでください。
> 面白い現象が出ていますuser led d2が起動後は全く点滅していないもよう
これは仕様のようです。意図的にブリンクを止めていらっしゃるようです。
sdカードの件は僕は試してないので分かりません。