タイトルと内容が不一致になっているので、新しいスレッドで続けます。
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
yoさん
こういう工夫を待ってました。
元の.configを使う方がよりlightmpdに近いわけですから。
あとlightmpd bbb版はusbの優先度を最高にあげてますので
chrtで設定をやり直すか、romfsを解凍してchrtの箇所に修正を
加えるとまた音が違ってくるかもしれません。
inthedark
このスレッドでやっていることに興味をもって頂いた皆さん
にお願いです。
inthedarkのコンフィグよりこっちの方がいいぜ!
というものがあればぜひ御報告ください。(yoさんのように)
やり方は公開されてますし、チャレンジされる方がどんどん
登場されると楽しいんじゃないかなあ。そう思います。
inthedark
先に述べましたコンフィグだけでなく、
こんな風にしたらいいんじゃね?
といったアイデアなどありましたら、お気軽にレスを残して
頂けると、なお楽しいかなあ。そう思います。
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の認識処理が出来なくなるということのようです。
inthedark さん はじめまして yoさん こんばんは
まず私の方で分かったことです。
telnetでログインしてchrtコマンドは有効ですが、pgrepを使えません。yoさんがエラーになったのはこのあたりが原因と思います。
何度か起動を繰り返してもpidは変わらないようなのでchrtに直接pidを入れて優先レベルを変えてみました。usbは99に設定してあったので49に変え、nasも49、面倒なのでmpd-outputを99に設定して聴いてみましたが、随分雰囲気が変わります。これは良いと思います。
そして思ったのですが、起動時に実行するスクリプトファイルをSDカード上に置くことができれば、簡単に優先レベルの設定をを変えることができるのに、ということです。
もうひとつは、クロスコンパイラでmpdをコンパイルする環境の構築方法が知りたいことです。
カーネルについては、何をやっているのかよく分からないレベルなので、みなさんの真似をしながら少しずつ理解していこうかと思っています。
yoさん
解凍の方は僕もその方法でやりました。
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
moctさん
yoさんのようにlightmpdを解凍する、固めるができるようになれば中に入っていじくることができて面白いとは思いますが、一般的にはそんなの面倒くさい!となるでしょうね。
lightmpd.confでchrtの設定項目でもつくってそこから優先度を
変えられるようにできればたくさんのユーザーに気軽に試して
頂けるかと思いますが、それはlightmpdが本当にわかっていないとできません。
pgrepが使えないのは、ルートファイルシステムに組み込まれて
いないんでしょうね。たぶん。
mpdについてはカーネルの着せ替えのように簡単ではありません。ライブラリの整合性がないと動きませんしね。
(私は実際試したことがあります、見事に動きません。)
これからもお気軽に色々つぶやいていってください。
inthedark
inthedark さん
アドバイス、Many thanks です。うまくいきました。これで何でも出来そうですね。
問題はGaucheとかいうlisp風の初期処理の設定言語ですね。
moct さん
一応、lightmpdをboticizedしながら、乗っ取る方法はほぼ解明しましたので、ご注文にアドバイスはできそうです(必ず出来るとはいえませんが)。
とりあえずのレベルの設定のスクリプトについては作戦を考えてみます。
lightmpd用mpdのクロスコンバイル環境ですが、仮想環境を使うということでいいのじゃないですか。
yoさん
ho-ho-ho、よかったですね。苦労した甲斐がありました。
ときどきlightmpdの掲示板でお見掛けするdounuts.shop73さんという方がいらっしゃいますが、その方もこんな風におっしゃってます。
一般的にlightmpdはブラックボックスということになっています
が自分にとってはそんなことはありません。(gauche以外)
まあこれでスーパーサイヤ人化したyoさんは無敵ですな。
inthedark
> mpdについてはカーネルの着せ替えのように簡単ではありません。ライブラリの整合性がないと動きませんしね。
その通りなのですが、カーネルのレベルが4.8.13なので、最新のライブラリにすることは出来ると思います。問題は整合性の確保ですが、MPDだけに限定すれば、なんとかなるかなと思います。MPDで使う機能次第ではありますが。今、展開したライブラリを眺めていますが、比較的シンプルです。
まあ、しかし、デジファイのおとさんはこれを様々な機種に対応させてやっているわけで、大変だろうなぁと思います。改めて感謝です。
inthedark さん
> 一般的にlightmpdはブラックボックスということになっています
> が自分にとってはそんなことはありません。(gauche以外)
同感です。
僕もlightmpdは他のディストリビューションのように中味を自由にいじることが出来ないので、面白くないと思っていましたが、今回、認識を改めました。コンパクトにまとまっている分、仕組みが分かればいじりやすそうですね。ただ、あのスクリプト言語はパスだなぁ(^^;;;。
yoさん
mpdの着せ替え、期待しております。喜ばれると思います。
これで僕も安心して一読者にもどれます。ho-ho-ho-ho
inthedark
これは僕のVmwarePlayerのArch Linux環境です。
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と同じレベルですから、この位だとそんなに極端な整合性の狂いは発生しないのではないでしょうか。
勘違いしていました。arm環境じゃないと意味がないから、Boticized Arch linuxがお勧めですね。
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
yoさん
そうですね。大丈夫だと保証はできませんが。
まだまだ楽しみがつきませんね。
うまくいくといいなあ。
inthedark
はじめまして。uInitrdの解凍の件で書かきます。
すでに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あたりの意味は私は良くわかってません)。参考まで…
ca2さん、情報ありがとうございます。
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に渡す解凍用の情報なのですかね。
こうやってどんどん情報が集まってくるところが、ネットワークプロジェクトのいいところですね。
yoさん、大変ご無沙汰しております。
最近の一連の記事を拝見して、数年ぶりに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方式です。これは耳に優しくて、とても良い音がします。
yo様
LightMPD BBB-Boticのイメージ公開有難うございました。BoticにHifiberry-dacを載せて、動作確認しました。いつでも電源をオフにできるLightMPDが使える事になり、嬉しく思います。ただ、Hifiberry-dacplus、Hifiberry-digi、Hifiberry-digi-proでは、動作しないようです。特別の設定が必要なのでしょうか?
Toshi さん
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
にあるのではないかと思います。情報がなければ、ボードで質問するのが早いかと思います。