この掲示板は first in first out なので、最新の書き込みを読むために手早くアクセスするには、リストから対象の書き込みの部分をクリックする必要があります。便利とはいえないので、スレッドがある程度長くなったら適当なタイミングで新しいスレッドに切り換えるのが適当です。というわけで、スレッドを更新します。
boticized-lightmpd-v03alpha.zipを仮に公開します
週替わりですが、アルファ版を公開します。
http://mimizukobo.sakura.ne.jp/cgi-bin/downlog.cgi?upload/boticized-lightmpd-v03alpha.zip" target="_blank">http://mimizukobo.sakura.ne.jp/cgi-bin/downlog.cgi?upload/boticized-lightmpd-v03alpha.zip
v02に対する変更点は
- uInitrd を Buildroot出力のものに入換え、mpc、ncmpc、rubyを追加
- mpdまわりのライブラリ構造を arch linux に合わせ、mpdを arch linux 環境でビルドしたものに入換え
の2点です。いずれも uInitrdの軽量化に逆行し、重量化(^^;;;させるものです。
v02で追加
adding: uEnv.txt (deflated 64%)
adding: lightmpd/lightmpd.conf (deflated 58%)
adding: lightmpd/mpd.conf (deflated 69%)
adding: lightmpd/mpd-0.19.21rt-deb-dsd (deflated 52%) 名前を変更(debを追加)
adding: lightmpd/mpd-0.20.2rt-deb (deflated 57%) 名前を変更(debを追加)
adding: lightmpd/myscript.sh (deflated 53%)
adding: boot/uInitrd-botic-a-1 (deflated 1%)
adding: boot/uInitrd-botic-l (deflated 1%)
adding: scripts/myscript.sh (deflated 53%) lightmpd/myscript.shと同じもの
v03で追加
adding: lightmpd/mpd-0.19.21rt-arch-dsd (deflated 58%)
adding: lightmpd/mpd-0.20.2rt-arch (deflated 60%)
adding: boot/dtbs/am335x-boneblack-botic-103.dtb (deflated 77%)
adding: boot/dtbs/am335x-boneblack-botic-sabre32-103.dtb (deflated 77%)
adding: boot/uInitrd-103 (deflated 1%)
adding: boot/uInitrd-103-arch (deflated 1%)
adding: boot/zImage-botic-103 (deflated 1%)
adding: scripts/sdplay.sh (deflated 38%)
mpd-0.19.21rt-arch-dsd、mpd-0.20.2rt-archはクリーンな boticized arch linux環境でビルドしました。uInitrd-103-archで動きます。
mpd-0.19.21rt-deb-dsd、mpd-0.20.2rt-debはクリーンな boticized debian(jessie) linux環境でビルドしました。uInitrd-botic-a-1かuInitrd-botic-lで動きます。
オリジナルのmpd-0.19.21rt-native-dsdはuInitrd-103で動きます。
uInitrd-103、uInitrd-103-archはdigififanさんが公開されているbuildroot雛型データを元にしてmakeしたものです。mpc、ncmpc、rubyを追加しています。
uInitrd-103-archはmpdまわりのライブラリを boticized arch linux環境に合わせてあります。
uInitrd-botic-a-1、uInitrd-botic-lはBB版lightmpd 1.0.1 の uInitrd を元に、mpdまわりのライブラリを boticized debian(jessie) linux環境に合わせて、作成したものです。さらに uInitrd-botic-a-1は libasound.so.2 をboticized arch linux環境のものに入れ換えています。
zImage-botic-103はBB版lightmpd 1.0.3 の /proc/config.gz をベースにして、linux-upstream_4.8.13-botic7-rc3ソースを使いビルドしました。
bb版lightmpd 1.0.3にインストールすることをお勧めします。uEnv.txtとlightmpd.confの設定変更により、arch debian オリジナルの最新版のmpdの音を聞き比べることができます。感想などお聞かせください。
開発環境はrubyのみですが、perl、php、phythonなどの追加は可能です。ご要望があれば、お聞かせください。開発されたマクロなどを掲示板に紹介して頂けると幸いです。
myscript.sh の rt優先度の設定は moctさんの公開されている boticized arch linux の設定をほぼそのまま使っています。その旨ここに記載し、お礼申し上げます。
変わりました。lightmpdと入力してください。
v03はlightmpd 1.0.3ベースですので、ご本家の変更がそのまま反映されました。
「lightMPD掲示板」の「beaglebone用のlightMPD v1.0.3を公開しました」のスレッドに「このバージョンからrootのパスワードを設定してあります。パスワードはlightmpdです。」と記載されていました。
お手数をおかけして申し訳ありませんでした。
イントロダクション
別のスレでも話題にしていますが、buildrootってなんでしょう。
これは僕のような人間に必要な組込みlinuxを簡単に作るための
仕組みです。yocto projectっていう似たようなものもあります。
聞いたことがある方もいらっしゃると思います。
私が、buildrootに興味を持ったのはlightmpdの作者のdigififan
さんの一言がきっかけです。その後、buildrootについては僕に
直接質問してね、とお声がけくださったのもdigififanさんです。
しかし、お忙しい方ですし、できる限りお手を煩わすわけに
はいきません。だから、自分で本家のマニュアルと格闘しネット
で情報を集め、どうしてもわからないところだけdigififanさんに
お伺いしました。今日の私があるのもdigififanさんのおかげ
です。
前置きが長くなりましたが、これからbbb(bbg)用の
mpdを組み込んだ、lightmpdのような完全にメモリ上で動く
システムをいっしょに作っていきましょう。digififanさんが
せっかくbuildroot用のコンフィグを公開するよ、といってくだ
さっているのに、buildrootってなんじゃ、それ?みたいでは
面白くありません。
inthedark(サル)のようなやつでも簡単につくることができる
ようにbuildrootの開発陣が日夜バージョンアップを続けてくだ
さってます。ありがたく使わせて頂きましょう。
buildrootはlinuxの環境ならどれでも動きます。ただ、ホスト
であるlinuxの機能も使うことがありますので、できるだけ
メジャーなubuntu,arch,debianなどをホストにしてそこにbuild
rootを落としてきてください。私のように仮想環境(vmware)
などの上にlinux環境を整えられてもかまいません。できるだけ
マシンパワーのあるやつの方がビルドが速く済みますので
やる気が持続しやすくなります。
buildrootは安定版とgit版があります。
安定版は今はbuildroot-2016.11.1.tar.gzです。3か月に一度
安定版は更新されます。
私はgit版を使ってます。なぜって?それは私が新しいもの好き
だからです。buildrootの開発陣が毎日のように改良を重ねて
くれています。それが反映されているのがgit版です。mpdも
本家でバージョンアップされれば、buildrootのgit版は、2,3
日中にこのmpdのバージョンアップ版を落としてビルドしてくれ
ます。だから、私はbuildを始める前に必ず、git pullします。
これで私のbuildrootの環境はいつでも最新になります。ただ、
バグもあるかもしれませんのでビルドが途中で止まったりする
こともあるかもしれませんが私のように怖いもの知らずには
ピッタリです。
buildrootを落として来たら適当なディレクトリ(皆さんの
ホームディレクトリでよい。ユーザーもルートではなく、
一般のユーザーでログインした環境で作れます。)に展開
してください。buildrootなんちゃらというディレクトリが
できているはずです。これが皆さんがこれから作業する場所になります。
今回はここまで。
どこまで続くかわかりませんが(途中でねをあげるかもしれま
せんが)お付き合いいただける方は、お付き合いを。
何がなんだか分からないまま、buildrootの環境だけは作っていました。(HDDが壊れたのを機会にメインをUbuntuに切り替えています。)
そろそろチュートリアルでも見ながら少しずついじってみようを思っていましたので、非常に楽しみにしています。
お読みいただき恐縮です。柄にもないことやろうとしておりますがなんとかやれるところまでやってみようと思います。
いつか皆さんから教えていただける日がくるのを楽しみにして
おります。
inthedark
buildroot、自分のホームディレクトリに展開できましたでしょうか。
えっ、git版どうして落としたらいいかわからないって?buildrootのダウンロートサイトにちゃんと書いてありますからね。gitが何かわからなくてもそこに書いてある呪文をとなえれば最新のgit版buildrootが落とせますんで。
これ以降はgit版buildrootで、/home/inthedark/buildrootにソースが展開されているものとして話を進めます。
buildrootを操作するにあたり、4つの呪文をとりあえず覚えてください。ただし、これを唱える場所を間違えますと、効果がありません。違う場所で唱えるとどうなるかって?それは
make するルールがありません。
と怒られるだけです。その唱える場所とは私のなら
/home/inthedark/buildrootです。
$cd ~/buildroot
ここから必ず呪文を唱えてください。基本はここに立ち返ることを覚えておいてください。
それでは4つの呪文を順次簡単に解説します。
$make menuconfig
この呪文はbuildrootの核です。カーネルのバージョンは?クロスコンパイラは何を使う?
どういうアーキテクチャのものを作りたい?ブートローダはどうする?などなど様々な設定をメニュー形式で行えます。この呪文を唱えてメニューが表示できませんというエラーが出た場合、エラーメッセージにあるプログラムがホストシステムにありませんので、ubuntuならapt-getして素直にインストールしてください。それでメニューが立ち上がるはずです。
あとこの呪文を唱えて一通り設定が終わりexitしますとbuildrootディレクトリに.configファイルができます。ドットファイルですから通常は見えません。どうしたら見えるかって?
例えばファイルマネージャーで見えるようにするにはbuildrootディレクトリを開き、ctrl+H するだけです。この.configファイルがdigififanさんが公開されるであろうファイルです。
公開して頂いたファイルをbuildrootディレクトリにコピーして置き換えて再度この呪文を唱えてやれば、digififanさんのbuildrootでの設定がみられるというわけです。
$ make busybox-menuconfig
この呪文は今回私がみなさんと作ろうとしているルートファイルシステムの根幹をなすものです。busyboxって何?とか言わないでください。皆さんは、インターネットという最強の武器をすでに手にしておられます。興味のある方は自分で調べましょう。簡単にいうと’10徳ナイフ’みたいなものです。ここでルートファイルシステムで使いたい基本的なコマンドなどを設定します。pgrepなんかも必要であればここで組込みの指示をします。
$ make linux-menuconfig
これは毎度おなじみ、カーネルのビルドをしたことがある方はすでに見飽きていると思いますがこの呪文を唱えますとあのメニューが立ち上がります。ここでカーネルオプションをいじり倒します。
$ make distclean
これは、ビルドを改めてやり直したいなど、きれいに最初からスタートしたい場合に唱える呪文です。これをすればbuildrootは最初に展開した状態に戻ります。
今回はここまで。
次回からいよいよbbb用の設定を具体的にサルはどうしているか?を見ていきます。
これからいよいよbuildrootの設定をしていきましょう。
もちろん、サルの設定は一つの例にすぎません。皆さんのbuildrootに対する敷居を低くするのを目的でやっていることですから、この設定が最良などとはいうつもりはありませんのでその辺は誤解のないようにお願いします。
さて、いつもの呪文を唱えましょう。
$ cd ~/buildroot
$ make menuconfig
さあ無事にメニューが立ち上がったでしょうか?ここから、bbb(g)用の設定をサルが
どうやっているか見ていきましょう。(ほとんどはスペースキーで選択できます。
それが効かないときはエンターキーで)
Target Options --> Target Architecture --> (X) ARM (little endian)
Target Architecture Variant --> (X) coretex-A8
Floating point strategy --> (X) NEON
それ以外の項目はbuildrootが最適なものを選んでくれていますので変更しておりません。
これ以降もサルが設定をした箇所のみ見ていきます。
Toolchain --> (X) External toolchain
これを選んで元に戻ると、Toolchain(Linaro ARM 2016.11)というのが表示されていると
思います。これを使ってビルドするということです。
System configuration --> (BBG) System hostname
(Welcome to BBGmpd) System banner
Init system --> (X) BusyBox
これをルートファイルシステムで使うということです。systemVやsystemdも選ぶ
ことができます。機会があったら挑戦してみてください。
[*] Run a getty (login prompt) after boot --> (/dev/ttyO0) TTY port
Baudrate-->(X)115200
シリアルコンソールから起動を確認する
場合設定する
[*] Install timezone info
(Asia/Tokyo) default local time(NEW)
(/home/inthedark/buildroot/board/am335x/rootfs-overlay)Root filesystem overlay
directories
これは何なのかはおいおい解説します。boardディレクトリはすでにありますが、am335x
以降のディレクトリは自分でmkdirします。
Kernel --> [*] Linux Kernel
Kernel version --> ここに入ると様々な選択項目が出てきますね。
() Latest version(4.9.4)
これを選ぶとkernel.orgから4.9.4のソースをbuildrootが
とってきてビルドしてくれます。
() Custom version
何らかの理由で上記以外のものがいいならここを選択して
()Kernel version(NEW)で4.4.39とか入力しておくとこの
バージョンをとってきてビルドしてくれます。
()Custom tarball
これを選んで()URL of custom kernel tarball(NEW)で
http://repo.ieero.com/botic/pool/main/l/linux-upstream/linux-upstream_4.8.13-botic7-rc3.orig.tar.gz" target="_blank">http://repo.ieero.com/botic/pool/main/l/linux-upstream/linux-upstream_4.8.13-botic7-rc3.orig.tar.gz
とか入力しておくと、ここのサイトからtarballを取って
来てくれます。
()Custom Git repository
これを選んで()URL of custom repository(NEW)に
https://github.com/raspberrypi/linux.git" target="_blank">https://github.com/raspberrypi/linux.gitと入力し
()Custom repository vesion(NEW) で rpi-4.9.yと入力すると
指定されたカーネルソースを取って来てくれます。
これは皆さんがお好きに選んでください。
(/home/inthedark/BBG)Custom kernel patches(NEW)
これは取ってきたカーネルのソースにあてたいバッチを置いてあるディレクトリを
指定します。サルはBBGディレクトリにrtパッチやxmosのパッチなどを入れております。
こうしておくとbuildrootはこのディレクトリにあるpatchファイルに従ってパッチを自動
であててビルドしてくれます。
(omap2plus)Defconfig name
これは一応ビルドが通るdefconfigを指定しておきます。
[*] Build a Device Tree Blob (DTB)
(am335x-bonegreen am335x-boneblack-botic) Device Tree Source file names (NEW)
これを入力しておくとdtbファイルをビルドしてくれます。
今回はここまで。
やはり疲れますなあ。やらなきゃよかったかな。
愛読しております。頑張ってください。
のんびりやってください。
前回までの話、どうだったでしょうか?ついてこれてますかね。もうギブアップ?
構わず続きをいってみましょう。
$ cd ~/buildroot
$ make menuconfig
前回もいいましたが私が選択した例のみを記述していきます。
buildrootがはじめから[*]を入れてくれているものはそのままです。(気にいらなければ
チェックを外せばいいだけです)
Target package
ここから皆さんが今から作るものに組み込みたいものを選んでいきます。
Audio and video applications --> [*]alsa-utils --> [*] aplay/arecord(NEW)
--> [*]mpd ---> [*] audiofile (NEW)
[*] dsd(NEW)
[*] flac
[*] curl
--> [*] upmpdcli(upnpレンダラーにしたいとき)
もし、nfsを使いたい場合は
Filesystem and flash utilities --> [*] nfs-utils
この辺は説明するときりがないので止めときます。
System tools --> [*] htop
Filesystem images
[*] cpio the root filesystem (for use as an initial RAM filesystem)
Compression method --> (X) gzip
サルが作っていいるものはcpio形式でルートファイルシステムがramに読み込まれ
展開されるものを使っています。lightmpdはromfsです。
[*] tar the root filesystem --->チェックを外す。これはsdカードなどにシステムを
作る場合のものです。サルはメモリ上ですべてが
動くシステムを作るわけですからここは必要なし。
Bootloaders --> [*] U-Boot
Build system --> (X) Kconfig
(am335x_boneblack)Board defconfig
U-Boot binary format --> [*] u-boot.bin --> チェックを外す
[*] u-boot.img
[*] Install U-Boot SPL binary image(NEW)
(MLO)U-Boot SPL binary image name
元から入力されているspl/u-boot-spl.binをMLOに修正
以上でmake menuconfigの設定は終了です。どうです?簡単でしょう?
これを何もわからないところからやれ!といわれてできる人はbuildrootなど使わなくても
いい人ではないですかね。
今回はここまで。
次回はmake busybox-menuconfigです。
buildrootのことは全然知らなかったもので、3ヶ月ごとに安定板がでるというのも驚きでした。そっちを使っていても十分新しいわけですね(小さいシステムだから可能ということでしょうか)。それをmpd専用に使うのは確かに合理的に感じました。話の流れを中断するのもあれなので、もしも良ければ後ほど、質問などさせていただけると有難いです。
どんどん行きましょう。
それでは、最初に呪文詠唱を忘れずに。
$ cd ~/buildroot
$ make busybox-menuconfig
Networking Utilties --> [*] Enable IPv6 support (チェックを外す)
[*] ntpd
[*] Make ntpd usable as a NTP server(チェックを外す)
[*] telnet (チェックを外す)
[ ] telnetd(もし作成したシステムにtelnetでログインしたければ
チェック)
[*] tftp (チェックを外す)
[*] wget (チェックを外す)
[*] udhcp client(udhcpc) (チェックを外す)
Process Utilities --> [*] pgrep
他にも自分がいらないな、と思ったものがあればどんどんチェックを外して試してみて
ください。いい勉強になると思います。
今回はここまで。
次回は、make linux-menuconfigです。(手抜きをします。)
自分のペースでやってますので。どれくらい需要があるのか
わかりませんが、自分もネットの情報には日ごろお世話に
なってますので、ご恩返しのつもりでやってます。
気長にお付き合いください。
inthedark
はじめまして。どれくらい役に立てるかわかりませんが
よければお付き合いください。
安定版でもgit版でもどちらでもいいと思います。
digififanさんは安定版を使っておられると思います。(想像
ですが)。組込み用のシステムで自分の目的に特化したもの
をつくる、ということにはbuildrootは威力を発揮します。
私がここで書いていることなんていうのはbuildrootのほんの
一端でしかありません。奥が深いソフトだと思います。
楽しいですから機会がありましたら実際に使って動かして
みてください。ca2さんはプログラムもなさるようですし、
私よりもっと面白いシステムが自分でお作りになれると思い
ます。
inthedark
さて今回は表題のことを書く前に知っておいていただきたいことがありますので、まずは
buildrootディレクトリをファイルマネージャーで眺めてみましょう。
buildrootを展開したときには以下のような構成になっていると思いますが、どうですか。
arch board boot configs docs fs linux package support system toolchain
そして一度でもmake busybox-menuconfig や make linux- menuconfig を唱えますと
dl output というディレクトリが増えているはずです。
dlはbuildrootがネットからとってきた(もちろん、menuconfigで指示されたものですよ)ソース
を集めるために作られます。実際に見てみてください。busybox-1.26.0.tar.gzなんてファイルが
存在してますよね。
そして、outputはサルがこれから作るシステムのイメージなどの出力がされる場所です。
このoutputの中を見てみますと
build host images staging target
といったディレクトリができていると思います。
buildはdlでとってきたソースを各パッケージごとに展開しビルドをする場所です。
もちろん実行するのはbuildrootですが。make busybox-menuconfigを実行し設定を完了
すると、busybox-1.26.0(安定版とは違うかも)というディレクトリができているはず
ですのでその中身を見ていただければお分かりになると思います。
これから解説します、make linux-menuconfigを実行しますと、linux-4.4.39とか自分が
指定したバージョンのカーネルソースの展開されたディレクトリができているでしょ。
imagesはサルがbuildrootに作るように指示した、zImage MLO uboot.img am335x-bonegreen
rootfs.cpio.gzなどが最終的に出力される場所です。これをsdカードにコピーすればいいわけ
です。
targetは実際に作ったルートファイルシステムが展開されて中身を見れるようになっています。
実際どんなふうにできたかを確認できるわけです。
それではmake linux-menuconfigの解説ですが、カーネルオプションの中身については今回の
趣旨から外れますし、私は専門家ではありませんのでいちいち解説などできません。
そこで今回はどこかのシステムから拝借したconfig.gzを使ってやる超手抜き方法でやって
みたいと思います。
それではlightmpd bbb版からとってきたconfig.gzを使わせて頂きましょう。config.gzの
取り出し方がわからないって?そういう時は、ググってくださいね。config.gzを例えば
/home/inthedark/BBGにおいているものと仮定します。
$ cd ~/buildroot
$ make linux-menuconfig(この時点で、/home/inthedark/BBGにあるカーネルパッチが反映
される。)
exitでmenuconfigをいったん終了させます。
$ zcat ../BBG/config.gz > output/build/linux-4.4.39/.config
$ make linux-menuconfig
こうすることでlightmpdのコンフィグが反映されたメニューが表示されます。
そして設定を自分色に染めていただき、exitしてください。
その他にやるべきことがなければ、(なければですよ)
$ ccache make -j8 2>&1 | tee build.log
とやるとbuild.logにログを残しながらビルドが始まります。buildrootがサルの指示したカーネル
、mpd、gcc、などソースを取ってきてビルドしてくれます。ccacheなんかもビルドが
速くなるおまじないですから自分の環境にあわせて試してみてください。
ビルドが終わると、上記で説明したoutputディレクトリにファイルができているはずです。
上記でできたrootfs.cpio.gzがルートファイルシステムです。これを、u-bootが読み込める
形式 uInitrdに変換しないといけません。これがyoさんにもお話したおまじないです。
$ cd ~/buildroot
$ output/build/uboot-2017.01/tools/mkimage -A arm -O linux -T ramdisk -C gzip -d
output/images/rootfs.cpio.gz output/images/uInitrd
これまでお話してきたことがこのシステムを作る一連の大きな流れとなります。
大体全体像をつかんでいただけましたでしょうか?最初はだれでももたつきますが、反復
されれば自然と作業スピードはあがります。
実際、私は今まで説明してきたことをほとんど自分で調べ上げました。だからみなさんより
たくさんの時間がかかっております。このスレを読まれた皆さんは私などよりずっと最短
距離を走ることができたはずです。さあ、buildrtootの入り口までは案内しました。
あとは、入り口を通り、新たな世界を体験しに行くか、それとも面倒くさい、やめるわと
なるか、それは皆さん次第です。
もちろん、今までの説明だけで動くシステムが作れるか?といえば、世の中そんなに甘く
はありません。自分にあった環境をbuildrootにつくってもらうためにしなければならない
ことは他にもあります。あと、仕組みの理解も。
今回はここまで。
次回以降、ここからが面倒くさいなあ、と思いながら、buildroot tipsのようなものを
紹介していきたいと思います。ホント、疲れる。
前回までの内容で以下のような方々は、自分の力でbuildrootを操れるようになって
いくはずです。
(1)linuxにお詳しい方
(2)プログラムが組める方
(3)本家マニュアル(英語)をすらすら読める方
そういう方々は サルのbuildroot tipsなんか読んでないで実際にbuildrootを動かして
みてください。
以前、こういう実験が行われたそうです。アフリカの子供たちと日本の高齢者にipadを
渡しました。なんの説明もしません。ただ渡しただけです。どうなったと思います?
アフリカの子供たちは30分もしないうちに電源を入れ、ipadを触り始めたそうです。
一方、日本の高齢者は3時間たっても電源すら入れられなかったといいます。
サルからできるアドバイスを一つ。buildrootに対するときはアフリカの子供たちのよう
になってください。理屈はいいんです、知識がなくてもいいんです。とにかくいじり
倒します。こうやったら壊れるんじゃないか?、こんなの理屈にあわねーからできないね!
そうじゃありません。サルは恐れを知りません。ぶつくさ言ってないで呪文をとなえます。
buildrootの中身をみます。c言語、そんなの知らねーよ。でも、カーネルのソースを
みます。スクリプトファイルを見ます。中身をこじ開け、とにかく見るんです。
エラーメッセージもちゃんと見ます。何を自分に忠告してくれているのかに注意を払い
ます。これがbuildroot攻略の早道です。
他人がこうしてくれない、こんな機能をもったものを作ってくれない。サルは文句をいう
前に自分でつくります。そのためならなんでもやります。lightmpd の boticizedがその
証明です。自分でつくってみてはじめて、digififanさん、donuts.shop73さん、yoさんの
苦労がちょっとはわかります。こういった方々の偉大さがわかります。(骨身にしみます)
感謝の念はわいてきますが、文句などいう筋合いはありません。本当に私たちは恵まれた
世界の住人なんです。しかも、皆さんはbuildrootなんて強力な武器を持つことができます
。しかもタダで。自分でやってみましょうよ。
それでは、サルからbuildroot tipsを一つ。ただし、これ以降の話は気が向いたらやりますが
途中でやめるかもしれません。あしからず。
4つの呪文、覚えてますか?その中に make distcleanというのがありましたよね。
あれを唱えるとbuildrootは落として来て展開したときの状態に戻るというお話をしました。
そうすると、以前お話した、output dlといったディレクトリは全部消去されます。
dlって何が集まってるディレクトリでしたか?buildrootがネットからとってきたソース
が入れられる場所です。もったいないと思いませんか。buildrootはdlが消えてしまって
いたら、またソースをネットからダウンロードします。これはビルド時間の遅延を招き
ます。だからmake distcleanをする前にdlをbuildrootディレクトリの外へ退避します。
例えば、/home/inthedark/dlといった場所に。それから make distclean します。
そのあと
$ cd ~/buildroot
$ ln -s ../dl
こうしてシンボリックリンクを作っておきます。これでbuildrootは、dlにあるものは
もうダウンロードをしないで、dlにあるソースを展開、ビルドすることから始めて
くれます。サルは、git版を使ってますが、git pull でbuildrootを最新にしたあと
自分が作るシステムに必要なパッケージソースがバージョンアップされていれば、
buildrootはdlにあるものと比較してその新しいパッケージソースだけダウンロードして
くれます。
賢いでしょ、buildroot。
今回は、ここまで。
いつまでもあると思うな、親と金とサルのbuildroot tips
設定項目が多いので、まっさらな状態から始めるとすると相当大変ですね。BBB(G)用にまとめてもらって本当に有難いです。menuconfigで一度設定した
buildroot/.config
buildroot/output/build/busybox-*/.config
buildroot/output/build/linux-*/.config
あたりは、ある程度使いまわせる感じでしょうか。パッケージなどは「/」を押すと検索できるんですね(sshfsなども有りました)。
お付き合い頂き誠に恐縮です。
.configはおっしゃる通りです。保存しておいて指定箇所に
コピーすれば最初から設定する手間が省けます。
/もおっしゃるとおりです。カーネルのmenuconfigと同じです。
sshfsなどに限らずbuildrootがサポートしてくれている
パッケージは結構あります。そういうものをビルドして
自分のシステムに組み込めるようになったらなお楽しい
です。
これからも時間があれば色々いじって遊んでみてください。
面白い発見があればどうか このサルめに教えてください。
inthedark
本日、昼頃からWindows10への仮想PCソフトのインストールから作業を始め、ubuntu16.04LTS上にgit版buildrootを展開し、inthedarkさんのチュートリアルをなぞりながらmake linux-menuconfig後のビルドまでをやってみました。
エラーが出てはその指示に従いパッケージをインストールしたり、作業を進めるうえで不明な点はググることで簡単に対処方法が見つかりました。
まだ作業手順をなぞっただけなので、メニュー設定の内容などはこれから勉強していきたいと思います。(ここからが本番)
Linuxはたいして詳しくない私にも自分でビルドしてみるというきっかけを与えてくださり大変感謝しております。
auのCMではありませんが「やってみよう」の精神は大事ですね。
さて今回いよいよbuildrootの本丸ともいえるお話をします。
それが rootfs-overlay と呼ばれる機能です。
順を追って説明しましょう。
皆さんの中にはもうすでに、ccache make -j8とかやって最終的にエラーもなくビルド
された方がいらっしゃることと思います。そういう方がいらっしゃったら、
~/buildroot/output/target
このディレクトリを見てみてください。ここにあるディレクトリ群がサルが作っている
メモリ上に展開されるルートファイルシステムの中身です。
その中にある、/etc/init.dをファイルマネージャーで見てみてください。
S01loggingとか、SXXというスクリプトファイルが並んでますよね。ピンと来られる方も
いらっしゃると思いますが、システムの起動時にS01から始まって順番にこれらが実行
されていくわけです。
ここにあるものはbuildrootが親切にもすでに作ってくれています。しかし
buildrootは起動時に実行する必要があるすべてのパッケージについてSXXのスクリプト
ファイルを作ってくれるわけではないのです。そういうときどうするか?
そのときは自分で作るしかないわけです。
さあどうしましょう?自分で作ったはいいがこの作ったSXXのスクリプト
ファイル、ccacheのおまじないを唱えてビルドしている間に自動的に組み込んでくれない
かなあって思いませんか?その望みをかなえてくれるのが、rootfs-overlayという
機能です。
以前make-menuconfigについてお話しているなかで
(/home/inthedark/buildroot/board/am335x/rootfs-overlay)Root filesystem overlay
directories
という部分について触れましたね。覚えてますか?上のかっこ書きにあるディレクトリ
は別にこうしなければならないわけではありません。本家のマニュアルに設定例みたい
なものがあってそこの真似をしているだけです。
例えば、/home/inthedark/buildroot/board/am335x/rootfs-overlayというディレクトリ
を作りここにtargetの中にあるルートファイルシステムと同じディレクトリ構成をつく
っておくんです。
rootfs-overlay/etc/init.dという具合に。そして、init.dの中に優先度を設定したい
SXXchrtなんてスクリプトを作ったとしましょう。そのスクリプトをrootfs-overlay/
etc/init.dの中にコピーしておくんです。このようにしてから、ccacheとおまじないを
唱えてやると、buildrootはサルのルートファイルシステムの/etc/init.dディレクトリ
にSXXchrtというスクリプトファイルを作りこんでくれるのです。
この機能は覚えておくと非常に便利です。様々な応用ができますので。こういうディレクトリ
をこのディレクトリの下に作って欲しいとか、buildrootが作ってくれたSXXスクリプト
ファイルが気に入らないから自分で作り直したものを使いたいとかいうときにね。
今回はここまで。
さあ、次があるかな?
はじめまして。お付き合い頂き恐縮です。
自分が勉強し始めたときはほんと不安でした。
しかし、自分で作ったmpdを組み込んだ完全にメモリ上で
動くシステムから音が出てきたときは感動したものです。
ぜひ、みなさんの中から一人でも二人でもそういう感動を
味わえる人が出てくれば、こんなにうれしいことはあり
ません。
いつまで喋れるかわかりませんが、お付き合い頂ければ
幸いです。
inthedark
さあ、もうそろそろ自分でシステムを作っていく喜びに目覚めた方がチラホラ
いらっしゃるんではないでしょうか? えっ、もっと教えろ?
まあ、そういう甘えん坊みたいな方もいらっしゃるでしょうから、tipsを1つ。
サルの作っている完全にメモリで動くシステムは、cpio形式のルートファイルシステム
だというお話をチラっとですがしたと思います。
調べていただければわかることなんですが、なんでしょうね、cpio形式って。
lightmpdはromfsという形式を採用していらっしゃいます。これは私も詳しいことを
説明できる専門家ではないんですけど、romfsはメモリ上にカーネルが解釈できるファイル
システムをあらかじめ作成し、そこにルートファイルシステム(romfs)を展開する
というものです。
しかし、サルが使っているcpio形式でつくられたルートファイルシステムは、メモリに
カーネルが解釈できるファイルシステムを作る必要がなく、そのままメモリに読み込まれ
展開できるというものなんだそうです。
サルが作っているルートファイルシステムはbuildrootで作成すると
~/buildroot/output/images
に出力されます。rootfs.cpio.gzという名前のファイルです。もちろん、ビルドが
無事通っていたらの話ですが。
buildrootは親切ですから、このrootfs.cpio.gzというファイルの中身は一体どうなって
いるのかは、
~/buildroot/output/target
を見てもらえれば確認できるんですけど、このできてしまったcpioの中身を修正したい
と思ったときどうしたらいいですかね。例えば、buildrootがせっかく
/etc/init.d/SXX~みないなスクリプトファイルを作ってくれたけどこれいらないや!
っていうことで消去したいなあ、なんてことがあればどうしましょう?
rootfs.cpio.gzを展開して修正を加え、またrootfs.cpio.gzに戻す
これをしなければなりません。
ということで皆さんの調べる手間を省いてしんぜましょう。
以下の呪文を覚えてください。
$ cd ~/buildroot/output
$ mkdir rootfs
$ cd rootfs
$ fakeroot
# zcat ../images/rootfs.cpio.gz | cpio -id
これで、rootfsディレクトリにbuildrootで作ったルートファイルシステムが展開
されます。そしたら、中身を修正し放題です。修正し終わったあと元に戻します。
# find . | cpio --quiet -o -H newc | gzip -9 > ../rootfs.cpio.gz
# exit
$
これで、修正後のrootfs.cpio.gzがoutputディレクトリにできますね。
今回はここまで。
さあ、次は何をしゃべろうかな。
サルが作っている完全メモリで動くシステムは、mpdで音を鳴らすことを目的
としてます。lightmpdと同じです。make-menuconfigのTarget packagesで指定
してやれば、mpdはビルドしてくれます。
それならいっそ、mpdにパッチをあててビルドして欲しいですよね。
rtパッチとか、dsdパッチとか。こういうときbuildrootではどうしたらいいんですかね。
あとrt optionを付け加えるときどうしたらいいんですかね。
皆さんが一番知りたいであろうtipsについてお話しましょう。
ファイルマネージャーで~/buildroot/packageディレクトリの中を見てみてください。
ここにはbuildrootがサポートしているパッケージの簡単に言えばビルドをするための
手順書が書かれたものが集まっています。この中にmpdというディレクトリがあります
のでその中身をみてください。
0001-なんて番号が振られたpatchファイルがあるでしょ。そうです、ピンと来られる方も
多い思いますが、ここにrtパッチやdsdパッチを置いておくんです。そうするとbuildrootは
mpdをビルドするとき、ここに置かれているパッチをあててビルドしてくれます。
0001-と番号をふってあるのはこの順番にパッチをあててください、とbuildrootにお願い
するためのものです。パッチのあてる順番を間違えるとエラーになる場合などに有効です
よね。
そしてmpd.mkというファイルがあるでしょ。それをエディタで開いてみてください。
最初の方に、
MPD_VERSION_MAJOR = 0.20
MPD_VERSION = $(MPD_VERSION_MAJOR).2
MPD_SOURCE = mpd-$(MPD_VERSION).tar.xz
MPD_SITE = http://www.musicpd.org/download/mpd/" target="_blank">http://www.musicpd.org/download/mpd/$(MPD_VERSION_MAJOR)
という部分があるでしょ。
もうくどくど説明しなくてもわかりますよね。
buildrootにhttp://www.musicpd.org/download/mpd/" target="_blank">http://www.musicpd.org/download/mpd/$(MPD VERSION MAJOR)から
mpd-0.20.2をとってきてくださいと指示しているわけです。
エディタで下の方にスクロールしていってください。
mpdをビルドしたことがある方はみたことがある文字がたくさん並んでるでしょ。
--enable-alsaとかね。そう、ここでrt optionを指定するんです。
例えばサルは、mpd.mkファイルの下の方に、
endef
MPD_CONF_OPTS += --enable-rtopt <---- (サルが追加したrtoption)
MPD_POST_INSTALL_TARGET_HOOKS += MPD_INSTALL_EXTRA_FILES
って加えてます。
あと、追加で大判ぶるまいしておきましょう。
mpd-0.19の方がいい、これとってきてよ!ってbulldrootにお願いするときはどうしたら
いいですか?
MPD_VERSION_MAJOR = 0.19
MPD_VERSION = $(MPD_VERSION_MAJOR).21
これで、mpd-0.19.21.tar.xzを取ってきてくれます。
ただし、これをやったときは注意が必要です。このまま、ccacheとやると途中でエラー
となります。mpd-0.19.21.tar.xzのhash値をmpdディレクトリにあるmpd.hashファイルに
登録しておいてやらないといけません。hash値を求める方法は?
$ sha256sum ~/dl/mpd-0.19.21.tar.xz
これで求められた数値をmpd.hashに登録しておいてあげてください。
# Locally calculated after checking pgp signature
sha256 552a87d71c2981baeddf28c1856a7e071ea0236dd38bc75ec25d58529605ff77 mpd-0.20.2.tar.xz
sha256 8305b8bc026f4b6bde28b8dd09bfdddbe5590acf36358eed4d083a396e301730 mpd-0.19.21.tar.xz
こうすることでビルドが通るはずです。
今回はここまで。
まあ、これで大方システムを作るのに必要なことは伝授できたかな。
最後に皆さんにプレゼントしたいと思います。
それが、uEnv.txtです。
私が、buildrootでシステムを作り始めたころ、お手本といえば(今でもですが)
lightmpdでした。lightmpd BBB版についているuEnv.txtが僕の教材です。
自分でも色々調べましたが、digififanさんは色々解説してくださいました。
しかし、これはあくまでも、romfsをロードするためのものであって私の作って
いるinitramfs(cpio)をロードするためのものではありません。確かに、このuEnv.txt
に修正を加えなくても私のシステムはロードできました。
ただ、起動メッセージをシリアルコンソールで眺めていても
unpack initramfs
みたいな表示がありません。
どうしたものかと思いました。こんなことdigififanさんにお聞きするなんてずうずうしい
ことはできません。(少なくともサルには)
そこで自分で考えました。その中身がこれです。
#
verify=no
#
#kernel_file=uImage
kernel_file=/boot/zImage
initrd_file=/boot/uInitrd
console=ttyO0,115200n8
mmcdev=0
mmcpart=1
loadkernel=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${kernel_file}
loadinitrd=load mmc ${mmcdev}:${mmcpart} ${rdaddr} ${initrd_file}; setenv initrd_size ${filesize}
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} /boot/dtbs/${fdtfile}
boot_ftd=run loadkernel; run loadinitrd; run loadfdt
ramrootfstype=ext2
#ramroot=/dev/ram0 rw ramdisk_size=65536
#ramboot=echo Booting from ramdisk ...; run ramargs; bootm ${loadaddr} ${rdaddr} ${fdtaddr}
#ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
uenvcmd=run boot_ftd; run ramboot
lightmpd BBB版のものでいらないと思ったものをコメントアウトしました。
これで起動すると、unpack initramfsのような表示が確認できるようになりました。
このときはうれしかったなあ。
さあ、いかがだったでしょうか。自分で作る意欲が湧いてきたでしょうか?
サルはrpiも自分でシステムを作っております。(rpiB rpiB+ rpi2B3台ともね。)
私は、lightmpdも、volmioも、runeも、picoreplayerも それぞれ特徴があって好きです。
しかもタダで使わせてもらえるわけですから、こんな贅沢な話はありません。
これは音が悪いだのと、批評だけしているうちは楽なもんです。だから、サルは自分で
作ってみようと思いました。buildrootはサルのような人間にもシステムを作れる可能性
を与えてくれました。buildrootの開発陣には感謝の念を禁じえません。
この掲示板で言いたい放題いわせていただける機会を与えてくださったyoさんに感謝
いたします。ありがとうございました。
最後に lightmpd,volimioなど、日々開発を続けておられる方々に敬意を表してしめくくり
たいと思います。
inthedark(サル)
連載ありがとうございました。大変な力作ですね。buildroot の何たるかはよく分かりました。
これは自分専用のコンパクトなmpdシステムを作るのに最適な開発環境ですね。ライブラリを管理する機能はないが、mpdを指定して必要なライブラリを自動的に組み込むことができるようなので、
Target packages --->
Audio and video applications --->
mpdを動かすシステムを構築するいう意味ではライブリ管理してもらえることになりそうです。
linuxでmpdを使った音楽プレーヤを作成する時、
- カーネルをどう構成するか(カーネルのビルド)
- rootfsをどう構成するか(ディストリビューションの選択)
- mpdをどう構成するか(mpdのビルド)
に分かれます。今まで2番目の「rootfsをどう構成するか」についてはディストリビューションの選択位しか選択の余地が無かったのですが、buildrootを使えば、これを自在に構成できるということのようです。lightmpdの凄いところはこれに目をつけて、Gaucheと組み合わせて、多機種に展開させたというところですね。改めてよく分かりました。
比較的簡単にromfsのシステムを構築できるようだから、Boticized arch linuxシステムもこれに入れ換えるという手はあるかな。
おっしゃるように、「buildrootはサルのような人間にもシステムを作れる可能性を与えてくれました」(なかなか高級なサルだと思いますが^^;;;) ということだと思います。
とりあえず、折角の力作を消滅させるといけないので、しっかり掲示板のバックアップをとっておきました(^^)。
それにしても、たとえばsshdをmenuconfigで選択しておけば、S50sshdだとかを用意してちゃんと起動処理までしてくれるんですね。こうなると普通のboticの初期設定のように、network/interfacesなりmpd.confなりをoverlayで設定すれば動きそうな雰囲気があります。週末になれば(たぶん)まとまった時間がとれるので、とにかく実機で動くか試そうと思います。
最後までお付き合いいただき恐縮です。
こういうものは勢いがあるときにいっきにやらないと続かない
ものなので根を詰めて書きました。乱筆ですがご容赦を。
私が口で幾ら言っても、実際にいじらない限りbuildrootの
すごさは伝わらないと思いますのでここからは皆さんが実際に
体験することが大事です。(buildrootに限ったことではありませんが)
皆さんの食わず嫌いを緩和することが今回の目的です。
英語が苦手だし、分厚いマニュアル読むの嫌だし、linuxあんまり
詳しくないし、色々な理由をつけて自分の可能性をつぶして
いく(年を取ればとるほどこの傾向が強くなりますが)
これはやはりもったいないと思いますんで。すでに相当の知識
をお持ちなら自分で勝手に勉強していくわけですから、ほっとけ
ばいいんですが、そうじゃない人の中にも様々な可能性が眠って
いるんじゃないかと考えています。
これをきっかけに、自分の可能性にアクセスする人が一人でも
出てくれば成功じゃないでしょうかね。
digififanさんがbuildrootのrootfsイメージの作り方を公開
されています。まだ暫定版ですが。書いてある通りに実行
して頂ければ、romfsができますのでお時間があり、興味が
ある方はやってみてください。(エラーがでることがあるかも
しれませんが、落ち着いて)
inthedark
素晴らしいタイミングでdigififanさんの情報が公開されましたね。それも BBB Boticを意識した形で。ここでlightmpdのboticizeって大騒ぎしたのが良かったですかね。
早速試してみて、先程、
yo@ubuntu:~/digifi/beaglebone/buildroot-2016.11.1$ ls output/images/
rootfs.cpio rootfs.cramfs rootfs.romfs
を確認したところです。
Core i5 1.8MノートPCで2H位かかりました。VmwarePlayerのディスクを8GB位消費。
ちょっと実機でやるのは無理ですね。
これをベースにいろいろ遊んでみるつもりです。
inthedark さんの情報とアドバイスなしにはここまでこれなかったでしょうから、大感謝です。
1. 環境変数(.bashrcなどに記入)についてですが、
export BR2_DL_DIR=(dlを置きたい場所)
export CCACHE_DIR=(tmpfsを使ってるなら/tmp?(再起動すると消えるが、それが良いのかは不明…))
の様に設定できるかもしれません。BR2_DL_DIRについては設定しておくと、buildrootがこっちをダウンロードの場所として優先する模様。
また、標準だとソース・ファイルをwgetするとき3回試すんですが、繰り返してもうまく行かない方が多い気がするので、.configで
BR2_WGET="wget --passive-ftp -nd -t 1"
の様に1回にしてます。
2. make の引数について、マニュアル(https://buildroot.org/downloads/manual/manual.html#_advanced_usage" target="_blank">https://buildroot.org/downloads/manual/manual.html#_advanced_usage)の 8.12.5 にいろいろ書いてあります。
たとえば、一度ccache makeしたプロジェクトで、mpdだけ新しく更新したいという場面は多いと思います。ただ、buildrootは一気に全部作ることを想定してるので、厳密な手順としては make clean して ccache make しなくてはなりません。
しかしそれは面倒なので、次善の方法としてはmake cleanの代わりにmpdだけ消す:
make mpd-dirclean
をしてからccache makeすることもできます。そうすればmpdについては一から作成されます。mpd更新くらいなら、だいたいはこれで大丈夫かと。
3. mpdなどを新しくするとき、mpd.hashを正しく設定しないとエラーになりますが、そのチェックを飛ばすこともできます。具体的には:
none xxx mpd-0.20.4.tar.xz
の様に指定できます。
4. TopDirにlocal.mkというファイルを作って、たとえばlinux-kernelやmpdなら
LINUX_OVERRIDE_SRCDIR = kernelのあるディレクトリ
MPD_OVERRIDE_SRCDIR = mpdのソースのあるディレクトリ
のように設定すると、ソース・ファイルを拾って展開するかわりに、指定の場所からコピー(rsync)してくれます。この場合、パッチは自動では当たりません。最新のパッケージで、いろいろ操作が必要なときは便利かもしれません。
5. overlayの話がすでに出てますが、
BR2_ROOTFS_POST_FAKEROOT_SCRIPT
BR2_ROOTFS_POST_IMAGE_SCRIPT
あたりも設定すると作業を完全に自動化できて便利かもしれません。
POST_FAKEROOT はrootfs.romfsが作成される直前(たとえば、不要ファイルの削除などできる)、
POST_IMAGE は作成後に実行される模様です(mkimageしたりもできる)。
こんばんわ。夜分貴重なtipsありがとうございます。
工夫次第で色々使い勝手が良くなるものですね。
またお気づきになられた点などございましたら
お時間の許す限りで結構ですので書き残して頂ければ
とおもいます。
inthedark
軽量化だとかの話は、まだ途中という感じなので後日まとまってきたら書こうと思います。
サイトのこのページに
http://mimizukobo.sakura.ne.jp/articles/articles020.html#boticized-lightmpd" target="_blank">http://mimizukobo.sakura.ne.jp/articles/articles020.html#boticized-lightmpd
アナウンスしました。バグ報告、質問、雑談などはここで継続しましょう。よろしくお願いします。
「Boticized lightMPD用のmpdのビルド」のスレッドも長くなったので、こちらで続けましょう。
こちらで続けましょう。
> なので、新たにS+数字+..のファイルをつくって、その中でSDカードをマウントして、データのコピー+実行をするコマンドを書けばGaucheは関係なしにある程度の操作はできそうです(S00setupvarの中身のSDマウント方法を真似できるかと)。
「この手はあるかな」と思っていました。
telnetでちょっと実験してみました。
# mount /dev/mmcblk0p1 /mnt
# ls -l /mnt/lightMPD/myscript.sh
-rwxr-xr-x 1 root root 74 Jan 1 09:03 /mnt/lightMPD/myscript.sh
# /mnt/lightmpd/myscript.sh
Welcome to Boticized lightMPD
# cp /mnt/lightMPD/myscript.sh /sbin/
cp: can't create '/sbin/myscript.sh': Read-only file system
# cp /mnt/lightMPD/myscript.sh /var/lightMPD/bin/
# /var/lightMPD/bin/myscript.sh
Welcome to Boticized lightMPD
ちなみにmyscript.shの内容はさっき公開したものを使って
#!/bin/sh
echo "Welcome to Boticized lightMPD"
#mount /dev/mmcblk0p1 /mnt
としてあります。
公開ありがとうございました。早速使わせていただきました。
デフォルトの組み合わせで、mpd.confもデフォルトで聴いてみました。
素晴らしいですね。もうここら辺りになるとレベルが高過ぎて、最近moctさんが公開されたmpd-0202rtなどと較べても甲乙付け難しという感じです。
DSD再生もDopでDSD64とDSD128は再生を確認しました。DSD256は無理みたいです。コントロールソフトを道連れに暴走します。
以下は全くの余談ですが、どうもLINUXCOMさんのブリッジ基板は、Botic起動直後において切換信号DSD_Hがうまく出ていないような気がします。一度PCMを再生した後ではDSD再生は可能になりますが。
まあこれは当方の環境だけなのかな。yoさんのところは別に問題ないですか。問題ないのであれば、当方のマイコンのプログラムにこそ問題ありということですが(^^;
なんにせよ、boticize版の公開ありがとうございます。botic+lightmpdを使ってみたい人は、私もそうですが、沢山いたのではないかと思います。
DSD再生に関しては、ディフォルトの僕のビルドしたものではなく、デジファイのおとさんがビルドしたものを使った方がいいかもしれません。ただし、uInitrdはuInitrd-botic-l(オリジナルのuInitrdでもOK)に変更する必要はあります。
ブリッジ基板の切替信号に関してですが、aitlabo DACは使っていないので、分からないです。linuxcomさんのB3D-A4495では問題ないです。
> なので、lightmpdではmpdのように後から入れ替え・切り替えしたいものをシンボリック・リンクにしてる感じでしょうかね。こういったlightmpdの工夫は、たとえばbuildrootを自分で使うにしても有用そうです。
このあたりの工夫は凄いですね。今回、uInitrdをバラしてみて、よく分かりました。
そういう意味では、myscript.shを組み込もうと頑張ってみて良かったなと思っています。
Boticized lightMPDの公開ありがとうございます。
えふ さん
DSD再生ですが、digififanさんが1/19にmpd-0.19.21rt-native-dsdを再アップされています。
当方でのLINUXCOMさんのブリッジ基板及びDSD-A4490基板一式での確認となりますが、
audio_output に dsd_native_type "3" を指定することでDSD256の再生が正常にできることを確認しております。
> audio_output に dsd_native_type "3" を指定することでDSD256の再生が正常にできることを確認しております
uInitrdは何を使われましたか ?
> uInitrdは何を使われましたか ?
initrd_file=/boot/uInitrd-botic-l
上記設定で正常動作を確認しています
ブリッジ基板ご使用との事で質問させていただきたいのですが
Boticized lightMPDの内容ではないことを承知の上ですいませんがよろしくお願いします。
DSD再生中の停止操作、頭出し、PCMからDSD、DSDからPCMの切り替わり時で
ポップノイズならびにタッチノイズ(名称が思い浮かばないです)の発生は
いかがでしょうか?
以前、所持していましたが必ずでるノイズの大きさが問題で手放してしまいました。
LINUXCOMさんのDSD-A4490+RCI-A4490基板でのことでしたら、DSD<->PCMの切替、停止からの再生開始、DSDの再生停止(一時停止含む)、頭出しでボツ音が発生します。
BBGとブリッジ基板で外部のD/Aコンバーター(Texas のPCM1795)に繋げて、kickさんのAch-BotiをeMMCに入れて聞いています。
今回Boticized lightMPDを試してみましたが、ネットワークに繋がらず上手くいってません。
Boot Buttonを押しながら電源を入れると、Ethernetのオレンジとグリーンのランプがつきますが、LEDSが消灯したままです。
lightmpd.conf内のdebugのsaveをonにしてますが、SDカードの中を見てみるとファイルができていなので原因がしらべれなく困っています。
sdカードの相性かもと思い、もう一台のBBBで認識するSDカードを使ってみましたがダメでした。
設定はlightmpd.conf(network、nas、mpd)を自分の環境に合わせました。
BBBでLightMPDを使っていますので、設定は問題ないと思います。
botic関連で設定し忘れている所などありましたら、教えてください。
よろしくお願いします。
> LEDSが消灯したままです。
ということはブートローダは正常に動いたけど、カーネルが読み込むことが出来ていないという意味です。uEnv.txtをいじりましたか。
私は BBB とLINUXCOMさんのB3D-A4495 基板の構成で、ブートフラグ(fdiskのa)の設定はしていないからか ^^:
>Boot Buttonを押しながら電源を入れると、
起動しません。
B3D-A4495 基板のJ2をオープン(ブートボタン押さないのと同等)で電源を入れるとLEDSが点灯し30秒程で点滅に変わります。
直ぐにEtherの緑LEDとLEDSの点滅が激しくなりデータベースの更新を行うようです。
更新が済むとLEDSの鼓動は落ち着く感じです。
ありがとう御座います。
uEnv.txtは編集してません。
fdiskのaはしてません。
LightMPD v1.0を使用してるsdカードもMACでfat32にフォーマットして、ファイルをコピーして問題なく使えていましたので(^^;;
ブートフラグは気になっていましたが、まだ試していません。
無事音が出ました。
初歩的なミスですいませんでした(^^;;
じっくりと聞いてみます♪
>Ubuntuをインストールして、fdiskをしました。
当方も最近うまく起動していなかったのですが、同じ方法(ブートフラグを付けること)で、起動してくれました。
yoさん
>ブートフラグがあやしいです。
まさにそのとおりで、今まではこんなことは意識せずに起動できていたのですけどね。
最初は、S2のタクト・スイッチが押しすぎて壊れたのかなと思いましたが(^^;、イメージファイルで焼き付けたSDカードでは問題なく起動していたのでそうではないとは分かっていましたが。
>Ubuntuをインストールして、fdiskをしました。
起動できるようになってよかったですね。
kickさんのArch-BoticをeMMCから起動できるのであれば、そこからSDカードをfdiskできますよ。
fdisk /dev/mmcblk0
eMMCのArch-Boticでfdiskできました。
ありがとうございます。
本当に良い音ですね♪
初めての投稿となります
つい最近公開されましたboticized-lightmpd-v02を組み込んで早速聞いております。
やはり高域が特徴的ですね、気持ちのいい出方をしています。
ところで、質問です。
①LightmpdはRAM上で動作しているので、電源OFFはぶち切りでいいよとのことですがやはり精神的か弱い私には怖いです。どこかのネットでTelnetを使ってlightmpdと通信出来ると記載がありました。Telnetを使用して電源OFFはできないでしょうか。
②また、上記のようにTelnetを使用してfdisk-aはできないでしょうか。
よろしくお願いします。
> Telnetを使用して電源OFFはできないでしょうか。
出来ます。「poweroff」が使えます。
> 上記のようにTelnetを使用してfdisk-aはできないでしょうか。
-aというオプションはないと思いますが、fdiskは普通に使えます。
ちなみに、boticized lightmpdでは、uEnv.txtやlightmpd.confをいちいち Windows側で修正するのが面倒なので、
mount /dev/mmcblk0p1 /mnt
を初期設定処理(myscript)で自動実行するようにしてあります。
従って、
nano /mnt/uEnv.txt
nano /mnt/lightmpd/lightmpd.conf
で内容を修正可能です。
Tlenetにより設定変更ができることがわかりました。
そこで、ご提案ですが大容量のsdカードを用意しlightmpdの他にMusicホルダーを作成して音楽データを入れ込み再生ができそうですが。
LANによる音楽データ転送が無くなるため音質向上ができそうです。
Telnetで音楽データの入れ替えするようなマクロは出来ないでしょうか。
出来ると思います。
簡単にするためには、rootfsにmpcを組み込んだ方がいいでしょうね。
僕はsdメモリ再生には興味がないので、マクロ作成に誰か手を上げてくれるなら、rootfsの方は、簡単に作成できますので、対応します。
sdカード再生を行うためには/etc/mpd.confの変更が必要ですが、mpd.confの実態は/var/lightmpd/etcにありますので、書き換え可能です。
また、mpdの再生は外部のクライアントを使うよりmpcコマンドで行った方が、sdカード再生には適当ですので、mpcを組み込んでおく方がいいです。これは、digififanさんが公開されたrootfs作成データを利用すれば、簡単にできます。
あらかじめ playsd.sh というスクリプトをsdカードの /lightmpd に用意しておき、myscript.shと同じ手口で/varにコピーされるようにしておきます(とりあえず、myscript.shを使ってもよい)。
参考までですが
PLAYDATA=/再生ディレクトリ・・/再生データ
mkdir /mnt/music
sed -e "s/\/var\/lib\/mpd\/Music/\/mnt\/music/" /etc/mpd.conf
mpd --kill /etc/mpd.conf
mpd /etc/mpd.conf
cp $PLAYDATA /mnt/music
mpc add music/再生データ
mpc play
こんな感じで再生出来るのではないかと思います(未確認です)。
まあ、Ruby curses あたりを使って、メニューを使い、選ぶような方法も可能だと思います。
これで動くのを確認しました。
SDDATA=robos.wav
DIR1=sdc/sacd/waon/
DIR2=/var/lightMPD/nas/NASID2/
mkdir /mnt/music
sed -e "s/\/var\/lib\/mpd\/Music/\/mnt\/music/" /etc/mpd.conf > /var/mpd.conf
mpd --kill /var/mpd.conf
mpd /var/mpd.conf
cp $DIR2$DIR1$SDDATA /mnt/music/$SDDATA
mpc update
sleep 2
mpc add $SDDATA
sleep 1
mpc play
> Telnetで音楽データの入れ替えするようなマクロは出来ないでしょうか。
既にyoさんの方で一つ回答を出されていますが…、当方もTera Term用のマクロでNASからSDカードへデータコピーするマクロ
を公開します。以下のところからダウンロードしてください。
このマクロは、当方のオリジナルではありません。以下のサイトで公開されていたメモリ再生用にデータをコピーするマクロ
を当方がSDカードへのコピー用に改変したものになります。
オリジナルは、Raspi2のlightMPD用にメモリ領域にデータ転送する目的で作られたものです。Raspi2は1GBのメモリが有ります
から、システムがその一部を消費してもそれなりの容量を確保できますので問題ないのですが、BBB(BBG)は、512MBしか有りま
せんのでこの程度ではflacデータでもアルバム1枚分をコピーするのは難しくなります。
そこでSDカードへのコピー専用のマクロに特化することにして、オリジナルから関係ない部分削除したり、メッセージ文言を
書き換えたりしています。
※例によってお断りしておきますが、本マクロは無保証でご利用ください。当方及びオリジナル作者は使用に際して一切の責任
を負いません。なお、この改変版を公開することについては、オリジナル作者様の許諾を得ています。
https://drive.google.com/file/d/0B97p9GyQEpOldjAyQUN0eF9IeEk/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B97p9GyQEpOldjAyQUN0eF9IeEk/view?usp=sharing
オリジナルはこちら。「LightMPDでのメモリ再生 その3」
https://officemoorea.wordpress.com/2016/07/22/lightmpd%e3%81%a7%e3%81%ae%e3%83%a1%e3%83%a2%e3%83%aa%e5%86%8d%e7%94%9f-%e3%81%9d%e3%81%ae%ef%bc%93/" target="_blank">https://officemoorea.wordpress.com/2016/07/22/lightmpd%e3%81%a7%e3%81%ae%e3%83%a1%e3%83%a2%e3%83%aa%e5%86%8d%e7%94%9f-%e3%81%9d%e3%81%ae%ef%bc%93/
「動作条件」
Tera Term Ver.4.86以降
「前提条件」
複数のNASを利用しているか、一つであれば音楽フォルダが複数あることが必要です。当方の場合は、トップディレクトリに
music があり、その配下に DSD flac wavという3個の構成となっています。(最大5個の指定ができます)
「事前準備」
・NASをネットワークドライブとして認識させてください。この時割り当てられたドライブレターをマクロ内で指定する必要が
あります。
・SDカード、要するにlightMPDをインストールしているカードのルートに、music という名前で事前にフォルダを作成しておい
てください。
・本マクロ、C2Mbbb_20170202_sdcopy.ttl をteratermフォルダにあるttpmacro.exeに関連付けしておいてください。要するに
マクロファイルのダブルクリックで起動させるためです。
・マクロの先頭部分に、lightMPDのIPアドレス、ネットワークドライブのフォルダ指定がありますので、個々の環境に書き換え
てください。
・上記の音楽フォルダの指定順は、lightmpd.confでNASで指定している順に合わせてください。当方の場合、lightmpd.confで
music_directory=NASID2/DSD,NASID2/flac,NASID2/wav と指定していますので、マクロ内で上からこの順に指定しています。
※原則、lightMPD側(lightmpd.conf等)には変更を加えません。
「操作」
・NAS及びlightMPDが起動している状態で、マクロを実行してください。具体的操作については、感覚的に分かっていただける
と思いますが、上記のオリジナル作者様のサイト記事で具体的な操作説明がありますので参考にしてください。簡単に云うと、
最初にNAS上のフォルダ選択画面で今回コピーするフォルダを選択してコピーを行い、しばらく待つと再度フォルダ選択画面に
なりますので、この状態のまま再生ソフト(当方はSkyMPCを利用)起動して必ず更新(DB更新)を行ってください。
・そうするといつものMD01、MD02…の後に sdcard というフォルダが現れますので、この中に楽曲がありますのでいつもように
プレイリストに追加して再生できます。
・本マクロは単純なコピー機能に徹しています。ただ、SDカードですからそれなりの容量がありますから、コピーする際に
以前のデータを消して今回コピーするものだけにするのか、または今回のものを追加コピーするかを選択できます。
・フォルダ選択画面で「キャンセル」を押下すると、本マクロは終了します。
「制限事項」
・lightMPDには日本語localeが入っていないのでしょうか。Tera Termウインドウでリスト表示すると日本語曲名が文字化け
します。
・通常はアルバム単位でその名前を付した楽曲フォルダが出来上がっていると思います。フォルダ単位でコピーしていますが
sdcardフォルダ配下にはそのアルバム名フォルダは現れず、いきなり楽曲名が表示されます。よって、複数の楽曲フォルダー
をコピーした場合は、それら全てが混在する形となります。
以上、長々と書き連ねてきましたが、当方もTera Termのマクロは俄勉強を始めたところで実は詳細には把握していない部分が
あります。ですので要望事項を出されましてもお応えすることができないと思います。繰り返しますが、データコピーするとい
う単機能な目的であるこをと承知おきください。
マクロの知識をお持ちの方で、このように改善したよという方がおられましたら是非教えてください。改変はご自由ですが、
必ずマクロ先頭部分の著作者表示は残しておいてください。
なお、改変版(本マクロ)については、オリジナル作者様へは問い合わせはしないようにお願いします。
最後に本当にくどいですが(^^;、データ等はバックアップを取ってからご利用ください。少しでも何方かのお役に立てば幸いです。
通信プログラムのマクロという手は思いつきませんでした。
そういえば、昔(いにしえの古代ですね)、パソコン通信という世界があって、マクロを使っていたなぁと思い出しましたね(^^;;;。
やっぱり、再生まで出来た方がいいでしょうから、buildrootを使って mpcなどを入れた版を仮公開しますかね。
日本語localeが入っていないと思います。どう入れるかよく分からないのですが、ご存じの方ヘルプです。
> パソコン通信という世界があって、マクロを使っていたなぁと思い出しましたね
当時、emacsのマクロで「Nifty4u」(名前間違ってたらごめんなさい)などで、フォーラムを巡回してたような…
その時は今と違って、FreeBSDやNetBSDを使っていたような気がします。
ところで余談ついでに(^^;、先日ついにapu2c4が届きました。
このマクロにかかりきりだったので、取りあえずスタンドアロンで音が出るところまでは確認しました。
この後は、BBBと組み合わせてUPnPアダプターモード等を試してみます。
yoさんのboiticized lightmpdはカーネルが4.8.13だと思うんですが私は、最新の4.9.7(rt4)でビルドに成功しましたのでお知らせします。
シリアルコンソールで例のごとく確認しましたが、
asoc-botic-card botic: using 'default' pinconfig
asoc-botic-card botic: botic-hifi <-> 48038000.mcasp mapping ok
asoc-botic-card botic: 48k ext, 44k1 ext, use format switch
ALSA device list:
#0 Botic
以上のメッセージを確認し、起動もしております。
lightmpdBBBv1.03に私の作った、zImage,am335x-boneblack-botic
を入れて試しました。
どうでもいいような話題ですがご参考まで。
inthedark
最近はしばらく、公開されたlightmpdのconfigで、buildrootをつかってのuInitrd軽量化などを私は試してました。
boticized kernelの件ですが、mieroさんのbotic7-v48のパッケージを使うんでしょうか?実は前にyoさんの解説をみて自分で試したんですが、linux-kernelのstable版をgitでひろってくるので、バージョンが違ってしまうためか、上手くできませんでした。このへん、うまくやる手順があるのでしょうか?
以前の解説に書かれていた、buildrootでlinux-upstream_4.8.13-botic7-rc3を指定する方法ならrt化したkernelもビルドはできるんですが…
Boticized lightMPDのmpdの最新版への入れ換えですが、一応音が出るようになりました。音は素晴らしいです。尖った音という感じはすっかりひっこみ、落ち着いた雰囲気で、楽器のリアルな質感がとてもよく再現されるようになりました。悪戦苦闘しましたが、やってみた甲斐はありました。
lightmpd login: root
# uname -a
Linux lightmpd 4.8.13-rt8-lightMPDbbb-00128-g46e67de-dirty #9 PREEMPT RT Thu Jan 12 08:24:28 JST 2017 armv7l GNU/Linux
# mpd -V
Music Player Daemon 0.19.21
Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright (C) 2008-2014 Max Kellermann <max@duempel.org>
公開しようかと思いますが、前回のzImageとam335x-boneblack-botic.dtbに加え、uInitrdとmpdの入れ換えが必要で、更に、uEnv.txt、lightmpd.conf、mpd.confの一部修正が必要です。つまりBBB版のlightMPDをブートローダを除いて、総入れ換えすることになります。こうなると公開は著作権者のデジファイのおとさんの許可を得ておくのが仁義かと思います。
あと、ビルドするmpdの構成に関してはいろいろな設定が可能ですが、当然、僕の使い方に合わせた設定になっています。ラジオが聞けないとか、SOXによる変換はしないとか、多々制限があります。
また、原因不明のバグ残りです。一番大きいのはmpdが自動起動されないというやつ。その他、tag_cache作成途中で止まるので、古い版で作成してから使う必要があるなど。このあたりは公開して、他の方の環境でどうなるか知りたいです。
という次第でどうしたものか思案中です。
なお、uInitrdの入れ換えは相当に大変です。「インタネットラジオを聞きたいからなんとかしろ」などといわれても、気安くハイハイいえるレベルではありません。デジファイのおとさんがあれだけの数のソフトを様々な要望を聞き入れながら、メンテナンスされていることに改めて敬服、感謝します。
https://groups.google.com/forum/#" target="_blank">https://groups.google.com/forum/#!topic/lightmpd/rHUIeT_OUdQ
buildrootというのを使うのが正しい作法らしいが、知らない、面倒だという理由で却下。Boticized Debian(jessie版)を使うことにしました(Boticized Archはlib構造が違うので、使えません)。
Boticized Debianの作り方については、ここのmoctさんの情報を参照して下さい。
http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5424#5440" target="_blank">http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5424#5440
lightmpdのカーネルのビルドについては結構あちこちに情報はありますね。例えばここ。
https://groups.google.com/forum/#" target="_blank">https://groups.google.com/forum/#!topic/lightmpd/UhTitAMPr4E
コンパイルの仕方についてはこちらを参照して下さい。
http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5424#5436" target="_blank">http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5424#5436
この時ポイントは事前にmpdをインストールしないこと。まっさらの状態でビルドを開始して下さい。もう一つ。Debianが最新になっているので、gccのバージョン指定は不要です。
mpd 0.19.21を選択するとlintweakerさんのパッチはDSDパッチはかからなくなるので、RTパッチだけかけます。
myconfigはサイトに最近書き込んだ内容のものを使っています。一応掲載しておくと
#!/bin/sh
./configure \
--disable-bzip2 \
--disable-iso9660 \
--disable-zzip \
--enable-id3 \
--disable-sqlite \
--enable-ffmpeg \
--enable-alsa \
--disable-wave-encoder \
--enable-pipe-output \
--enable-httpd-output \
--disable-recorder-output \
--disable-sndfile \
--disable-oss \
--disable-shout \
--disable-pulse \
--disable-ao \
--disable-mad \
--disable-jack \
--disable-cdio-paranoia \
--disable-soundcloud \
--disable-inotify \
--disable-ipv6 \
--enable-curl \
--disable-mms \
--disable-wavpack \
--disable-lame-encoder \
--disable-twolame-encoder \
--disable-vorbis \
--disable-lsr \
--enable-rtopt \
--with-zeroconf=auto \
CFLAGS="-O2 -march=armv7-a -mtune=cortex-a7 \
-mfpu=neon-vfpv4 -mfloat-abi=hard" \
CXXFLAGS="-O2 -march=armv7-a -mtune=cortex-a7 \
-mfpu=neon-vfpv4 -mfloat-abi=hard" \
--with-systemdsystemunitdir=/lib/systemd/system
となります。
さて、ここからが勝負です。
まず、mpdが使っているライブラリの情報を出力させます。
root@arm:~# ldd /usr/local/bin/mpd
linux-vdso.so.1 (0xbed49000)
libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0xb6f8a000)
libFLAC.so.8 => /usr/lib/arm-linux-gnueabihf/libFLAC.so.8 (0xb6f57000)
libavformat.so.56 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavformat.so.56 (0xb6e75000)
・・・
libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0xb3766000)
libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0xb374a000)
root@arm:~#
という感じで72行分出力されます。Boticisedした結果カーネルのバージョンはあっているので、理屈としてはこれを全部 Boticized lightMPD側にコピーしてやれば、ビルドしたMPDは動くことになります。
その方法も考えたが、ここで思案。エディターの検索機能を使い、必要なものだけピックアップすることにしました(これは後から考えると、かえって手間をかけてしまっかもです^^;;;)。
Boticised lightMPD側で
# ls /usr/lib/arm-linux-gnueabihf/
# ls /usr/lib
# ls /lib
この出力結果を先程のlddの出力結果の先にコピーし、検索機能を使って、有るか無いか確認します。
ついでに、Debian側も同じことを行っておきます。こちらは確実にあるということの確認です。
この検索編集作業が一番大変でした。適当なスクリプトを作れば、もう少しスマートに出来るとは思いますが、どうせ一回だけだからと手抜き。
そして、最終的にこういうスクリプトを作成します。
cd /home
mkdir ./work-lib
mkdir ./work-libarm
mkdir ./work-usrlibarm
cp \
/lib/arm-linux-gnueabihf/libbz2.so.1.0 \
./work-lib
cp \
/usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0 \
/usr/lib/arm-linux-gnueabihf/libcurl.so.4.3.0 \
/usr/lib/arm-linux-gnueabihf/libicuuc.so.52 \
/usr/lib/arm-linux-gnueabihf/libmpcdec.so.6 \
/usr/lib/arm-linux-gnueabihf/libicui18n.so.52 \
/usr/lib/arm-linux-gnueabihf/libicudata.so.52 \
/usr/lib/arm-linux-gnueabihf/librtmp.so.1 \
/usr/lib/arm-linux-gnueabihf/libgnutls-deb0.so.28 \
/usr/lib/arm-linux-gnueabihf/neon/vfp/libavresample.so.2 \
/usr/lib/arm-linux-gnueabihf/libxvidcore.so.4 \
/usr/lib/arm-linux-gnueabihf/libx264.so.142 \
/usr/lib/arm-linux-gnueabihf/vfp/neon/libvpx.so.1 \
/usr/lib/arm-linux-gnueabihf/libtheoraenc.so.1 \
/usr/lib/arm-linux-gnueabihf/libtheoradec.so.1 \
/usr/lib/arm-linux-gnueabihf/libspeex.so.1 \
/usr/lib/arm-linux-gnueabihf/libschroedinger-1.0.so.0 \
/usr/lib/arm-linux-gnueabihf/libopus.so.0 \
/usr/lib/arm-linux-gnueabihf/libopenjpeg.so.5 \
/usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 \
/usr/lib/arm-linux-gnueabihf/libgsm.so.1 \
/usr/lib/arm-linux-gnueabihf/libva.so.1 \
/usr/lib/arm-linux-gnueabihf/libidn.so.11 \
/usr/lib/arm-linux-gnueabihf/libssh2.so.1 \
/usr/lib/arm-linux-gnueabihf/libssl.so.1.0.0 \
/usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0 \
/usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 \
/usr/lib/arm-linux-gnueabihf/libkrb5.so.3 \
/usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 \
/usr/lib/arm-linux-gnueabihf/liblber-2.4.so.2 \
/usr/lib/arm-linux-gnueabihf/libldap_r-2.4.so.2 \
/usr/lib/arm-linux-gnueabihf/libhogweed.so.2 \
/usr/lib/arm-linux-gnueabihf/libnettle.so.4 \
/usr/lib/arm-linux-gnueabihf/libgmp.so.10 \
/usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 \
/usr/lib/arm-linux-gnueabihf/libtasn1.so.6 \
/usr/lib/arm-linux-gnueabihf/liborc-0.4.so.0 \
/usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 \
/usr/lib/arm-linux-gnueabihf/libsasl2.so.2 \
./work-usrlibarm
cp \
/lib/arm-linux-gnueabihf/libdl.so.2 \
/lib/arm-linux-gnueabihf/librt.so.1 \
/lib/arm-linux-gnueabihf/libpcre.so.3 \
/lib/arm-linux-gnueabihf/libgcrypt.so.20 \
/lib/arm-linux-gnueabihf/libkeyutils.so.1 \
/lib/arm-linux-gnueabihf/libgpg-error.so.0 \
./work-libarm
これで、debian側で作成したMPDをlightMPD側で実行するために、必要なライブラリを捕獲できることになります。
スクリプトをdebian側で実行します。
nano save_mpdlib
上記内容をコピー。
sh ./save_mpdlib
と書くとすんなり出来たようですが、実は単純な検索だけでは駄目なものが二つありました。
/usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0 \
/usr/lib/arm-linux-gnueabihf/libcurl.so.4.3.0 \
この二つはこの後のmpd入れ替え後の最初のlightMPDの起動で以下のエラーとなり、最新版への更新が必要と分かったものです。
mpd: /usr/lib/arm-linux-gnueabihf/libcurl.so.4: no version information available (required by mpd)
mpd: /usr/lib/arm-linux-gnueabihf/libasound.so.2: no version information available (required by mpd)
mpd: /usr/lib/arm-linux-gnueabihf/libasound.so.2: no version information available (required by mpd)
mpd: /usr/lib/arm-linux-gnueabihf/libasound.so.2: no version information available (required by mpd)
Music Player Daemon 0.19.21
というエラーが出て調べたら
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jan 15 10:18:07 2017
root@arm:~# ls -l /usr/lib/arm-linux-gnueabihf/libasound.so.2
lrwxrwxrwx 1 root root 18 Apr 24 2016 /usr/lib/arm-linux-gnueabihf/libasound.so.2 -> libasound.so.2.0.0
root@arm:~# ls -l /usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0
-rw-r--r-- 1 root root 627336 Apr 24 2016 /usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0
root@arm:~# ls -l /usr/lib/arm-linux-gnueabihf/libcurl.so.4
lrwxrwxrwx 1 root root 16 Nov 2 01:01 /usr/lib/arm-linux-gnueabihf/libcurl.so.4 -> libcurl.so.4.3.0
root@arm:~# ls -l /usr/lib/arm-linux-gnueabihf/libcurl.so.4.3.0
-rw-r--r-- 1 root root 292468 Nov 2 01:02 /usr/lib/arm-linux-gnueabihf/libcurl.so.4.3.0
lightMPDでは
# ls -l /usr/lib/arm-linux-gnueabihf/libcurl.so.4.3.0
-rwxr-xr-x 1 root root 301596 Jan 1 09:00 /usr/lib/arm-linux-gnueabihf/libcurl.so.4.3.# ls -l /usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0
-rwxr-xr-x 1 root root 812036 Jan 1 09:00 /usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0
となっているので、Debian側の最新版が必要と判断しました。
ここから先は適当なlinux環境で作業します。僕はVmwarePlayerのUbuntuを使いました。
次に uInitrd に捕獲したライブラリをコピーします。uInitrd を解凍し、展開したディレクトリで操作します。
uInitrd は Windowsの 7zip で解凍します。initrd.romfsという名前でromfsが解凍されます。
http://download.atmark-techno.com/armadillo-9/tools/" target="_blank">http://download.atmark-techno.com/armadillo-9/tools/
これを上記リンク先(armadilloのtoolsディレクトリ)にあるextromfs.shで展開します。
wget http://download.atmark-techno.com/armadillo-9/tools/extromfs.sh" target="_blank">http://download.atmark-techno.com/armadillo-9/tools/extromfs.sh
mkdir root
chmod 777 ./extromfs.sh
sudo ./extromfs.sh /mnt/boot/initrd.romfs root/
これでrootにlightMPDのrootfsが展開されます。
extromfs.shのについては以下に解説があります。
http://armadillo.atmark-techno.com/howto/extromfs-a9" target="_blank">http://armadillo.atmark-techno.com/howto/extromfs-a9
http://wiki.onakasuita.org/pukiwiki/?extract_uImage.sh" target="_blank">http://wiki.onakasuita.org/pukiwiki/?extract_uImage.sh
Windowsの 7zip を使うというダサイ方法ではなく、全部linuxやるスマートな方法の情報を教えてもらいました。
http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5485#5502" target="_blank">http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5485#5502
ただ、この方法はloopマウントしたrootfsをrwに出来ないので、上記方法としています。
Boticized DebianのSDカードをもってきます。
sudo mount /dev/sdb1 /mnt
sudo cp /mnt/home/work-lib/* root/lib/
sudo cp /mnt/home/work-libarm/* root/lib/arm-linux-gnueabihf/
sudo cp /mnt/home/work-usrlibarm/* root/usr/lib/arm-linux-gnueabihf/
これで、めでたく捕獲したライブラリは Boticized lightMPDの住民となりました。
次に展開したrootfsを再びuInitrdに戻します。
参考にしたサイトはこちら。
http://blog.rustle.info/archives/2045" target="_blank">http://blog.rustle.info/archives/2045
このサイトはrpiのlightMPDに関する情報サイトですが、なかなか参考になります。
http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5485#5491" target="_blank">http://mimizukobo.sakura.ne.jp/cgi-bin/read.cgi?mode=all&list=topic&no=5485#5491
上記の情報にも助けられました。
sudo apt install genromfs
cd root
sudo genromfs -f ../initrd.romfs
sudo gzip ../initrd.romfs
mkimage -A arm -O linux -T ramdisk -C gzip -d ../initrd.romfs.gz ../uInitrd-botic
これで MPD入れ換え用にライブラリの入れ換えを行った uInitrd が誕生しました。
あとは、誕生したuInitrd をBoticized lightMPDに入れてやるだけです。sdカード交換前にmpdをコピーしておきます。
sudo cp /mnt/usr/local/bin/mpd ../
sudo umount /mnt
sdカードを入れ換えます。
sudo mount /dev/sdb1 /mnt
sudo cp ../uInitrd-otic /mnt/boot/
これで作業は完了ですが、このままでは動きません。まず uEnv.txtを修正します。
sudo nano /mnt/uEnv.txt
#initrd_file=/boot/uInitrd
initrd_file=/boot/uInitrd-botic
もう一箇所変更があります。捕獲したライブラリを大量に取り込んだため、 uInitrd が太りすぎたのですよね。僕の腕ではダイエットすることは難しいので(^^;;;、太ったサイズに合わせることにします(^^;;;。
#ramroot=/dev/ram0 rw ramdisk_size=65536
ramroot=/dev/ram0 rw ramdisk_size=131072
しかし、倍のサイズとはあんまりだといわれそうですが、無視です(^^;;;。
長い道のりでしたが、ようやくmpdの入れ換えとなります。
cp ../mpd /mnt/lightmpd
あと二つ、設定ファイルの修正が必要です。
sudo nano /mnt/lightmpd/lightmpd.conf
# load_module=mpd-0.19.9rt
load_module=mpd
次に
sudo nano /mnt/lightmpd/mpd.conf
#samplerate_converter "soxr very high"
これでお終いです。システムを起動します。
今のところ気がついているバグは二つです。
一つ目は時々(というかほとんど毎回)、mpdがうまく起動されません。
# mpd /etc/mpd.conf
で回避しています。Gaucheのスクリプトと勝負しないと駄目なのですかね。ウームだなぁ。
二つ目は僕の環境では tag_cacheの作成が途中で止まってしまいます。だだ、これはlightMPDの問題ではなく、mpdの問題だと思います。他の方の環境ではどうなるか、公開して知りたいと思っています。
リンク先にこの掲示板のアドレスがいっぱいあります。多くの方に助けられてなんとかlightmpdのbotic化が出来ました。ご協力いただいた皆様ありがとうございました。
孤軍奮闘お疲れ様です。
苦労は目に見えるようですがその分音が出た時は
感動されたのではないかと推察します。
以前も話題にしましたがdonuts.shop73さんという方はrpi用
ですがlightmpdを改良されpolipoやupmpdcliを入れてupnp
化しておられます。この方も公開する前にちゃんとdigififanさんに
ことわっておられますので、その方がいいでしょう。
取りあえずお疲れ様でした。
inthedark
デジファイのおとさんのご了解は頂きました。
問題は一つの目のバグで、telenetを使えない方にはかなり致命的な内容だから、解決しないといけませんね。しかしGaucheは相手の戦いは厳しいなぁというところです。
デジファイのおとさんの掲示板、私も読ませていただきました。
yoさんは人望がありますからこれからも様々な情報が入ってくる
と思います。
様々な人の知恵が結集され、面白いことができますように。
inthedark
https://sites.google.com/site/digififan/home/lightmpdbbs" target="_blank">https://sites.google.com/site/digififan/home/lightmpdbbs
inthedark
それで、最初の起動プロセスでは、
(1) /etc/init.d/S00setupvar内でsyssetup.scmにより生成されたスクリプト(setup.sh)でコピー&+xしたmpdを、
(2) /etc/init.d/S95mpd
という普通のシェルスクリプトが実行してる様です。このへんの起動に齟齬が起きてるんでしょうか?
ちなみに、/etc/init.d/にシェルスクリプトを仕込めばGaucheとは関係なしにシステムをいじれるのかもしれません。
(1)についてもう少し書くと、syssetup.scmはセットアップ用のシェルスクリプトsetup.shを作るものらしく、
/mnt/var.rom% grep -R "MPD-LOAD" .
./lightMPD/bin/syssetup.scm:(define-constant MPD-LOAD-MODULE (outfile "bin/mpd"))
./lightMPD/bin/syssetup.scm: (format port "cp /mnt/lightMPD/~a ~a\n" lm MPD-LOAD-MODULE)
./lightMPD/bin/syssetup.scm: (format port "chmod +x ~a\n" MPD-LOAD-MODULE)))))
の様になっていて、mpdの実行ファイルに関しては(多分RAM上に)コピーしてxをつけるくらいのことをする模様です。
zImage-4.9.3rt1は僕のuInitrdと組み合わせて、問題なく動くようですね。オリジナルのuInitrdではエラーになります。
mpd-0.19.21rt-native-dsdは再生しようとするとエラーになるので、デジファイのおとさんに質問しているところです。
mpdの起動の件は解決しました。
あとはmoctさんから要望の出ているrt優先レベルの設定方法なのですが、悩ましいですね。
スクリプトにして初期設定処理で起動する位は出来そうですが、設定内容を自由に変えるというのは、大変なので。
ca2 さん、アドバイスありがとうございます。
mpdの起動の件は多分ビルドの仕方の違いに起因する問題だったようです。S95mpdのmpdを起動する部分の修正で対応できそうですね。
> (趣味でGaucheを使うもので)
(@д@)。凄いですね。僕は、昔、emacsのマクロ(lispです)を使っていたことがあるのですが、あまりの難しさにメゲて(^^;;;、wzに転向しました。これからも教えていただけると幸いです。
それで、便乗して質問ですが、sdカードのrootにrt優先レベルを設定するシェルスクリプト(例えばrtlevelset.sh)を置いたとして、これを初期設定処理で起動する一番簡単な方法を教えてもらえますか。
lightmpd.confからできるというのには正直よく考えておられる
なあと感心しました。
[irqpriority]
setdefault=no
musb-hdrc.0.auto=FIFO:30
inthedark
ここ数日の変化はものすごいですね。
今、yoさんのカーネルと「デジファイのおと」さんのバージョンアップしたmpdで聴いていますが、とんでもないですね、これは。
「デジファイのおと」さんが隠していた優先レベルを変更する機能も、使いにくいですが必要十分です。この辺は無理をされなくても良いと思います。
この組み合わせで音がでますか。となると僕の環境で駄目なのは、mpd.confの問題ですかね。
# uname -r
4.8.13-rt8-lightMPDbbb-00128-g46e67de-dirty
# mpd -V
Music Player Daemon 0.19.21-dsd
>この組み合わせで音がでますか。となると僕の環境で駄目なのは、mpd.confの問題ですかね。
参考までに
https://www.dropbox.com/sh/v49t12thdy0h6jp/AACN1gtPLnVyPtPFKJ-hvxuxa?dl=0" target="_blank">https://www.dropbox.com/sh/v49t12thdy0h6jp/AACN1gtPLnVyPtPFKJ-hvxuxa?dl=0
僕の確認ミスでした。
オリジナルのuInitrdとmpd-0.19.21rt-native-dsdの組み合わせであれば、音は出ますね。
ということは、今の状態で最新のmpdの音を聞けることになるので、こちらで作ったuInitrd-boticを急いでアップロードする必要はなさそうです。
データ、ありがとうございました。
ドタバタしていて、質問し忘れていましたが、
> 以前も話題にしましたがdonuts.shop73さんという方はrpi用
> ですがlightmpdを改良されpolipoやupmpdcliを入れてupnp
> 化しておられます。この方も公開する前にちゃんとdigififanさんに
> ことわっておられますので、その方がいいでしょう。
この方の公開されているサイト(アドレス)を教えて頂けますか。
調べればいいのですが、不精をして(^^;;;。
var.rom/lightMPD/bin/syssetup.scm内の、
(format port "cp /mnt/lightMPD/~a ~a\n" lm MPD-LOAD-MODULE)
(format port "chmod +x ~a\n" MPD-LOAD-MODULE)))))
の直前に
(format port "cp /mnt/lightMPD/script.sh bin/script.sh\n")
(format port "chmod +x bin/script.sh\n" MPD-LOAD-MODULE)
を加えて、
/etc/init.d/S95mpdに、/usr/bin/script.shを加えてしまえば、一応良い気がします。sdの mpd と同じディレクトリに置いた script.sh の内容が実行されるかたちになります。
他にも方法はありそうですが…それは時間ができた時にさせてください。
lightmpdの掲示板内でダウンロードリンクを張っておられます。
https://drive.google.com/file/d/0B9LSJY9xM01jbnJWUUNnSXUxTmc/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B9LSJY9xM01jbnJWUUNnSXUxTmc/view?usp=sharing
inthedark
早速試してみましたが、結果はNGです。
教えていただいたように(script.shはmyscript.shに変更しました)
(define (output-copy-mpdloadmodule-script param)
(let ((lm (hash-table-get param "load_module" "mpd")))
(call-with-output-string
(lambda (port)
(format port "cp /mnt/lightmpd/myscript.sh bin/myscript.sh\n")
(format port "chmod +x bin/myscript.sh\n" MPD-LOAD-MODULE)
(format port "cp /mnt/lightMPD/~a ~a\n" lm MPD-LOAD-MODULE)
(format port "chmod +x ~a\n" MPD-LOAD-MODULE)))))
という具合に修正し、起動すると(当然/lightmpd/myscript.shは作成しておきます)
started
/etc/init.d/S95mpd: line 31: /usr/bin/mpd: not found
OK
/etc/init.d/S95mpd: line 31: /usr/bin/myscript.sh: not found
webconsole started
ympd started
Welcome to lightMPD
lightmpd login: MPD connection: Connection refused
MPD connection failed.
*** PARSEOPT-ERROR: running out the arguments for option "p"
Stack Trace:
という具合にエラーになります。MPDのコピーまで巻き込んでエラーになっていますので、
(format port "chmod +x bin/myscript.sh\n" MPD-LOAD-MODULE)
のMPD-LOAD-MODULEが悪いのですかね。
ちなみにこの行をコメントアウトするとエラーは
/etc/init.d/S95mpd: line 31: /usr/bin/myscript.sh: not found
だけになります。
書き忘れましたがS95mpdは修正してあります。case文のstartの時にmyscript.shを実行するように。
サイトの方に書き込んでいますが、僕がlightMPDに興味を持ったのはUPnP対応したという理由からです。まあrpiだと使うことはなさそうですけれども、スレッドは読んでみます。
再度ビルドしなおして見ました。
digififanさんのご忠告どおりDevice Drivers --> Multifunction drivers --> TI TPS65217 Power Management
チェックをいれるとビルドは通ります。
これでmpdもkernelもすっきりしますね。
inthedark
調べたら
arch
[root@alarm ~]# ls -l /usr/lib/libasound.so.2.0.0
-rwxr-xr-x 1 root root 869108 Dec 23 01:32 /usr/lib/libasound.so.2.0.0
lightMPD
# ls -l /usr/lib/libasound.so.2.0.0
-rwxr-xr-x 1 root root 812036 Jan 1 1970 /usr/lib/libasound.so.2.0.0
debian
root@arm:~# ls -l /usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0
-rw-r--r-- 1 root root 627336 Apr 24 2016 /usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0
となっています。いずれもboticizedしたもの。
archが一番新しいようですね。どういう訳か僕がビルドしたmpdはどれでも動くので、lightmpdで聞き比べてみました。arch版が一番音が良いような気がします。boticizedした版でもarchが一番評判が良いみたいですが、このあたりにも原因の一つがあるのですかね。
デジファイのおとさんが公開されているmpdはlightMPDに搭載されているlibasoundでないと動かないのですが、これも不思議。
さて、公開するuInitrdはどうしますかね。着せ変え人形方式にして、好みの服を着せて頂戴とするかな。
(define (output-copy-mpdloadmodule-script param)
(let ((lm (hash-table-get param "load_module" "mpd")))
(call-with-output-string
(lambda (port)
(format port "cp /mnt/lightmpd/myscript.sh bin/myscript.sh\n")
(format port "chmod +x bin/myscript.sh\n")
(format port "cp /mnt/lightMPD/~a ~a\n" lm MPD-LOAD-MODULE)
(format port "chmod +x ~a\n" MPD-LOAD-MODULE)))))
のようにして下さい。これでどうでしょうか?
format はprintfみたいなもので、~aの数だけ後ろに引数をもつので、MPD-LOAD-MODULEを消し忘れてエラーになったと思います。
SD内のlightmpd/lightMPD/myscript.shをコピーします(mpdやlightmpd.confのあるディレクトリです)。
やりたいことは、mpdの実行ファイルをコピーする時に便乗してSDのデータをコピーしたいというだけです(応用すれば、initrdに全部入れて固めなくても、外にあるデータをRAMに移すことができると思います)。
本当は別の関数に分ける方が良いと思いますが、とりあえずということで…。
(define (output-copy-mpdloadmodule-script param)
(let ((lm (hash-table-get param "load_module" "mpd")))
(call-with-output-string
(lambda (port)
(format port "cp /mnt/lightMPD/myscript.sh bin/myscript.sh\n")
(format port "chmod +x bin/myscript.sh\n")
(format port "cp /mnt/lightMPD/~a ~a\n" lm MPD-LOAD-MODULE)
(format port "chmod +x ~a\n" MPD-LOAD-MODULE)))))
lightMPDの標準の設定法を越えることになるので、ここまでやる必要あるかわかりませんが…
(define (output-copy-mpdloadmodule-script param)
(let ((lm (hash-table-get param "load_module" "mpd")))
(call-with-output-string
(lambda (port)
(format port "cp /mnt/lightMPD/myscript.sh ~a\n" (outfile "bin/myscript.sh"))
(format port "chmod +x ~a\n" (outfile "bin/myscript.sh"))
(format port "cp /mnt/lightMPD/~a ~a\n" lm MPD-LOAD-MODULE)
(format port "chmod +x ~a\n" MPD-LOAD-MODULE)))))
手元のgaucheで少し工夫するとsyssetup.scmを実行してsetup.shを作成できるのですが、上の修正をして出力を得ました。該当の場所としては、
cp /mnt/lightMPD/myscript.sh /mnt/var.rom/lightMPD/bin/myscript.sh
chmod +x /mnt/var.rom/lightMPD/bin/myscript.sh
cp /mnt/lightMPD/mpd-0.19.9rt /mnt/var.rom/lightMPD/bin/mpd
chmod +x /mnt/var.rom/lightMPD/bin/mpd
の様になってます。
"/mnt/var.rom/lightMPD" となってるのは変に思うかもしれませんが、手元でsyssetup.scmを実行するために設定を書き変えたせいだと思います。少なくともmpdと同じ場所にコピーされるはずなので問題ないはずですが、もしかするとコピーしたmyscriptをどう実行するのか考える必要があるかもしれません。
lightmpd の /usr/bin/mpd はシンボリックリンク(../../var/lightMPD/bin/mpd)ですね。コピーされるのは/var/lightMPD/bin/以下の様です。なので、myscript実行のためにはS95mpdだとかで
/var/lightMPD/bin/myscript.sh
のように実行して下さい。
修正ありがとうございました。後で確認して、結果をご報告します。
うまくいきました。ありがとうございました。
lightmpd login: root
# ls /var/lightMPD/bin/
irqhandler.scm setaffinity.scm statusout.sh
mpd setmpdmask.scm syssetup.log
myscript.sh setup.sh syssetup.scm
# /var/lightMPD/bin/myscript.sh
Welcome to Boticized lightMPD
#
という感じです(^^)。
> lightMPDの標準の設定法を越えることになるので、ここまでやる必要あるかわかりませんが…
「毒食わば、皿まで」だから(ちょっと違うかな ? )、いいのじゃないでしょうか。
これで、このuInitrdとmpdを公開すればよさそうですね。
お尋ねします。yoさんが作成されたmpdは、DSD再生については如何でしょうか。
当方の環境で、Botic化されたものでうまくDSD再生できるのは、moctさんのBoticized Archくらいですので。
追伸:
円安なので厳しかったですが(^^;、ついにPCengineにapuを注文しました。
また、いろいろと教えてやってくださいm(_ _)m
DSD再生できています。ネイティブ/DOPのどちらもOKです。
> ついにPCengineにapuを注文しました。
ようこそapuクラブに。いじり甲斐のあるハードです。楽しみですね。
新たなスレッドを立てるのも大げさなのでここで簡単にご回答
いたします。
buildrootで作れるものは,x86,x64,arm,sparc(64),mipsなど様
々なものが作れます。私は、arm用(rpi,bbg)しか作ってませ
んが、digififanさんのようにapu用も作れます。
buildrootの扱い方はそう簡単ではありません。(私にとって
はですよ、皆さんは簡単じゃないかと思うかもしれません。)
僕も自分でマニュアルと格闘しどうしてもわからないことだけ
詳しい方に質問させていただきました。
それを説明するというのは私には難しいですね。(自分用に
環境構築する手順を書いたマニュアルはありますが、これは他
人に公開するようなものではありませんしね。)
digififanさんも
”lightMPDのイメージファイルはbuildrootというソフトで作成しています。buildrootのconfigやpackageは
以前から公開するとアナウンスしていましたが、こちらの都合でのびのびになっています。”
とはおっしゃってますが、buildrootについて一から十まで説明
するなんてことはしないでしょう。digififanさんはやさしい
方なので実行されるかもしれませんが。
まあ、私も気が向けば(需要がたくさんあれば)別スレッドで書かせて頂くかもしれません。(お約束はできませんが)
inthedark
動きます。
私は、windows10+vmware+ubuntu+buildrootでやってます。
intel core5なんでビルドのスピードは断然速いです。
カーネルのビルドだけなら、コンフィグの内容にもよりますが、
digififanさんのコンフィグなら5分もかかりません。3分ちょ
っとくらいかな。私が作っているものは、内容にもよりますが
30分もかかりません。
inthedark
情報ありがとうございました。参考になりました。
自力でも調べないといけないなと考え、ググってみました。
ここが参考になりました。
http://blog.kmckk.com/tag/buildroot" target="_blank">http://blog.kmckk.com/tag/buildroot
ビルドが必要など、かなり大変そうですね。
更に質問は二つあります。
いわゆるライブラリ管理機能はないのですよね。
digififanさんのコンフィグというのはどこかに公開されているのでしょうか。
しかし、donuts.shop73さんは何故使っていないのですかね。
やはり面倒なのでしょうか。
このスレとは直接関係ございませんので恐縮ですが、簡単に。
ライブラリ管理機能というか、例えば、mpdをルートファイルシステムに組み込みたいと思ったら、関連ライブラリをすべて取って来てコンパイルしてくれる、それがbuildrootです。管理機能
があるといっていいでしょう。
digififanさんは近々公開といっておられるので現時点では
まだでしょう。アナウンスしてくださると思います。
donuts.shop73さんは、自分で関連ライブラリも含めてビルド
することがおできになる方だと推察します。
クロスビルドの環境もclosstool-ngなんかを自由に使いこなせ
るんだと思います。こういう方はbuildrootなんて必要ありませ
んね。
僕のあこがれの師匠のお一人(僕が勝手にそう思っているだけ)
です。
inthedark
> 例えば、mpdをルートファイルシステムに組み込みたいと思ったら、関連ライブラリをすべて取って来てコンパイルしてくれる、それがbuildrootです。
なるほど。それが、lightmpdのlibasoundのレベルが arch linux 最新版より古くなっていた理由でしたか。デジファイのおとさんのbuildrootは一昨年の版のようですから。どんどん謎が解けていきますね。
クロスビルド環境は難しいですね。僕はそんな腕はないので、BBB版の arch linux でbuildrootトライしてみようかなと思っています。カーネルのビルドはVmwarePlayer仮想環境のクロスビルドで問題はないので。
lightmpdのブート後の動作については、普通に考えると、
/etc/init.d/S+数字+..
というファイルを順番に起動するのだと思います。
なので、新たにS+数字+..のファイルをつくって、その中でSDカードをマウントして、データのコピー+実行をするコマンドを書けばGaucheは関係なしにある程度の操作はできそうです(S00setupvarの中身のSDマウント方法を真似できるかと)。
てっとり早いのは、S00setupvarを改造してコマンドを加えればSDの中身をコピーできそうです(実際、S00setupvarではGaucheのスクリプトをコピーしてるので、真似するだけです)。たとえばSDに、スクリプトの入ったextraと言うディレクトリを作っておいて、S00setupvarの「sh $SETUP」の行のあたりに、
cp -r /mnt/lightMPD/extra /var/lightMPD/bin/; dos2unix /var/lightMPD/bin/extra/myscript.sh; sh /var/lightMPD/bin/extra/myscript.sh
(あるいは cp -r $SRCDIR/extra $LMPDBIN/; dos2unix $LMPDBIN/extra/myscript.sh; sh $LMPDBIN/extra/myscript.sh)
とすれば、S00の時点でmyscriptが実行されると思います(起動タイミングがどこが良いか、というのはありますが)。このへんは、とりあえず普通のシュル・スクリプトで完結するんでしょうか。
yoさんに試していただいた様に、/var/lightMPD/以下には少なくとも書き込める様です。ただし、ディレクトリによってはリード・オンリーでコピー不能かもしれず、大きな変更のためには結局initrdの中身をいじる必要があるのかもしれません。SDはfat形式なのでパーミッションの問題もあって、状況によりchmodするとかtarで固めるとかも必要です。
タイトルと内容が不一致になっているので、新しいスレッドで続けます。
lightMPDのコンフィグだとエラーになるということですが、なんとかならないかと試してみました。
/home/yo/linux-upstream/drivers/rtc/rtc-omap.c:703: `pm_schedule_power_off' に対する定義されていない参照です
Makefile:951: ターゲット 'vmlinux' のレシピで失敗しました
make: *** [vmlinux] エラー 1
こういうエラーになります。
rtc-omap.cについて調べると、
/*
* The OMAP RTC is a year/month/day/hours/minutes/seconds BCD clock
* with century-range alarm matching, driven by the 32kHz clock.
*
* The main user-visible ways it differs from PC RTCs are by omitting
* "don't care" alarm fields and sub-second periodic IRQs, and having
* an autoadjust mechanism to calibrate to the true oscillator rate.
*
* Board-specific wiring options include using split power mode with
* RTC_OFF_NOFF used as the reset signal (so the RTC won't be reset),
* and wiring RTC_WAKE_INT (so the RTC alarm can wake the system from
* low power modes) for OMAP1 boards (OMAP-L138 has this built into
* the SoC). See the BOARD-SPECIFIC CUSTOMIZATION comment.
*/
ということです。
エラーの出た部分のソースを見ると
if (rtc->is_pmic_controller) {
if (!pm_power_off) {
omap_rtc_power_off_rtc = rtc;
pm_power_off = omap_rtc_power_off;
}
pm_schedule_power_off = omap_rtc_schedule_power_off;
}
最後の行の「omap_rtc_schedule_power_off が定義されていない」と怒られて、vmlinuxを作ってもらえないということのようです。
rtc-omap.cはBoticのパッチはかかっていないプログラムなので、Botictze化とは関係がなさそうです。menuconfigを見ると
Device Drivers --->
[*] Real Time Clock --->
<*> TI OMAP Real Time Clock
となっているので、こいつがエラーを引き起こした犯人であるようです。
どうしたものかと悩みましたが(まあ、デシファイのおとさんに質問する内容だと思いますが)、
// pm_schedule_power_off = omap_rtc_schedule_power_off;
というトランプ並(^^;;;(^^;;;(^^;;;の無謀な解決方法を選ぶふとにしました。
結果はビルドは通り、音も出ています。
音の感じは大分違いますね。僕にはこっちの方がいいかなという感想。尖っているのは相変わらずですが、これなら、APU(lightmpd upnpgw)と繋いで、使うことは出来そうです。
ちなみに大きさの比較ですが、こんな具合になります。
-rwxr-xr-x 1 yo yo 5515504 1月 11 19:59 zImage-lightmpd-botic
-rwxrwxr-x 1 yo yo 3042040 1月 12 08:35 zImage-lightmpd-botic-org
-rwxr-xr-x 1 yo yo 2786880 1月 11 20:00 zImage-org
一番上がinthedarkさんがビルドしたもの(omap2plus_defconfig)、二番目が今回ビルドしたもの(config-lightmpd)、一番下がオリジナルです。
やはり同じコンフィグを使えば、大幅に減量されますね。
ビルド方法を紹介します。
あらかじめlightMPDのコンフィグを取り出しておきます。
zcat /proc/config.gz > config-lightmpd
wget http://repo.ieero.com/botic/pool/main/l/linux-upstream/linux-upstream_4.8.13-botic7-rc3.orig.tar.gz" target="_blank">http://repo.ieero.com/botic/pool/main/l/linux-upstream/linux-upstream_4.8.13-botic7-rc3.orig.tar.gz
wget ftp://ftp.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patch-4.8.14-rt8.patch.gz
tar -zxvf linux-upstream_4.8.13-botic7-rc3.orig.tar.gz
cd linux-upstream
gzip -dc ../patch-4.8.14-rt8.patch.gz | patch -p1
patch -p1 < ../patches/native-dsd-noise.patch
nano drivers/rtc/rtc-omap.c
ソースの修正
cp ../config-lightmpd ./.config
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- menuconfig
#5455の(6)だけやればいいです。
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- zImage dtbs
SDカードの設定(Windows側でのフォーマットとzipファイルの解凍は行っておきます)。
以下は僕の環境での設定です。
sudo fdisk /dev/sdb
ブート指定をon
a->w
sudo mount /dev/sdb1 /mnt
sudo cp /mnt/boot/zImage /mnt/boot/zImage-org
sudo cp /mnt/boot/dtbs/am335x-boneblack.dtb /mnt/boot/dtbs/am335x-boneblack.dtb-org
sudo cp arch/arm/boot/zImage /mnt/boot/
sudo cp arch/arm/boot/dts/am335x-boneblack-botic.dtb /mnt/boot/dtbs/am335x-boneblack.dtb
sudo nano /mnt/lightMPD/lightmpd.conf
[network]
address=192.168.0.20
[ntp]
server=ntp.nict.jp
nas:NASID1を全てコメントイン
nas:NASID2を全てコメントアウト
[nas:NASID2]
host=192.168.0.35
remotedir=public
remoteuser=yo
[mpd]
# load_module=mpd-0.19.9rt
load_module=mpd
music_directory=NASID2/
# playlist_directory=NASID2/mpd/playlists
playlist_directory=NASID2/mpd/
db_file=NASID2/mpd/tag_cache
# db_file=NASID2/mpd/
# sticker_file=NASID2/mpd/sticker.sql
sticker_file=NASID2/mpd/
log_file=NASID2/mpd/mpd.log
# log_file=/dev/null
sudo nano /mnt/lightMPD/mpd.conf
# dsd_usb "yes"
dsd_usb "no"
dsd_native "yes"
dsd_native_type "3"
sudo nano /mnt/uEnv.txt
optargs=snd_soc_botic.ext_masterclk=3 snd_soc_botic.serconfig=MMMM snd_soc_botic.dsd_format_switch=3
sudo umount /mnt
sync
こうやってみると案外簡単ですね。
リスクを承知で音を聞いてみたいという方もいらっしゃるだろうから、僕のサイトのアップロードフォルダーに置いておきます。何があっても、文句はいわないという条件でダウンロードして下さい。
zImage
http://mimizukobo.sakura.ne.jp/cgi-bin/downlog.cgi?upload/zImage-lightmpd-botic8" target="_blank">http://mimizukobo.sakura.ne.jp/cgi-bin/downlog.cgi?upload/zImage-lightmpd-botic8
am335x-boneblack-botic.dtb
http://mimizukobo.sakura.ne.jp/cgi-bin/downlog.cgi?upload/am335x-boneblack-botic.dtb-lightmpd-botic8" target="_blank">http://mimizukobo.sakura.ne.jp/cgi-bin/downlog.cgi?upload/am335x-boneblack-botic.dtb-lightmpd-botic8
こういう工夫を待ってました。
元の.configを使う方がよりlightmpdに近いわけですから。
あとlightmpd bbb版はusbの優先度を最高にあげてますので
chrtで設定をやり直すか、romfsを解凍してchrtの箇所に修正を
加えるとまた音が違ってくるかもしれません。
inthedark
にお願いです。
inthedarkのコンフィグよりこっちの方がいいぜ!
というものがあればぜひ御報告ください。(yoさんのように)
やり方は公開されてますし、チャレンジされる方がどんどん
登場されると楽しいんじゃないかなあ。そう思います。
inthedark
こんな風にしたらいいんじゃね?
といったアイデアなどありましたら、お気軽にレスを残して
頂けると、なお楽しいかなあ。そう思います。
inthedark
> romfsを解凍してchrtの箇所に修正を加えるとまた音が違ってくるかもしれません。
このやり方がよく分からないのですよね。
uInitrd はgzipフォーマットのようなのですが、
yo@ubuntu:~$ gzip -d /mnt/boot/uInitrd
gzip: /mnt/boot/uInitrd: unknown suffix -- ignored
とエラーになってしまいます。
無理矢理、windows環境で7zipを使って解凍し、initrd.romfsにします。その後
sudo ./extromfs.sh /mnt/boot/initrd.romfs root/
で展開することは出来ました。
extromfs.shは
http://download.atmark-techno.com/armadillo-9/tools/extromfs.sh" target="_blank">http://download.atmark-techno.com/armadillo-9/tools/extromfs.sh
からダウンロードしました。
usb処理の優先レベルを変更します。
cd root
nano ./var.rom/lightMPD/bin/irqhandler.scm
(cond [(string=? systype "beaglebone") '(("musb-hdrc.1.auto" "FIFO:20"))]
genromfs -f ../initrd.romfs
で initrd.romfs.gz が作成されるので、これを無理矢理 lightmpdの /boot/uInitrd にリネーム・コピーしても、ブートするとカーネルパニックとなってしまうのですよね。
何かお気づきの点があれば、ご指摘ください。
ところで、rtカーネルでないとnasを認識しないのはどうもlightmpdの仕様のようですね。rt化されていないと、優先レベルの設定処理でエラーとなり、その先のnasの認識処理が出来なくなるということのようです。
まず私の方で分かったことです。
telnetでログインしてchrtコマンドは有効ですが、pgrepを使えません。yoさんがエラーになったのはこのあたりが原因と思います。
何度か起動を繰り返してもpidは変わらないようなのでchrtに直接pidを入れて優先レベルを変えてみました。usbは99に設定してあったので49に変え、nasも49、面倒なのでmpd-outputを99に設定して聴いてみましたが、随分雰囲気が変わります。これは良いと思います。
そして思ったのですが、起動時に実行するスクリプトファイルをSDカード上に置くことができれば、簡単に優先レベルの設定をを変えることができるのに、ということです。
もうひとつは、クロスコンパイラでmpdをコンパイルする環境の構築方法が知りたいことです。
カーネルについては、何をやっているのかよく分からないレベルなので、みなさんの真似をしながら少しずつ理解していこうかと思っています。
解凍の方は僕もその方法でやりました。
uInitrdの作り方ですが、ubootのソースにmkimageというコマンドがあります。これを使って例えばこんな風にするとよいと思います。
/uboot-2017.01/tools/mkimage -A arm -O linux -T rmadisk -C gzip -d initrd.romfs.gz uInitrd
試してみてください。
nasのマウントの件はまだこちらでは試しておりません。
が、おそらくyoさんの推理があたっているのではないかと思います。
inthedark
rmadisk(誤)
ramdisk(正)
inthedark
yoさんのようにlightmpdを解凍する、固めるができるようになれば中に入っていじくることができて面白いとは思いますが、一般的にはそんなの面倒くさい!となるでしょうね。
lightmpd.confでchrtの設定項目でもつくってそこから優先度を
変えられるようにできればたくさんのユーザーに気軽に試して
頂けるかと思いますが、それはlightmpdが本当にわかっていないとできません。
pgrepが使えないのは、ルートファイルシステムに組み込まれて
いないんでしょうね。たぶん。
mpdについてはカーネルの着せ替えのように簡単ではありません。ライブラリの整合性がないと動きませんしね。
(私は実際試したことがあります、見事に動きません。)
これからもお気軽に色々つぶやいていってください。
inthedark
アドバイス、Many thanks です。うまくいきました。これで何でも出来そうですね。
問題はGaucheとかいうlisp風の初期処理の設定言語ですね。
moct さん
一応、lightmpdをboticizedしながら、乗っ取る方法はほぼ解明しましたので、ご注文にアドバイスはできそうです(必ず出来るとはいえませんが)。
とりあえずのレベルの設定のスクリプトについては作戦を考えてみます。
lightmpd用mpdのクロスコンバイル環境ですが、仮想環境を使うということでいいのじゃないですか。
ho-ho-ho、よかったですね。苦労した甲斐がありました。
ときどきlightmpdの掲示板でお見掛けするdounuts.shop73さんという方がいらっしゃいますが、その方もこんな風におっしゃってます。
一般的にlightmpdはブラックボックスということになっています
が自分にとってはそんなことはありません。(gauche以外)
まあこれでスーパーサイヤ人化したyoさんは無敵ですな。
inthedark
その通りなのですが、カーネルのレベルが4.8.13なので、最新のライブラリにすることは出来ると思います。問題は整合性の確保ですが、MPDだけに限定すれば、なんとかなるかなと思います。MPDで使う機能次第ではありますが。今、展開したライブラリを眺めていますが、比較的シンプルです。
まあ、しかし、デジファイのおとさんはこれを様々な機種に対応させてやっているわけで、大変だろうなぁと思います。改めて感謝です。
> 一般的にlightmpdはブラックボックスということになっています
> が自分にとってはそんなことはありません。(gauche以外)
同感です。
僕もlightmpdは他のディストリビューションのように中味を自由にいじることが出来ないので、面白くないと思っていましたが、今回、認識を改めました。コンパクトにまとまっている分、仕組みが分かればいじりやすそうですね。ただ、あのスクリプト言語はパスだなぁ(^^;;;。
mpdの着せ替え、期待しております。喜ばれると思います。
これで僕も安心して一読者にもどれます。ho-ho-ho-ho
inthedark
login as: root
root@192.168.5.135's password:
Last login: Wed Jan 4 00:29:11 2017 from 192.168.5.1
[root@arch ~]# uname -a
Linux arch 4.8.13-1-ARCH #1 SMP PREEMPT Fri Dec 9 07:43:17 CET 2016 i686 GNU/Linux
先月インストールしたものだと思いますが、ほぼ今回のBoticied lightMPDと同じレベルですから、この位だとそんなに極端な整合性の狂いは発生しないのではないでしょうか。
login as: root
root@192.168.0.5's password:
Last login: Tue Jan 10 12:28:26 2017 from 192.168.0.9
[root@alarm ~]# uname -a
Linux alarm 4.8.13-botic7-rc3 #4 PREEMPT Wed Dec 28 20:07:34 JST 2016 armv7l GNU/Linux
そうですね。大丈夫だと保証はできませんが。
まだまだ楽しみがつきませんね。
うまくいくといいなあ。
inthedark
すでにwinでの7zipでOKとのことなので良いのかもしれませんが、次の質問へのアンサーの方法でubuntu等でも中身をマウントできるようです。
http://unix.stackexchange.com/questions/113827/how-to-extract-files-from-uimage" target="_blank">http://unix.stackexchange.com/questions/113827/how-to-extract-files-from-uimage
具体的には、
tail -c+65 < uInitrd | gunzip > out
sudo mount -ro loop out /mnt
としました(最初のコマンドの+65あたりの意味は私は良くわかってません)。参考まで…
VmwarePlayerのubuntu環境で早速試してみました。
yo@ubuntu:~$ sudo mount /dev/sdb1 /mnt
yo@ubuntu:~$ tail -c+65 < /mnt/boot/uInitrd | gunzip > out
yo@ubuntu:~$ sudo mount -o loop,rw out mnt
yo@ubuntu:~$ ls mnt
bin dev home lib linuxrc mnt proc run sys usr var.rom
boot etc init lib32 media opt root sbin tmp var
となります。これはスマートでいいですね。-c+65はgunzipに渡す解凍用の情報なのですかね。
こうやってどんどん情報が集まってくるところが、ネットワークプロジェクトのいいところですね。
最近の一連の記事を拝見して、数年ぶりにBBBを持ち出して来ました(^^;
moctさんのArch BoticとyoさんのlightMPD Boticを交互に差し替えて聴いています。本当に、どちらも素晴らしいと思います。
ちなみに、DACは自作でTI(BB)社のDSD1794を使用したものなので最新のものではありませんが、私にはこれで充分です。聴く音楽がちゃんと楽しめていますので。工夫したところは、自作プログラムによるマイコンを搭載して、PCM,DSDの自動切換を行っているところです。
いつも何のお役には立てませんが、取りあえずお礼を申し上げたくて…。
BBB-Boticプロジェクトがお役にたったようで、なによりです。
僕がBBB-Boticで主に使っているハードはaitlaboの古いDACです。これはES9018Sと今となっては旧式のチップを使ったDACですが、暖かい音がするので気に入ってます。新しいチップを使ったハードも出ているらしいのですが、入れ換えるどうか、どうしたものかと思案しています。
Arch版とlightMPD版はそれほど大きい差はないと思いますが、お勧めはapuをお持ちなら、最新のlightMPDを使い、apuとBBBをデュアルで接続するUPnP方式です。これは耳に優しくて、とても良い音がします。
LightMPD BBB-Boticのイメージ公開有難うございました。BoticにHifiberry-dacを載せて、動作確認しました。いつでも電源をオフにできるLightMPDが使える事になり、嬉しく思います。ただ、Hifiberry-dacplus、Hifiberry-digi、Hifiberry-digi-proでは、動作しないようです。特別の設定が必要なのでしょうか?
Hifiberry-dacの動作報告ありがとうございました。linuxcomさんのブリッジ基板を使われたということでしょうか。
それで、
> ただ、Hifiberry-dacplus、Hifiberry-digi、Hifiberry-digi-proでは、動作しないようです。特別の設定が必要なのでしょうか?
分かりません。ブリッジ基板と接続されているのであれば、動きそうなものですが。
全てrpi用のi2s接続の合体型DACですよね。とすると関連するのはuEnv.txtのoptargs=文だけのはずです。
特にlightMPD固有の話ではないので、情報はmieroさんのサイトか
http://bbb.ieero.com/" target="_blank">http://bbb.ieero.com/
Boticサポート用のボード
http://www.diyaudio.com/forums/twisted-pear/258254-support-botic-linux-driver.html" target="_blank">http://www.diyaudio.com/forums/twisted-pear/258254-support-botic-linux-driver.html
にあるのではないかと思います。情報がなければ、ボードで質問するのが早いかと思います。
こんにちは。
今年に入ってからMPD 0.20がリリースされて、サンプルレートコンバータの指定方法が変わったこともあって試してみたいと考えています。従来のsamplerate_converterという指定の代わりにresamplerという記述になるようです。これに伴い、lightMPDでしか指定できなかったSoXにおけるマルチスレッドでのサンプルレート変換が出来るようになる由。
当方はデジチャンがシステムの核なので、VoyageMPD 0.10でDSD音源をPCMにダウンコンバート(176.4KHz/24bit)する運用スタイルとしていますが、MPD 0.20をこの環境で利用するためには、ソースからのコンパイルを行ってインストールする方法なのかなと思っています。
ソースコンパイルは未経験なので暗中模索、情報集めをしていますが、VoyageMPD環境では古い情報しから見当たらないようで、もうユーザーは大分減ってしまっているんだろうなとも推測しています。やはり、そろそろAPUベースのlightMPDに周回遅れでも移行すべきかとしばし躊躇しています。
サンプルレートコンバータ機能は使っていないので、申し訳ありませんが、あまりアドバイス出来そうにありません。
Voyage MPDは一年以上更新が止まっていますので、ちょっと古くなっていますね。Debianも一世代前のwheezyのままですし。最新のMPDをコンパイルするためのプラットフォームとしてはお勧め出来ません。
今、メイジャーな音楽ソフトはVolumioですが、ブラックボックス化が進んでいますので、MPDのコンパイルする目的には合わないと思います。またRaspberryPIがメインターゲットですから、x86系列が中心のゴンザエモンさんには向かないかもですね。音もそんなに良くないと思います。
SoCを試してみるというなら、BeagleBone Greenという、BB BlackからHDMI機能をとっぱらった機種がお勧めです。これをBoticised Arch Linuxで動かすというのが、只今、僕が熱中しているプロジェクトです。
Boticはイメージファイルは古い(3年前)のですが、作者がアップデートを続けていますので、debianを含めて最新版にすることは出来ます。音は良いです。音楽ディストリビューションとして、ゴンザエモンさんであれば、楽に付き合えるレベルではないかと思います。MPDの入れ換えは楽に出来ます。
APUは良いハードだと思いますが、使いこなしは大変ですね。Voyageがシリアルコンソールに対応しているので、一番使いやすい音楽ディストリビューションですが、上記した問題はあります。lightMPDの最新版(upnpgw)がお勧めですが、MPDのビルド用には開発環境は別に容易する必要があります。
MPDのビルドに関しては、捜せば、情報はいろいろありますね。僕のサイトにもあっちこっちに散在しています。ビルドする場合、ちょっと古い環境だと、GCCやライブラリのレベルを最新にするのに悪戦苦闘することになります。0.20以上でビルドするということであれば、ビルト環境を最新のカーネル、最新のディストリビューションを選択することをお勧めします。
>ビルト環境を最新のカーネル、最新のディストリビューションを選択することをお勧めします。
yoさんのおっしゃるとおりで
現状、APUはVoyage MPDをインストールして使うのは環境が古く勿体ない使い方だと思います。
ベースになっているdebianのデフォルトでインストールされるALSA,Kernelのバージョンも古く
最新 mpd をコンパイルする事が困難です(^_^;)
yoさんが何故 APU+Archlinux 環境を明示して薦めないのか?分からないのですが
x86環境で普通に使えるのでクロスコンパイルも容易で弄るには良い環境ではないかと思います。
ぶっちゃけてしまうと自分的にはAPUの最大の欠点は信号出力にUSBを使う所だと思っています。
それで最近、ゴンザエモンさんのUSBアイソレーターの記事を何度も読んで(^_^;)
APU + USBアイソレーター + DDS と
直接I2Sが出力出来るBeagleBone Green とか SDTrans384 と比べてどちらが良いかと情報を集めていますが
情報が足りなくて進むべき方向が見えない今日この頃です(笑)
アハハ。「良き友を悪の道に引きずり込んじゃいけない」の心です(^^;;;。
冗談はさておいて、やっぱりヘッドレスのArchLinuxはちょっと大変ですよね。そのあたりを何とかしようとして、「音楽用APU2c4にArch Linuxシステムを作る」を書いています。
悪の道かも知れません(^_^;)
mSATAカードArchLinuxインストール済みはclonezillaではクローンコピーで何枚でも作れる事は確認済みです。このツールを利用してバックアップデーターを配布出来ればこの素晴らしい環境を多くの人に体験して貰えると個人的には思います。配布サーバーとかどうするかとかmSATAのサイズによってはコピー出来ない場合もあるのでその辺が今後の課題です。個人的見解では間違いなく APU1C+Archlinux はVoyageLinuxより良い音が出るように思います。また、開発された新しいソースのテストベースとして難易度は高いかも知れませんが最適だと思います。ちなみにさっきmpd-0.20と0.21をコンパイルしてみましたが0.21はエラーが出てダメでした。0.20は出来たのですが設定が悪いのか?DSDの方は音を出すことが出来ませんでした。
いろいろと情報&アドバイス、ありがとうございました。希望としては現行のいろいろと電源系ノイズ対策を施したX86ベースのPCを使いたいと考えていました。一方、このプラットフォームを離れるとすれば、APUかなと思うのですが、APUの場合はlightMPDでマルチスレッド対応のSoXが既に使えるようになっていますのでこの方向が手っ取り早いのかもしれませんね。
なお、USBについてはyoさんも度々言及されておりますように現状のPCオーディオでは必要悪になってしまっているようにも感じています。I2Sが取り出せる環境、その後のDACでの受けを考えるとI2Sにもやはりハードルがありますので悩ましいところです。USBとSPDI/Fを使わざるを得ないという課題を一挙に解決してくれるのがDante Audio Networkだと思うのですが、こちらはまだまだ相当に高価です。プロ用なのでその点は多少は仕方がないのかな、とは思うのですが今後急速に製品選択肢が増えていくかもしれませんので、引き続きウォッチしていこうと考えています。
このバージョンでDSD-nativeも問題なく再生できる事を確認しました。
確認したPCはi5を積んだ普通のデスクトップに
Archlinuxをインストールしたものです。
再生音はAPU1Cに比べて低音域に馬力があってちょっと悔しくなります(笑)
あら、さくっとMPD 0.20.2動かしちゃいましたか、流石ですね!
x86ベースのArchlinuxはインストールしたことがないのですが、git版ということはapt-getでこのバージョンのMPDをインストール可能なのでしょうか。(Archlinuxはpacmanかな?)
前のスレッドでAPU1Cのインストール済みのバックアップを配布出来ないかな?と書いたのは
ハードが限定されるからレストアした時の成功率が高いと思ったからです。
普通のデスクトップでもCPUとLANのチップが大きく異ならなければ
他のPCでインストールしたHDを外して他のPCへ移植しても動作する可能性が高いので
その方向でも出来ないだろうかと...上手くいけば
多くの方々を悪の道へ引きずり込む事が可能だと考えています(笑)(^_^;)
本題に入ります。本日確認した限りではArchlinixのpacmanコマンドで
インストール出来るカーネルで対応済みのXMOSではDSD-nativeが可能な様に思います。
個人的には対応済みのカーネルが配布されていると思われますが
インストールから作業していないので断言は避けます(^_^;)
正しければ
mpdのgit版のコンパイルさえ乗り越えればArchlinuxでDSD-nativeが可能と思います。
> 希望としては現行のいろいろと電源系ノイズ対策を施したX86ベースのPCを使いたいと考えていました。
これは素直にJPLAYのaudioPCとして使うというのが良いのではないでしょか。JPLAYとlightMPD(upnpgw)を比較すると、ハードが同じ条件なら、JPALYの方が優位にあると思いますので。
僕がlinuxを使いだした理由はWindowsはMSの秘密主義で自由度が効かないからです。
音はWindowsServerであれば、マイクロカーネルなので、Linuxより良いと思っています。Windowsの音が悪いというのは、XPなどで操作性の向上と極度のGUI性能の重視のためにせっかく素性の良いOSを台無しにした結果生まれた神話ですね。
> APUの場合はlightMPDでマルチスレッド対応のSoXが既に使えるようになっていますのでこの方向が手っ取り早いのかもしれませんね。
だと思います。お勧めのSOCはBBGですね。ハードはI2S直結でUSBとオサラバするというのが正解かと思っています。別のスレッドでそのための大騒ぎをしています。
Dante Audio Networkの情報ありがとうございます。調べてみますかね。
yoさんと張り合うつもりもないのでこの辺で引っ込みます。
ただ、一つ思っているのはOSで音が決まると言うよりも使えるドライバーの質で
音が決まると思います。
WindowsServerでさえもAudiophileOptimizerを使えば音質が向上するという事は
linuxでもチューニング次第では更なる向上が望める?のでは無いかと思います。
BBB,BBGは導入を検討したんですがハード周りが特殊で初心者向きでは無いように思われたので
止めた経緯があります。
当方はUbuntuやVoyageMPD等はメインのデスクトップPCでインストールや設定を行った後、そのシステムディスクを音楽再生用のPC(ヘッドレス)へ持って行って接続し使用しています。あまり難しく考えずに普通にやっていました(笑) Archlinuxでも同様のことは問題なく出来るんじゃないでしょうか。
yoさん
PCM音源をそのまま再生する場合であればJPLAYの優位は認めるところですが、Dual PC構成を含むPC関連のメンテナンスの問題やJPLAY Streamer+Minim Server+リモコンソフト(Kinskyなど)という全体としての使い勝手の悪さという面もあってAll-In-Oneであるmpdにもまだまだ充分対抗できる良さがあるかな、と思っています。
特に当方の環境ではデジチャンにPCM入力する都合上、DSD音源のダウンコンバートの仕組みは不可欠なのですが、JPLAY(実際はMinim Server)で使用しているffmpegに比すするとmpdにおけるSoXでのサンプルレート変換の方が好ましく感じられたという背景事情もあります。
Danteについては自宅でそこそこテストをしてとても良い感触を持っています。プロの世界では急速に広まっているようですが、家庭において単に音楽再生用途とするにはオーバースペックなところがありそれが価格にも反映されてしまっているところがちょっと辛いところかもしれません。(安価なPCオーディオとはいきませんので、、、)
komaさん、yoさん
貴重なるアドバイスなどたくさんいただき大変ありがとうございました。
am335x-boneblack.dtbを入れ換えるのはちと乱暴かなと思いましたが、「作者公認の方法ならまあいいか」と考え、試してみました。moctさん、情報ありがとうございました。
以下は僕の VmWare Player Ubuntu12.04 環境での操作です。
まず、4GBのマイクロSDをセット。VmWare Player に取り込みます(/dev/sdb)。
最新版のArchLinuxをマイクロSDカードにインストールします。ホームディレクトリで操作しています。
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=8
sudo fdisk /dev/sdb
n -> default... -> p -> w
sudo mkfs.ext4 /dev/sdb1
mkdir mnt
sudo mount /dev/sdb1 mnt
wget http://os.archlinuxarm.org/os/ArchLinuxARM-am33x-latest.tar.gz" target="_blank">http://os.archlinuxarm.org/os/ArchLinuxARM-am33x-latest.tar.gz
sudo bsdtar -xpf ArchLinuxARM-am33x-latest.tar.gz -C mnt
sync
sudo dd if=mnt/boot/MLO of=/dev/sdb count=1 seek=1 conv=notrunc bs=128k
sudo dd if=mnt/boot/u-boot.img of=/dev/sdb count=2 seek=1 conv=notrunc bs=384k
sync
次にBoticの最新版カーネルをrt化したディレクトリの下のワークディレクトリ(linux-dev-botic7-v48/deploy/disk/)に移動し、手作業でboticize化します。deployにはビルドしたアーカイブが作成されています。deploy/disk/はインストール用のワークディレクトリです(Nelsonさんスクリプトで自動的に作成されています)。
cd linux-dev-botic7-v48/deploy/disk/
sudo cp ../../../mnt/boot/zImage ../../../mnt/boot/zImage.org
sudo cp ../4.8.13-rt6-botic7-rc3.zImage ../../../mnt/boot/zImage
tar -zxvf ../4.8.13-rt6-botic7-rc3-modules.tar.gz
sudo cp -av lib/modules/* ../../../mnt/lib/modules/
rm -rf ./*
tar -zxvf ../4.8.13-rt6-botic7-rc3-firmware.tar.gz
sudo cp -av ./* ../../../mnt/lib/firmware/
rm -rf ./*
tar -zxvf ../4.8.13-rt6-botic7-rc3-dtbs.tar.gz
sudo cp -av ./* ../../../mnt/boot/dtbs/
rm -rf ./*
am335x-boneblack-botic.dtbをam335x-boneblack.dtbに変身させます。am335x-boneblack-botic-sabre32.dtbじゃないと駄目という方は読み替えて下さい(ここでやらなくても、実機で出来るはずです)。
cd ../../../
sudo cp mnt/boot/dtbs/am335x-boneblack.dtb mnt/boot/dtbs/am335x-boneblack.dtb-org
sudo cp mnt/boot/dtbs/am335x-boneblack-botic.dtb mnt/boot/dtbs/am335x-boneblack.dtb
uEnv.txtにboticドライバのパラメータをセット。ちなみに coherent_pool=1M行はかなり以前のバグ対応のための記述で、今では不要だと思います。僕のサイトのあっちこっちに情報があります(http://mimizukobo.sakura.ne.jp/articles/articles014.html#030" target="_blank">http://mimizukobo.sakura.ne.jp/articles/articles014.html#030 とか http://mimizukobo.sakura.ne.jp/articles/articles013.html#001" target="_blank">http://mimizukobo.sakura.ne.jp/articles/articles013.html#001)。
sudo nano mnt/boot/uEnv.txt
#optargs=coherent_pool=1M
optargs=snd_soc_botic.ext_masterclk=3 snd_soc_botic.serconfig=MMMM snd_soc_botic.dsd_format_switch=3
ついでにMPD関連のセットアップに必要ファイルをコピーしておきます。
sudo cp mpd.conf mnt/etc/
sudo cp 0008-native-DSD-u32le.patch mnt/root/
sudo cp mpd-0.19git-rtopt20140327.patch mnt/root/
終了の呪文です。
sync
sudo umount mnt
作成したマイクロsdカードをbbbに差して、起動します。
以下、超はやわかりのArchLinux入門。
ログイン名 alarm、パスワード alarm です。
su -
で root になれます。バスワードも rootです。
ディフォルトではrootでsshログイン出来ないので、設定ファイルを変更。その前に
pacman -Syy
これは debian のapt-get updateと同じですから、必ず行う必要あり。
rootでログイン出来るよう設定ファイルを変更。
nano /etc/ssh/sshd_config
PermitRootLogin yes
MPDをrt化するためには、MPDをビルドする必要があります。
最新版 boticized Arch linuxでのmpdのビルド仕方。
関連するパッケージのインストール(pacman -S)。
pacman -S cifs-utils nfs-utils ntfs-3g
pacman -S alsa-plugins alsa-utils alsaplayer
pacman -S mpd mpc ncmpc
mkdir /music
nano /etc/fstab
音楽用nasの自動マウント設定
nano /etc/mpd.conf
mpdの設定
ln -s /music /var/lib/mpd/music
コンパイルに必要なパッケージをインストール。
pacman -S git make autoconf automake libtool pkg-config patch unzip
pacman -S gcc boost wget
あとはパッチをかけて、autogen、configure、makeする。やり方はdebianなどといっしょです。
最後にsystemdの設定の確認とmpdスタート。
nano /lib/systemd/system/mpd.service
systemctl status mpd
systemctl start mpd
音は素晴らしいです。ArchLinuxはオープンソースですので、是非公開してあげて下さい。
多分、同じ手口で BBB版のLightMPDやRuneAudioのBoticized化が出来ると思います。ブート構成が同じなので。
と書きましたが、そんなに甘くないですね。botic7以上(linux 4.x)ではどちらもカーネルのビルドが通りません。linux3.0ではRuneAudioはビルドが通り、起動後も出来て、Boticドライバも構成されますが、何故か使えません。lightMPDの場合、カーネルのビルドを通すにはソースの修正が必要です。その後の状況は同じような感じです。というわけで、今のところどちらもあと一歩というところですが、うまくいきませんね。まあカーネルのレベルがかなり異なりますので、しかたがないかなと思います。
こちらはあまりこだわりはないので、諦めますかね。一応、RuneAudioでの手順を残しておきます。
あらかじめ RuneAudioを立ち上げ
zcat /proc/config.gz > config-rune
でconfigをgetしておきます。
wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.18.7.tar.xz
wget ftp://ftp.kernel.org/pub/linux/kernel/projects/rt/3.18/older/patch-3.18.7-rt1.patch.gz
tar -Jxvf linux-3.18.7.tar.xz
cd linux-3.18.7
下記のurlにある am335x-pm-firmware.bin をgetし、firmwareにコピー(情報はこの掲示板にあります、検索してみて下さい)
http://arago-project.org/git/projects/?p=am33x-cm3.git;a=blob;f=bin/am335x-pm-firmware.bin;h=571d377dc50cc7bb8258facec8948b86b8025248;hb=HEAD" target="_blank">http://arago-project.org/git/projects/?p=am33x-cm3.git;a=blob;f=bin/am335x-pm-firmware.bin;h=571d377dc50cc7bb8258facec8948b86b8025248;hb=HEAD
cp ../am335x-pm-firmware.bin ./firmware
gzip -dc ../patch-3.18.7-rt1.patch.gz | patch -p1
cat ../botic-patch/* | patch -p1
cp ../config-rune ./.config
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- -j3 LOADADDR=0x80008000 zImage dtbs
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- -j3 modules
sudo cp arch/arm/boot/zImage ../root/boot/
sudo cp arch/arm/boot/dts/am335x-bone* ../root/boot/dtbs/
sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=../root modules_install
記事毎回楽しく拝見させていただいております。
yoさんはlightmpdのboticizedも挑戦されているということで
同じことをやってみようとチャレンジしてみたました。
(1)http://repo.ieero.com/botic/pool/main/l/linux-upstream/linux-upstream_4.8.13-botic7-rc3.orig.tar.gz" target="_blank">http://repo.ieero.com/botic/pool/main/l/linux-upstream/linux-upstream_4.8.13-botic7-rc3.orig.tar.gz
をダウンロード
(2)kernelのソースにあるomap2plus(defconfig)でコンパイル
(3)出来上がったzImageとam335x-boneblack-botic.dtb
(これは、am335x-boneblack.dtbにリネーム)をlightmpd(BBB
版)のものと入れ替える。
私のところにはBBGがありますのでそれで起動すると見事に起動は確認できました。ただ、BBGにのせるi2sdacを持ってませんの
で、音出しができるかどうかはわかりません。
uEnv.txtはbotic再生用のものは追加してません。が
起動メッセージに
asoc-botic-card botic: using 'default' pinconfig
asoc-botic-card botic: botic-hifi <-> 48038000.mcasp mapping ok
asoc-botic-card botic: 48k ext, 44k1 ext, use format switch
ALSA device list:
#0 Botic
と言った内容が確認できます。
音が出るんでしょうか?それともyoさんは確認済みかもしれ
ませんが、そのときはすいません。
あと私は以上のビルドツールとしてbuildrootを使用しております。
inthedark
> 音が出るんでしょうか?
起動は出来て、cat /proc/asound/cards でハードは認識されていますが、音は出ていません。
ただし、上記したように、linux 3.xでの確認です。4.xではビルドが途中でエラーになり(mieroさんのgithubのソースを使っています)、そこで諦めています。
inthedarkさんが4.xでOKだったということであれば、こちらでも同じ条件で追試してみようかなと思います。
それで質問ですが
> (2)kernelのソースにあるomap2plus(defconfig)でコンパイル
というのは
./linux-upstream/arch/arm/configs/omap2plus_defconfig
を使って、makeしたという意味でしょうか。
> ./linux-upstream/arch/arm/configs/omap2plus_defconfig
を使って、makeしたという意味でしょうか。
おっしゃるとおりです。
lightmpd BBB版のconfig.gzを使ってビルドできれば一番いいの
ですが私のところでは途中でエラーとなりビルドできません。
それならビルドが通るものをということでomap2plusをベースに
やったらできるのではとやってみたらあっさりビルドできたという顛末です。
以下に私がビルドした上での注意点や、menuconfigで設定した
ことを記述しておきます。
lightmpdはご存知かもしれませんがromfsという仕組みを
使ってます。これを考慮してビルドしないとlightmpdでは起動できません。この点を注意していただければあとはmenuconfig
を好きなようにいじってビルドしていただければ結構です。
今回の私の目的はとりあえずlightmpdが起動できるものを目指
しております。
それとrt化するために
patch-4.8.14-rt8.patchを
dsd ノイズ対策のために
native-dsd-noise-linux-4.08.patchを
当ててビルドしました。
(1)Enable loadable module supportのチェックをはずす。
lightmpdのBBB版はモジュールを使わずカーネルにすべて
とりこんでいるからです。
(2)Kernel Features
Preemption ModelをFully Preemptible kernel(RT)に
Timer frequency(1000Hz)にする。
これは元のlightmpd BBB版と同じです。
(3)Networking support
Networking optionsのIP :DHCP supportと
The IPv6 protocolのチェックをはずす
これもlightmpd BBB版と同じです。
あとBluttooth関連やWirelessも使わなければチェック
を外しておくとよいでしょう。その辺は環境にあわせて
(4)Device Drivers-->Generic Driver Options
(am335x-pm-firmware.bin)External firmware blobs to
build into the kernel binary
私が利用しているソースではfirmwareにam335x-pm-firm
ware.binが存在してますのでわざわざコピーする必要は
ありません。
(5)Device Drivers-->Sound card support
Advanced Linux Sound Architectureで以下のものの
チェックをはずす
OSS Mixer API OSS , PCM (digital audio) API
Support old ALSA API , Generic sound devices
これはlightmpdのBBB版のまねです。BBB版はusbdacしか
念頭においていないためi2sdacでは必要になるものも
あるかもしれませんので、そのへんはおまかせします。
usbdacを使わないのであればUSB sound devicesもチェッ
クをはずしておかれるとよいでしょう。
(6)上記(5)と同じ場所にある
ALSA for SoC audio support
--> Botic on BeagleBone Blackにチェックを入れる
-->CODEC drivers
--> Botic CODEC にチェックを入れる
(7)File systems --> Miscellaneous filesystemsで
以下のものにチェックをいれる
Compressed ROM file system support(cramfs)(OBSOLETE
ROM file system support
これが肝です。
(8)上記(7)と同じ場所にあるNetwork File Systemsで
NFS関連は最初からチェックが入っていましたがCIFS
を使われるかたはチェックを忘れずに。
(9)同じく上記(7)と同じ場所にある
Native language supportでutf-8を使われるなら
(utf-8) Default NLS Option
NLS UTF-8にチェックを
念の為 Japanese charasets(shift-JIS,EUC-JP)にも
チェックを入れておいたほうがよいでしょう。
以上が私がビルドしたmenuconfigの概要です。
あとははじめに書いた作業をしてlightmpdを起動すると
私のところでは特段エラーもなく起動いたします。
(私はシリアルコンソールで確認しております。)
nfsのマウントも、mpdもOKです。なんのエラーも出ておりません。あとはyoさんの環境で音が出るかですね。
以上 ご参考にしてください。
inthedark
先程の記述の中の訂正です。おわかりになるとは思いますが
念のため
(5)
OSS Mixer API OSS , PCM(digital audio) API (誤)
OSS Mixer API ,OSS PCM(digital audio) API (正)
inthedark
とりあえず試してみたいということでしたら私のビルドした
zImageとam335x-boneblack.dtbを差し上げます。
お気軽におっしゃってください。
(one driveで共有する方法でやってみたいと思います。)
inthedark
私がビルドしたzImageとam335x-boneblack.dtbを差し上げた方
から朗報です。とりあえずlightmpdからの音出しを確認したそうです。とりあえずよかったです。私は聴けませんが。
inthedark
問題なくカーネルをビルドし、BBBから起動させることが出来ました。
cat /proc/asound/card0...で内容を確認しましたが、正しく認識されているようです。起動のメッセージもinthedarkさんの環境と同じ内容で出力されています(シリアルコンソールで確認)。とここまでは、うまくいったのですが、そんなに甘くはないですね。
nas(cifs)の認識が出来なくなります。入れ替え前の非boticizedカーネルでは正しく認識されていましたので、boticizedカーネルに問題があるようです。関連するカーネルパラメータはlightmpdコンフィグに合わせてあるので不思議です。
inthedarkさんの環境だと、nfsは問題なく認識され、USB音源で音も出せているのでしょうか。
とりあえず、コンフィグを下さい。よろしくお願いします。
上記アドレスにアクセスしてください。.configがあると
思います。はじめてやりますんでダウロードできなければ
その旨おっしゃってください。
私の環境で音出しは確認しておりませんが、私の知り合いが
音出しまで確認しております。その方がcifsかnfsかは聞いて
みないとわかりません。私の環境はnfsなんでマウントは確認
しております。lightmpdではnasをマウントできないと起動
できませんので。
知り合いに確認しましたところcifsでlightmpdboticの音出し
をされたそうです。
inthedark
これでダウンロードしてください。
inthedark
結果はなんとうまくいきました。音が出ました。
原因はこれから考えます。
音が出たということでよかったです。私と知り合いだけの妄想
ではなかったわけで安心しました。
これをたたき台に、自分の好みの音が出るように仕上げていた
だければと思います。
inthedark
rtパッチの有無です。僕の環境では有なら認識できて、無だと認識できません。
「何故だ」と問われると、「不思議ですね」という返事になるのですが、変ですねぇ。
逆なら、「パッチの問題でしょ」と説明が出来るのでが、有りだとOKとは。
inthedarkさんの環境でrtパッチ無でnasは認識できましたか。
lightMPDのイニシャル処理って、lisp言語みたいなスクリプトを使っているのですね。
これって、かなり遅そうだから、そのあたりが関係しているのですかね。
しかし、lightMPDって、Boticized化しても、尖った音をしているというのは面白いですね。
> しかし、lightMPDって、Boticized化しても、尖った音をしているというのは面白いですね。
確かに興味深いですね。カーネルを変えただけではlightmpdは
その特性を失わない、といった感じでしょうか。
> inthedarkさんの環境でrtパッチ無でnasは認識できましたか。
これは時間があればやってみたいと思います。
inthedark
inthedarkさん はじめまして
ダウンロードさせていただき昨日から使わせていただイております。ありがとうございます。
> しかし、lightMPDって、Boticized化しても、尖った音をしているというのは面白いですね。
ざあっと聴いた印象ですが、思ったよりざわざわした感じがします。ArchやJessieと比べると静かになり切っていないのが尖った音の原因かななどと考えてしまいます。mpdも19.10から19.20の間で大きく2.5回ぐらい音が変わった印象があるので最新版でも聴いてみたいところです。
まず、うまくnas mount出来ているrtカーネル(inthedarkさんビルドのもの)
lightmpd login: root
# uname -a
Linux lightmpd 4.8.13-rt8-BBG.botic.mpd-00128-g46e67de-dirty #1 SMP PREEMPT RT Tue Jan 10 16:31:58 JST 2017 armv7l GNU/Linux
# ls /var/lightMPD/nas/
NASID2
# ls /var/lightMPD/etc/
default mpd.conf network samba
lightmpd.conf nasmount.log ntp.conf sysctl.conf
localtime nasmount.sh resolv.conf timezone
# nano /var/lightMPD/etc/nasmount.sh
# nasid:NASID2
-------
mkdir /var/lightMPD/nas/NASID2
mount -t cifs -o user=yo,pass=,wsize=65536,file_mode=0644,dir_mode=0755,iocharset=utf8....
# nano /var/lightMPD/etc/nasmount.log
-------
[ Read 0 lines ]
エラーメッセージはありません。
次に、nas mount出来ない非rtカーネル(僕が昨日inthedarkさんのコンフィグをベースにビルドしたもの)
# uname -a
Linux lightmpd 4.8.13-BBG.botic.mpd-00128-g46e67de-dirty #6 SMP PREEMPT Tue Jan 10 21:20:20 JST 2017 armv7l GNU/Linux
# ls /var/lightMPD/nas/
# ls /var/lightMPD/etc/
default mpd.conf ntp.conf sysctl.conf
lightmpd.conf nasmount.log resolv.conf timezone
# nano /var/lightMPD/etc/nasmount.log
-------
sh: can't open '/var/lightMPD/etc/nasmount.sh'
エラーメッセージを出力した元のスクリプト(初期設定時にrun)
# nano /etc/init.d/S61netmount
-------
#!/bin/sh
#
# nas mount
#
case "$1" in
start)
echo -n "NAS mount "
sh /var/lightMPD/etc/nasmount.sh > /var/lightMPD/etc/nasmount.log 2>&1
echo "OK"
;;
stop)
以下略
次にnasmount.shを生成している元のスクリプトを捜す。
# ls /var/lightMPD/bin
irqhandler.scm setaffinity.scm setup.sh syssetup.log
mpd setmpdmask.scm statusout.sh syssetup.scm
この中のsyssetup.scmというスクリプトがnasmount.shを生成しているようです。
非rtカーネルだとsyssetup.scmがうまく動いていないように見えます。syssetup.logで確認。
ちなみにnone boticizedのオリジナルのlightmpdはrtカーネルですから、ひょっとすると、lightMPDの潜在バグかもしれません。
詳細な考察ありがとうございます。
私はプログラムの知識があるわけではないのでコメントできません。笑
しかし、digififanさんがrtカーネルにこだわる理由の一つが
そういったところにもあるのかもしれませんね。
それに、カーネルだけ新しくするというのも問題があるのかも
しれません。ルートファイルシステムも含めてやはり新しく
した方がすっきりすると思います。
bbb用のlightmpdは久しくバージョンアップされてませんが、
今後に期待したいところですね。(digififanさんは本業が
お忙しいそうでlightmpdに割く時間が限られているみたいな話
をされてますし。)
moctさん
はじめまして。
カーネルのコンパイルなどlinuxを表面的にですがいじるのを
趣味としてますので、その一環で今回lightmpdBBB版のboticized
をやってみただけです。音の評価は人それぞれですので正解は
100人いれば100通りあっていいくらいに思っております。
第一、私自身がbbgのi2sの音を聴ける環境にありませんので
コメントできません。笑
linuxは色々なディストリがあり、ノーマルのままでも使い勝手
がよいのでカーネルのコンパイルすらしたことがないという人
が多いと聞きます。やってみたらこんなに面白いのに。
今回、詳細なカーネルコンフィグの設定について書いたのも
これをきっかけにカーネルいじりに興味をもってもらえたら
という思いもちょっとですが込めております。
(私が逆に色々教えてもらいたいくらいです。)
yoさんのこのサイトがまたどんどん盛況になっていってもらえ
れば私も一読者としてこんなにうれしいことはありません。
inthedark
おお yoさんlinuxに帰って来ていたのですね。嬉しいです。
デュアルブートでお世話になって以来Archlinuxが気に入って
チューニングをずっと続けていました。
ブログを読みました。
既に実施済みであれば申し訳ないですが
dop方式でのDSD再生時に発生するノイズに関して
lightmpdサイトの管理人様が作成されたパッチと
DSDネィテブ再生パッチを適応すると嘘の様に消えます。
XMOS使用のDDCしか使えない事とDDCによっては消えないものもあるようですが...
(自分はDIYINHK Isolated XMOS DSD DXD 384kHzを使用しています。)
https://doc-04-5g-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/5pleh32tnl0pkq7q3olmaeliet3h7epd/1479960000000/01527230413689151241/" target="_blank">https://doc-04-5g-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/5pleh32tnl0pkq7q3olmaeliet3h7epd/1479960000000/01527230413689151241/*/0B6wqcK_p4l0RTFo3Uy0zY1prcm8?e=download
native-dsd-noise-kernel.patch
https://github.com/lintweaker/xmos-native-dsd" target="_blank">https://github.com/lintweaker/xmos-native-dsd
xmos-native-dsd-master.zip(この中から使用するmpdに合ったパッチを使う)
まあ、DSDの再生がDoPで無くなるのでノイズが消えるのかも知れません(^_^;)
このnative-dsdパッチを適応するとCPUの負荷も減りDATA量も減少するので
WindowsのASIO2ドライバーにやっと追いついた?様な気がしています。
DSD再生のノイズの件は謎だらけですね。最近、DSDネイティブ再生対応のB3D-A4495というBBBにi2s接続で二段重ねのDAC基板をgetしたので、いろいろ試しているところです。Boticで動かしています。dopモードではノイズは発生しませんが、nativeモードではノイズは残っています。Boticのlinuxはかなり古い版(3.n)ですが、それでもdopでノイズレス対応になっているのは、パッチがあたっているということですかね。音は似たようなものですが、やっぱりnativeモードの方が良いように感じます。
あと、Boticをlightnpd/upnpgwと組み合わせて、UPnP対応させることが出来ると分かったので、試しています。この場合はdop再生だけが可能なようですが、ノイズレスで、音もなかなかいいです。
欧米で、APUって、音楽用にどの位使われているのですかね。「apu pc engines music」で検索をかけても、欧米で音楽を聴くのにapuを使っている人はほとんど無さそうです。韓国もシンさんが休眠中になっちゃったから、可能性は低そうですね。日本はlightmpd作者のデジファイさんがi2sに興味をもってもらえると、可能性はありそうですが。
参考になるかも...
ようやく、デジファイのおとさんのパッチの在り処が分かりました。
https://groups.google.com/d/msg/lightmpd/Fcu6kay-99c/nIUZAsFVEAAJ" target="_blank">https://groups.google.com/d/msg/lightmpd/Fcu6kay-99c/nIUZAsFVEAAJ
にあるわけですね。
これを使えばネイティブ再生とノイズ対策が出来るというわけですか。
lintweakerさんのパッチの在り処は知っているのですが
https://github.com/lintweaker" target="_blank">https://github.com/lintweaker
どれを適用すればいいのかよく分かっていなかったのですよね。
試してみようかと思います。
必要なパッチを準備する
cp /mnt/native-dsd-4.4.6-20160502.patch ./
cp /mnt/native-dsd-noise.patch ./
cp /mnt/0008-native-DSD-u32le.patch ./
wget wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patch-4.8.11-rt6.patch.gz" target="_blank">https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patch-4.8.11-rt6.patch.gz
Boticとlinux4.8.13のソースを展開
wget https://github.com/miero/linux-dev/archive/botic7-v48.zip" target="_blank">https://github.com/miero/linux-dev/archive/botic7-v48.zip
unzip botic7-v48.zip
cd linux-dev-botic7-v48/
BoticはNelson版を使ってカーネルを管理しているので、そのままビルドするのが簡単です。
./build_kernel.sh
menuconfigでストップさせ、パッチをかける。
cd KERNEL/
gzip -dc ../../patch-4.8.11-rt6.patch.gz | patch -p1
patch -p1 < ../../native-dsd-4.4.6-20160502.patch
patch -p1 < ../../native-dsd-noise.patch
cd ../
ビルドを再開
./tools/rebuild.sh
menuconfigでrtカーネルを指定
終わったら、Botic4をインストールしたマイクロSDカードをセット
SDカードが/dev/sdcであることを確認する
nano system.sh
MMC=/dev/sdc
./tools/install_kernel.sh
これでBoticドライバ付きのDSD-native再生対応RTカーネルに入れ換えられます。
root@botic:~# uname -a
Linux botic 4.8.13-rt6-botic7-rc3 #2 PREEMPT RT Wed Dec 21 20:09:26 JST 2016 armv7l GNU/Linux
同じ要領でarchlinuxでもできるはずだから、これはいいですね。
alsaドライバーを使った場合192KHzまでI2S出力が出来て
DSD 5.6MHzまでDSD-native出力可能で実用になるって事でしょうか(^_^;)
ちょっと羨ましい....
MPDのビルドも試してみました。こちらはgccのバージョンとか、lintweakerさんのパッチのgetとかで悪戦苦闘しました。
apt-get install autoconf automake curl libtool gcc gcc++ libboost-all-dev
apt-get install build-essential flex bison gdb libicu-dev libglib2.0-dev unzip
apt-get install libid3tag0-dev libavformat-dev libavcodec-dev libavutil-dev libsystemd-daemon-dev
apt-get install libcurl4-openssl-dev libasound-dev libFLAC-dev libmpcdec-dev libav-tools
apt-get install gcc-4.7 g++-4.7
wget --no-check-certificate https://github.com/lintweaker/mpd-dsd-019/archive/master.zip" target="_blank">https://github.com/lintweaker/mpd-dsd-019/archive/master.zip
unzip master.zip
cp /data/sdd/CD/0008-native-DSD-u32le.patch ./
cp /data/sdd/CD/mpd-0.19git-rtopt20140327.patch ./
cd mpd-dsd-019-master/
cp 0001-This-patch-extends-native-DSD-support-for-MPD-0.19.19.patch ../
wget http://www.musicpd.org/download/mpd/0.19/mpd-0.19.19.tar.xz" target="_blank">http://www.musicpd.org/download/mpd/0.19/mpd-0.19.19.tar.xz
tar -Jxvf mpd-0.19.21.tar.xz
cd ../mpd-0.19.19
patch -p1 < ../0001-This-patch-extends-native-DSD-support-for-MPD-0.19.19.patch
patch -p1 < ../0008-native-DSD-u32le.patch
patch -p1 < ../mpd-0.19git-rtopt20140327.patch
./autogen.sh
nano ../myconfig
内容は省略しますが、次の通りgcc4.7とgcc++4.7を明に指定するのがポイントです。
CC=gcc-4.7 CXX=g++-4.7 \
make && make install
実機でやると2時間以上かかります。
nativeと
dsd_usb "no"
dsd_native "yes"
dsd_native_type "3"
dopの
dsd_usb "no"
# dsd_native "yes"
# dsd_native_type "3"
両方で再生出来ます。
dopではノイズレスです。nativeはノイズは残っていますが、大分軽くなったかなというところ。
mpd.confのdopの指定はrpiの時と異なるのですが、何故ですかね ?
その他いくつか謎は残りますが(^^;;;、このrtカーネルでの音は素晴らしいです。
Combo386のパッチをプラスして再度コンパイルしてみました。
※ native-dsd-4.4.6-20160502.patchは当てなかったというか当たらない(^_^;)
$ uname -a
Linux alarmpi 4.4.39-v7+ #1 SMP Sat Dec 24 12:09:49 JST 2016 armv7l GNU/Linux
patch -p1 < 0001-usb-Add-native-DSD-support-for-Amanero-Combo384.patch
patch -p1 < native-dsd-noise.patch
これでコンパイルしてDSDを再生してALSAのステイタスは
--------------------------------------
カード 0: snd_rpi_hifiberry_dac],
access: RW_INTERLEAVED
format: S24_LE
subformat: STD
channels: 2
rate: 176400 (176400/1)
period_size: 16384
buffer_size: 65536
--------------------------------------
カード 1: Combo384
access: RW_INTERLEAVED
format: DSD_U32_LE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100
--------------------------------------
こんな感じになりました。mpd.conf は
audio_output {
type "alsa"
name " HifiBerry DAC"
device "hw:0,0"
mixer_type "software"
mixer_control "PCM"
# dsd_usb "yes"
# dsd_native "yes"
# dsd_native_type "2"
dop "yes"
}
audio_output {
type "alsa"
name "Combo384 Amanero"
device "hw:1,0"
mixer_type "disabled"
dsd_native "yes"
dsd_native_type "3"
}
残念ながら音質はAPU1Cに及びません(悲)
調子に乗ってDeskTop環境を入れると音がまともに出なくなります(笑)
肝心のDSD再生時のノイズですが曲飛ばしや曲間、いずれもまったく発生しません。
もしかしてパッチはXMOS関連の出力にしか効果がないにかも知れませんね?
多分、ということなのだろうと思います。ただ BBB-DAC I2S直結でも、ぜんぜん効いてないわけでは無いようで、ガンショットレベルの音が消音器付き位の音には変わります。
Combo384と最新XMOSチップ搭載のDDC基板(f-1)はもっているのですが、繋ぎ直すのが面倒なので、確認出来ていないのですよね(^^;;;。Capeがもう一台あれば簡単に出来るようになるので、getしますかね。
BBG + rtBotic の音は相当なものですね。apu + lightmpd UPnP接続 とほぼ互角です。クリアですが、楽器の実在感のする響きになりますね。
Boticを arch linux ベースに出来ないかといろいろやっているのですが、上手くいきませんね。ARM系SoCのブートの仕組みのややこしさに翻弄されていますです(^^;;;。
ずっとBoticだけを使い続けてきました。
先の記事を参考にさせていただきなんとがrtカーネルをビルドしました。
素晴らしですね!。
最近mpd020(git)をビルドしようとしたらC++14が必要とかいわれたのですがDebianWheezyにははいりません。そこでJessie版を作ってみました。音が全然違います、というより大進化します。実に静かさを感じるような音で、音が消えて行く時どこまでも聴こえそうな気がすることと音のない空間の静けさみたいなものを感じます。更に、立ち上がりが良くなったという天井が広くなったというか、大太鼓一発でびっくりするような音が出てきます。ただ、少しきつめな感じでしたが、rtカーネルにしたらそれにスケールの大きさとマイルドさが加わり実に素晴らしです。
調子にのってUbuntu版も作ってみましたが、これはもっさりとした感じと少しゴミゴミした感じがあってやっぱりなあでした。不要プロセスをどんどん切っていくとこれは、化けます。静粛性はJessie版と比較すると少し落ちますが、音の厚さと音そのものの自然さがこれはこれで良いんじゃないかと思えます。
rtカーネルにしたら更にスケールが大きくなり、一方で非常に細かいところまで見通しが良く今まで一番じゃないかなと思っています。
https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04.1-minimal-armhf-2016-09-17.tar.xz" target="_blank">https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04.1-minimal-armhf-2016-09-17.tar.xz(母艦の方でダウンロード)
解凍しマイクロSDカードにリストア後、BBGに刺し込み起動
sudo su
rootのパスワード設定と、rootログインの設定
git clone https://github.com/miero/boticize.git" target="_blank">https://github.com/miero/boticize.git
cd boticize
スクリプトを走らせますが、注意事項はレポジトリの追加をしないことと、Boticカーネルを入れないことです。
vi 02-install.sh
最後の3行(botic関係)を削除
./02-install.sh
./03-enablepm.sh
./04-customsw.sh
cd../
mpdをインストール
apt-get install mpd mpc
手作業でrtカーネルをコピーし、/boot/uEnv.txtを編集し再起動すれば、mpd0.19.12で音がでるはずです。
mpdのビルドですが、jessieの場合libaudiofile-devとlibroar-devを入れるとエラーが出て手を焼きましたがubuntuでは全く障害なく終わりました。
mpd.confの編集とsystemdで起動設定。
最後の仕上げにsysv-rc-confで不用なプロセスを切りまくって下さい。再起動して完成です。
書き物の合間にできるかなと気楽な感じで始めましがびっくりするぐらい簡単に出き上がってしまいました。
sysv-rc-confでこれだけ効果がでるのもはじめてでこれも驚きでした。
ブリッジ基板は僕も使っています。ハンダ不要でI2S接続出来るので、お勧めですよね。外部クロックを入れて、音質改善を図るということも可能です。そのあたり、そのうち「I2S接続の世界」で紹介するつもりです。
Botic は miero さんが孤軍奮闘でサポートしているという感じでしたが、Volumio2に組み込まれたとは朗報ですね。ただ、Volumioって音の評判はいまいちだから、どうですかね。
DebianのJessie版はどのように作成されましたか ? BoticGoitHubにある install_kernel.shはBotic用に書き換えられていると思いますますが、Nelsonさんオリジナルのものに入れ換えられたのでしょうか。それとも手修正されたのでしょうか。また、BoticはuEnv.txtが二つあるという変な構成になっていますが、そのあたりどう対応されましたか ?
いきなり質問ばかりですみません。arch版を作ろうと悪戦苦闘(^^;;;しているところなもので。
boticをお使いの方のサイトで音色の話題などが出た時、話が全然合わないので、もしかしてと思いmpdのバージョンを尋ねたところmieroさんのイメージに入ったのを使っている方だけでした。私がmpd0.19.15を使用中と書き込んだところ、使いたいとの方がおり現在イメージとmpdのバイナリを公開しています。スキルが無いので問題が出まくっていますがなんとか音は出ますので使っていただいています。裾野は広がっているようですが、情報が非常に乏しくて私のようなものでも少しはお役に立てるならと恥を忍んでやっています。
せっかくなのでrtカーネルも公開しようと思っています。こういう素晴らしもはぜひ多くの方に使っていっていただきたいです。
/boot/uEnv.txtが有効で、/にあるのは使っないようです。
/の方のコメントです。
##These are needed to be compliant with Angstrom's 2013.06.20 u-boot.
そういえば以前archで少しいたずらをしたことがあって、/bootをmieroさんのイメージの/bootとすっかり入れ替え、mieroさんのbootパーティションの中身をddコマンドでU-Boot bootloaderに送り込んだら、起動してsshで入れるけれどロックがかかりまくっていてそれ以上進めなかった様な記憶があります。(記憶違いがなければ)
ご存じかもしれませんが、Boticカーネルのビルドに関しては
http://junkbox.wpblog.jp/2015/01/07/botic_demo%E3%81%AE%E7%92%B0%E5%A2%83%E3%81%AEkernel%E5%86%8D%E6%A7%8B%E7%AF%89%E3%82%92%E8%A1%8C%E3%81%86%E3%83%AA%E3%83%99%E3%83%B3%E3%82%B8%E7%B7%A8/" target="_blank">http://junkbox.wpblog.jp/2015/01/07/botic_demo%E3%81%AE%E7%92%B0%E5%A2%83%E3%81%AEkernel%E5%86%8D%E6%A7%8B%E7%AF%89%E3%82%92%E8%A1%8C%E3%81%86%E3%83%AA%E3%83%99%E3%83%B3%E3%82%B8%E7%B7%A8/
にも情報があります。こちらのやり方が正攻法かもしれません。
情報ありがとうございました。質問があれば、そちらに伺いますので、よろしくお願いします。
uEnv.txtに関しては、結局、両方共に必要になるということですね。
[root@alarm ~]# uname -r
4.8.13-rt6-botic7-rc3
[root@alarm ~]# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Botic [Botic], device 0: external botic-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
am335x-boneblack.dtb に am335x-boneblack-botic.dtb を上書きすれば良いようです。
パラメータの指定方法などはやっていません。
うまく出来たあがったら私にも方法を教えてください・
その手はあるなと思っていますが、renameという過激な方法なので、どうしたものかと考えています。
とりあえずは、正攻法でu-boot.imgをコンパイルするという方法で何とか出来ないかと試しているのですが、情報が不足していて、ブートエラーになってしまうのですよね。
何れにしても、進展があったら、新しいスレッドで内容をご紹介するつもりです。
先に書いた件ですが、mieroさんがSupport for Botic Linux driverで書いていた様な記憶があったのでやってみたのです。先ほど調べたら#1625(163ページ)にありました。
そちらをご確認願います。
Ras-Piのスレッドを参考にしてゴニョゴニョやっていたらなんとか音が出ました。
/boot/uEnv.txtの設定も有効なので、上記のdtbを置き換える手段で大丈夫のようです。
mpdの設定方法が分からずうまく立ち上がらないことで挫折していました。debian系だと設定を変えてmpdを再起動すると動き出しますが、Archだとrebootしないとダメ、みたいなところをすっかり忘れていました。今日の朝、上の書き込みの件で再起動したら全くダメだと思っていたmpdが動いていて、nasをマウントしたら音が出る状態になってしまったのです。音出し用のBBGにSDカードを差し替えそれからずっと使っていました。
mpdのRT版も合間合間にコマンドを打ちながら夕方には出来上がったので、設定を行いずっと聴いています。
「実に生々しく鳴る。」 本当に素晴らしいです。
ライセンスの件ですが、サイトの方に書き込んだWSVの評価版を使えば、タダで最高峰の専用機を作成することができますね。
マルチブートですが、Win8は既にWin10が入っている環境にインストールすると勝手にマルチブート化するようで、この場合、ブートローダがどう振る舞うか分かっていないと、変なことになる可能性があります。僕の場合、これでいっぺん痛い目にあい、Win10をインストールし直したことがあります(^^;;;。このあたりWSVだとどうなるかは、闇の中だと思います。無責任ですが(^^;;;、OSのマルチブート機能でやるのでれば、覚悟して挑戦してみて下さい。
僕の場合は懲りて、専用機のOSインスートル時には、共用機のディスクの線を外し、インストールするようにしました。どちらのOSを使うかはbiosの機能でできますので。
何でもお聞きして申し訳ないのですが、
コントロールPCは、MPDで言うクライアントPCで、オーディオPCは、MPDサーバーPCと考えればいいのでしょうか?
楽曲データがNASにあるとして、楽曲データは、コントロールPC経由を経由せずに、オーディオPCに流れると考えていいのでしょうか?
> コントロールPCは、MPDで言うクライアントPCで、オーディオPCは、MPDサーバーPCと考えればいいのでしょうか?
ではなくて、AudioPC + ControlPC = クライアントPC ではないかと思います。AudioPCはドライバだけが独立して動いているというイメージみたいです。
> 楽曲データがNASにあるとして、楽曲データは、コントロールPC経由を経由せずに、オーディオPCに流れると考えていいのでしょうか?
というわけで、ControlPCを経由しているようです。何故、そうしているのかは謎ですが、これが音を良くする秘訣のように見えます。
MPDとは分業の仕方が違うのですね。
また、楽曲はControlPCとAudioPCの2つのPCを経由するんですね。
AudioPC専用機に、ASUSのVivoMiniUN42を買いました。
これからWindowsServer2012R2のインストールに挑戦です。
JPLAYでのデュアルモードの設定に関しての質問です。
IntelのNUC6i3SHKにWindows Server 2012もしくは、2016をインストールしようした時に、LANのドライバーがインストールできず困っています。Intelのサイトでは、このNUCでは、windows serverは、サポートされておらず、win8やwin10のLANドライバーを使っても、「このシステムでは使えません。」となり設定が進みません。何か良い方法はありますでしょうか?
今は、NUCにwin10をインストールし、AUDIO PCとして、デュアルモードで、JPLAYを楽しんでいますが、より音の良いserverモードでの音を是非、体験してみたいです。PCの設定の質問で申し訳ございませんが、アドバイス頂けますでしょうか?宜しくお願いします。
IntelのNUCのlanチップがWinサーバーでサポートされていないとは知りませんでした。NUCをサーバーにするという使用方法はありそうですが、Intel(とマイクロソフト)は何を考えているのですかね。
それで解決方法ですが、簡単なのは、USB接続のLANアダプターを使うことです。もちろんそのアダプターがWinサーバーでサポートされていることを確認した上でハードを選択して下さい。
早速に、ご回答頂き、ありがとうございます。
USB接続のLANアダプターでトライしてみます。
どうも!
このあたりのサイトを参考にされれば解決できるのではないかと思います。(NUCモデルとどのOSを入れるかによって多少の違いがあります)
https://goo.gl/Lv9h14" target="_blank">https://goo.gl/Lv9h14
https://jayrbarrios.com/2014/11/19/intel-nuc-d54250wykh-installing-lan-driver-on-windows-hyper-v-server-2012-r2/" target="_blank">https://jayrbarrios.com/2014/11/19/intel-nuc-d54250wykh-installing-lan-driver-on-windows-hyper-v-server-2012-r2/
yoさん、ご無沙汰いたしております。
現状JPLAYに結構どっぷりはまってしまい、本気モードではJPLAYで再生し、BGM的に聴く時だけVoyageMPDという感じになっています。
この音の差の秘密を知りたくて当方もJPLAYの設定値に関わるをアプローチを何日か前にまとめたところです。(実際は
仕組みに関する推測が多分に含まれますが)
単純ではないと思うのですが、やはりどこかにこの音の「肝」となる仕組みがあるようには考えています。これが、シンプルなLinux上で実現できると更に良いのに、と希望を持っています。
JPLAYを使い始めて一年近くになりましたが、いまだにPC部屋の実験システム用でメインの居間のシステムには導入していません。インテルPCが2台必要で、大がかりとなり、運用が大変というのが大きい理由です。「何かないかな」とネット探ししていたら、興味深い記事を発見しました。
https://sites.google.com/site/digififan/home/digifi-labo/lightmpd-upnpgw" target="_blank">https://sites.google.com/site/digififan/home/digifi-labo/lightmpd-upnpgw
lightMPDの最新版がUPnP対応するようになり、その詳細を作者が丁寧に解説した記事です。JPLAYとlightMPD、日本 vs ヨーロッパ、Windows vs Linux と環境はまったく異なりますが、最先端の高音質PCオーディオ用ソフトが同じような世界に向かっているというのはとても興味深いですね。
試しにlightMPD/upnpgwのスタンドアロン版を使ってみました。詳細は次回にサイトに書き込むつもりですが、なかなかいいですね。メインで使うシステムはこの方向に次の解があるかなと思っています。
音の印象ですが、lightmpd/upnpgwは、apu1のお陰で全くノイズがなくいい感じですが、なんとなく耳につくというか騒がしく感じる部分があります。JPLAYと同じようにホームネットワークと切り離して試してみようと思います。
なお、JPLAYの方は体に沁み込んでくる感じでほんとうに気持ちよく感じます。
lightMPDについては僕も同感です。lightMPDの音はソフトのチューニングのやりすぎの音だと思います。以前、「lightMPDはOSを極度に軽量したLinuxのTinyCoreと似ている」と書いたら、lightMPDエヴァンジェリストの方から抗議を受けたことがあります。今回、apu対応の最新版を試してみたのですが、その当時と大きくは変わっていないという感想です。lightMPDは極度のチューニングの結果、解像度は高いのですが、聴いていて楽しい音ではないですね。
ただ、upnpgw版は旧来版と比較すると、「解像度が高すぎて、カリカリしすぎ」という感じははだいぶ薄らいだかなという印象です。「これで、デュアル化されると、どうなるか、面白そうだな」と思っています。いずれにしても東西最先端の音楽ソフトが同じような方向に向かっているというのは興味深いですね。