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化が出来ると思います。ブート構成が同じなので。
> 多分、同じ手口で 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
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したという意味でしょうか。
yoさん
> ./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
yoさん
先程の記述の中の訂正です。おわかりになるとは思いますが
念のため
(5)
OSS Mixer API OSS , PCM(digital audio) API (誤)
OSS Mixer API ,OSS PCM(digital audio) API (正)
inthedark
yoさん
とりあえず試してみたいということでしたら私のビルドした
zImageとam335x-boneblack.dtbを差し上げます。
お気軽におっしゃってください。
(one driveで共有する方法でやってみたいと思います。)
inthedark
yoさん
私がビルドしたzImageとam335x-boneblack.dtbを差し上げた方
から朗報です。とりあえずlightmpdからの音出しを確認したそうです。とりあえずよかったです。私は聴けませんが。
inthedark
inthedarkさん、丁寧な解説ありがとうございました。
問題なくカーネルをビルドし、BBBから起動させることが出来ました。
cat /proc/asound/card0...で内容を確認しましたが、正しく認識されているようです。起動のメッセージもinthedarkさんの環境と同じ内容で出力されています(シリアルコンソールで確認)。とここまでは、うまくいったのですが、そんなに甘くはないですね。
nas(cifs)の認識が出来なくなります。入れ替え前の非boticizedカーネルでは正しく認識されていましたので、boticizedカーネルに問題があるようです。関連するカーネルパラメータはlightmpdコンフィグに合わせてあるので不思議です。
inthedarkさんの環境だと、nfsは問題なく認識され、USB音源で音も出せているのでしょうか。
inthedarkさん
とりあえず、コンフィグを下さい。よろしくお願いします。
https://1drv.ms/u/s" target="_blank">https://1drv.ms/u/s!AsyiHa6PG6EmiCR4E0tHJ7t5lbBI
上記アドレスにアクセスしてください。.configがあると
思います。はじめてやりますんでダウロードできなければ
その旨おっしゃってください。
私の環境で音出しは確認しておりませんが、私の知り合いが
音出しまで確認しております。その方がcifsかnfsかは聞いて
みないとわかりません。私の環境はnfsなんでマウントは確認
しております。lightmpdではnasをマウントできないと起動
できませんので。
yoさん
知り合いに確認しましたところcifsでlightmpdboticの音出し
をされたそうです。
inthedark
同じ結果ですね。ということは僕のlightmpd.confの指定方法の問題と思われますが、確認をとりたいので、zImageとam335x-boneblack-botic.dtbをダウンロード出来るようにしてもらえますか。
https://1drv.ms/f/s" target="_blank">https://1drv.ms/f/s!AsyiHa6PG6EmiCWloozCDZeDyoZ7
これでダウンロードしてください。
inthedark
ありがとうございました。
結果はなんとうまくいきました。音が出ました。
原因はこれから考えます。
yoさん
音が出たということでよかったです。私と知り合いだけの妄想
ではなかったわけで安心しました。
これをたたき台に、自分の好みの音が出るように仕上げていた
だければと思います。
inthedark
nasを認識しない原因が分かりました。
rtパッチの有無です。僕の環境では有なら認識できて、無だと認識できません。
「何故だ」と問われると、「不思議ですね」という返事になるのですが、変ですねぇ。
逆なら、「パッチの問題でしょ」と説明が出来るのでが、有りだとOKとは。
inthedarkさんの環境でrtパッチ無でnasは認識できましたか。
lightMPDのイニシャル処理って、lisp言語みたいなスクリプトを使っているのですね。
これって、かなり遅そうだから、そのあたりが関係しているのですかね。
しかし、lightMPDって、Boticized化しても、尖った音をしているというのは面白いですね。
yoさん
> しかし、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の潜在バグかもしれません。
yoさん
詳細な考察ありがとうございます。
私はプログラムの知識があるわけではないのでコメントできません。笑
しかし、digififanさんがrtカーネルにこだわる理由の一つが
そういったところにもあるのかもしれませんね。
それに、カーネルだけ新しくするというのも問題があるのかも
しれません。ルートファイルシステムも含めてやはり新しく
した方がすっきりすると思います。
bbb用のlightmpdは久しくバージョンアップされてませんが、
今後に期待したいところですね。(digififanさんは本業が
お忙しいそうでlightmpdに割く時間が限られているみたいな話
をされてますし。)
moctさん
はじめまして。
カーネルのコンパイルなどlinuxを表面的にですがいじるのを
趣味としてますので、その一環で今回lightmpdBBB版のboticized
をやってみただけです。音の評価は人それぞれですので正解は
100人いれば100通りあっていいくらいに思っております。
第一、私自身がbbgのi2sの音を聴ける環境にありませんので
コメントできません。笑
linuxは色々なディストリがあり、ノーマルのままでも使い勝手
がよいのでカーネルのコンパイルすらしたことがないという人
が多いと聞きます。やってみたらこんなに面白いのに。
今回、詳細なカーネルコンフィグの設定について書いたのも
これをきっかけにカーネルいじりに興味をもってもらえたら
という思いもちょっとですが込めております。
(私が逆に色々教えてもらいたいくらいです。)
yoさんのこのサイトがまたどんどん盛況になっていってもらえ
れば私も一読者としてこんなにうれしいことはありません。
inthedark