BeagleBone Blackと自作PCM5122 I2S I/F DACの組み合わせでネットワークmpd環境を構築するにあたりvolumioを選択したものか ここで公開されているbotic_demoから環境構築した方が良いかが悩ましい。
volumioは必要な機能を全てパッケージとしたソリューションであるので素人としては有難い。
しかし前回BBB用volumio 1.5を試して見たがやや安定性に欠けていた。
面白いものではあるが常用するには問題がある。
一方、botic_demoはdemo環境でありympd等の実装はあるものの、自分に必要な機能が欠けている。
必要な機能は一つひとつ自分でインストールする必要がある。
時間があればそれも楽しいのだが、土日に妻子を寝かしつけてからの数時間のみしか時間が取れない身としては易きに流れたいのだが…。
botic driverは安定しているので好ましいのだが、自分にとり特に大きな問題としてはbotic_demoでUSB WiFiドングル経由での接続が自分の環境ではできていないこと。
ともあれ、botic_demoの環境のKernelの再構築を試み、USB WiFi設定を行おうとしたので記録として残すことにする。
現状のステータスとしてはKernelの再構築はできたが残念なことにUSB WiFiを使える状態にはできていない。
botic_demoの環境はkernel 3.16.1ベースである。
kernel構築を行うにあたり調べて少し驚いたのだが、tool-chainがarm-linux-gnueabi-ベースではなくarm-linux-gnueabihf-ベースになっていた。
浮動小数点演算がハードを用いるtool-chainらしい。
そのほか、/sys/devices/bone_capemgrはkernel 3.13あたりから消えていてdevice treeのover-rayの概念が無くなっているらしい。
必要なdevice tree設定は起動用のdtbで確定させる思想となっている。
途中でdevice treeの設定を変える必要は恐らくはないので、この変更は合理的ではあるが折角憶えた手続きが使えなくなるのは少々惜しい。
kernel 3.8ベースの環境に留まるのも一つの選択であろう。
話を元に戻す。
botic_demoの環境からkernelコンフィグを取得する。
bbb-demo-botic-v3-2gbを焼き込んだmicro SDカードをBBBに挿入・起動し以下を実行。
debian@bbb:~$ zcat /proc/config.gz > bbb-demo-botic-v3-2gb.config debian@bbb:~$
取りあえずmicros SDカードを抜く。
debian@bbb:~$ sudo sync debian@bbb:~$ sudo sync debian@bbb:~$ sudo sync debian@bbb:~$ sudo shutdown -h now
micro SDカードを母艦(ゲストOS)に認識させる。
以後はmicro SDの二つのパーティションが母艦(ゲストOS)で以下として認識された前提とする。
/media/temp-host/BOOT/
/media/temp-host/rootfs/
以下母艦(ゲストOS)で実行する。
先ずはapt-get update/upgradeを行う。
ログは省略。
temp-host@temp-host:~$ sudo apt-get update temp-host@temp-host:~$ sudo apt-get upgrade
cross tool-chainのインストール。
temp-host@temp-host:~$ sudo apt-get install g++-arm-linux-gnueabihf
作業ディレクトリの作成。
temp-host@temp-host:~$ mkdir BB-LINUX temp-host@temp-host:~$ cd BB-LINUX/ temp-host@temp-host:~/BB-LINUX$
www.kernel.orgからカーネルソースを取得する。
取りあえずbotic_demoと同じ3.16で一番新しいlinux-3.16.7を選択する。
ちなみにlinux-3.16.1でも同じ手順でできることを確認している。
temp-host@temp-host:~/BBB-LINUX$ wget ftp://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.7.tar.gz --2015-03-01 21:23:41-- ftp://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.7.tar.gz => `linux-3.16.7.tar.gz' www.kernel.org (www.kernel.org) をDNSに問いあわせています... 149.20.4.69, 198.145.20.140, 199.204.44.194, ... www.kernel.org (www.kernel.org)|149.20.4.69|:21 に接続しています... 接続しました。 anonymous としてログインしています... ログインしました! ==> SYST ... 完了しました。 ==> PWD ... 完了しました。 ==> TYPE I ... 完了しました。 ==> CWD (1) /pub/linux/kernel/v3.x ... 完了しました。 ==> SIZE linux-3.16.7.tar.gz ... 121773906 ==> PASV ... 完了しました。 ==> RETR linux-3.16.7.tar.gz ... 完了しました。 長さ: 121773906 (116M) (確証はありません) 100%[======================================>] 121,773,906 3.61MB/s 時間 32s 2015-03-01 21:24:14 (3.65 MB/s) - `linux-3.16.7.tar.gz' へ保存終了 [121773906] temp-host@temp-host:~/BBB-LINUX$
linux-3.16.7.tar.gzを解凍する。
ログは省略。
temp-host@temp-host:~/BBB-LINUX$ tar zxvf linux-3.16.7.tar.gz
botic_demoのパッチを適用する。
temp-host@temp-host:~/BBB-LINUX$ cd linux-3.16.7 temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ cat /media/temp-host/rootfs/sources/linux-3.16.1.patches/patches/botic/* | patch -p1 patching file sound/soc/davinci/davinci-mcasp.c Hunk #2 succeeded at 647 (offset 9 lines). Hunk #3 succeeded at 674 (offset 9 lines). Hunk #4 succeeded at 746 (offset 9 lines). patching file sound/soc/davinci/davinci-mcasp.c Hunk #1 succeeded at 730 (offset 9 lines). patching file sound/soc/davinci/davinci-mcasp.c Hunk #1 succeeded at 778 (offset 9 lines). patching file sound/soc/davinci/davinci-mcasp.c Hunk #3 succeeded at 731 (offset 9 lines). patching file sound/soc/davinci/davinci-mcasp.c Hunk #4 succeeded at 754 (offset 9 lines). patching file Documentation/devicetree/bindings/rtc/rtc-omap.txt patching file arch/arm/boot/dts/am335x-bone-common.dtsi patching file drivers/mfd/tps65217.c patching file drivers/rtc/rtc-omap.c patching file include/linux/mfd/tps65217.h patching file drivers/regulator/tps65217-regulator.c patching file include/sound/soc-dai.h patching file sound/soc/davinci/davinci-mcasp.c Hunk #3 succeeded at 489 with fuzz 2 (offset 9 lines). Hunk #4 succeeded at 512 (offset 9 lines). Hunk #5 succeeded at 675 (offset 9 lines). Hunk #6 succeeded at 685 (offset 9 lines). Hunk #7 succeeded at 705 (offset 9 lines). Hunk #8 succeeded at 1342 (offset 9 lines). patching file include/sound/pcm.h patching file sound/core/pcm_native.c patching file sound/soc/soc-core.c patching file sound/soc/davinci/davinci-mcasp.c Hunk #1 succeeded at 533 (offset 9 lines). Hunk #2 succeeded at 644 (offset 9 lines). Hunk #3 succeeded at 668 (offset 9 lines). Hunk #4 succeeded at 770 (offset 9 lines). Hunk #5 succeeded at 797 (offset 9 lines). Hunk #6 succeeded at 831 (offset 9 lines). Hunk #7 succeeded at 840 (offset 9 lines). Hunk #8 succeeded at 949 (offset 9 lines). Hunk #9 succeeded at 960 (offset 9 lines). patching file sound/soc/davinci/davinci-mcasp.c Hunk #4 succeeded at 1213 (offset 9 lines). Hunk #5 succeeded at 1394 (offset 9 lines). patching file sound/soc/davinci/davinci-mcasp.c Hunk #1 succeeded at 899 (offset 9 lines). patching file arch/arm/boot/dts/Makefile patching file arch/arm/boot/dts/am335x-bone-common.dtsi patching file arch/arm/boot/dts/am335x-boneblack-cape-bone-botic.dts patching file sound/soc/davinci/Kconfig patching file sound/soc/davinci/Makefile patching file sound/soc/davinci/davinci-botic.c patching file sound/soc/codecs/Kconfig patching file sound/soc/codecs/Makefile patching file sound/soc/codecs/es9018.c temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$
kernel configを差し替える。
temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ cp /media/temp-host/rootfs/home/debian/bbb-demo-botic-v3-2gb.config ./.config temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$
menuconfigで必要に応じて設定を変える。
temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- menuconfig temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$
ただ、WiFi関連のコンフィグ変更で挫折しているので、ここでは特に設定変更をしない。
zimageとdtbsのmake。
ログは長いので省略。
temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- -j3 LOADADDR=0x80008000 zImage dtbs
moduleのmake。
ログは長いので省略。
temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- -j3 modules temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$
zimageとdtbsの差し替え。
temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ sudo cp ./arch/arm/boot/zImage /media/temp-host/BOOT temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ sudo cp ./arch/arm/boot/dts/* /media/temp-host/BOOT/dtbs/ cp: ディレクトリ `./arch/arm/boot/dts/include' を省略しています temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$
moduleのインストール。
ログは省略。
temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=/media/temp-host/rootfs/ modules_install
micro SDを取り出す前に念の為にsyncを行う。
temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ sudo sync temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ sudo sync temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$ sudo sync temp-host@temp-host:~/BBB-LINUX/linux-3.16.7$
母艦(ゲストOS)からmicro SDカードを取り出しBBBにセットしてBBBの起動を行う。
起動確認後、 母艦(ゲストOS)からmicro SDを取り外し、BBBにセットして起動を行う。
コンソールはWindows8.1 ノートPCからUSBシリアルTTLケーブルを介し、TeraTermでシリアル接続で行う。
115200bps 8bit; non parity; stop bit 1; フロー制御なし。
起動できた。
default username:password are [debian:botic] and [root:botic]は変わっていない。
ログインし動作確認を行う。
debian@bbb:~$ uname -r 3.16.7 debian@bbb:~$ sudo -s root@bbb:/home/debian# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: BOTICAudio [TPA BOTIC-Audio], device 0: ES9018 es9018-hifi-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0 root@bbb:/home/debian# root@bbb:/home/debian# play /data/test/test_96k_24b.flac /data/test/test_96k_24b.flac: File Size: 4.96M Bit Rate: 2.41M Encoding: FLAC Info: Processed by SoX Channels: 2 @ 24-bit Samplerate: 96000Hz Replaygain: off Duration: 00:00:16.50 In:100% 00:00:16.50 [00:00:00.00] Out:1.58M [ =====|======] Hd:0.1 Clip:0 Done.
特に問題無く自作PCM5122 I2S I/F DACでtest_96k_24b.flacを鳴らす事ができた。
動作も安定しているように見える。
前述したようにUSB WiFiドングル経由での接続に成功していない。
色々カーネルコンフィグを弄ってみたりして試しているのだが諦め気味である。
落ち着いて調べれば良いのだろうがあまり時間が取れないので、トライアンドエラーとなってしまい 反って時間がかかってしまっている。
volumioではWiFi経由の接続はOKであるが安定性に問題があり、boticの環境では安定性はあるもののWiFi接続ができていない。
はまりつつあり困りものである。