皆様
先日、下記に書いたようにODROID-U3を購入しました。
http://www.symphonic-net.com/kubotayo/cgi-bin/read.cgi?mode=all&list=topic&no=4074" target="_blank">http://www.symphonic-net.com/kubotayo/cgi-bin/read.cgi?mode=all&list=topic&no=4074
昨夜から足掻いてみて、本日夕方、なんとか動くようになりました。
1.7Ghz*4のcpuは、1coreでi.MX6_Dual位です(BogoMIPS:3394.86*4)
以下の2つのイメージとODROID公式から落としたkernel(以降3とする)、及び自炊のkernel(以降4とする。3.8.13.16+rt27)を試してみました。
http://odroid.us/odroid/odroidu2/debian/debian-wheezy-base-7.1.0.img.xz" target="_blank">http://odroid.us/odroid/odroidu2/debian/debian-wheezy-base-7.1.0.img.xz(以降1とする)
http://archlinuxarm.org/os/ArchLinuxARM-odroid-x-latest.img.gz" target="_blank">http://archlinuxarm.org/os/ArchLinuxARM-odroid-x-latest.img.gz(以降2とする)
1について(3.8.13.3)
・DACを認識
・192/24の再生可能。ただしscpでファイルの転送を行うとmpdが落ちる。
2について(3.8.13.16)
・DACを認識
・cifs未サポートだったので、早々に撤退(Archのnfsは、NFS3で使うのは、なんかめんどくさかったような記憶があったため)
3について(3.8.13.16)
・DACを認識せず。撤退
4.について(3.8.13.16+rt27)
・DACを認識し1のようにmpdが落ちることもなかった。
以下にtopの結果を貼っておきます(flac 192/24再生中-3.8.13.16+rt27ー)
top - 19:54:25 up 2:53, 2 users, load average: 0.10, 0.24, 0.17
Threads: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie
%Cpu0 : 1.7 us, 0.3 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 2.7 sy, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 1.0 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 2070160 total, 130044 used, 1940116 free, 13092 buffers
KiB Swap: 0 total, 0 used, 0 free, 69280 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1214 root -51 0 0 0 0 S 7.6 0.0 5:04.67 irq/102-ehci_hc
3209 mpd 20 0 68836 5400 2024 S 3.3 0.3 1:48.81 mpd
3211 mpd 20 0 68836 5400 2024 S 1.7 0.3 0:46.24 mpd
1218 root -51 0 0 0 0 S 1.3 0.0 0:46.52 irq/102-ohci_hc
13 root -2 0 0 0 0 S 0.3 0.0 0:16.79 ksoftirqd/1
18 root -2 0 0 0 0 S 0.3 0.0 0:15.91 ksoftirqd/2
23 root -2 0 0 0 0 S 0.3 0.0 0:16.08 ksoftirqd/3
2636 root 20 0 0 0 0 S 0.3 0.0 0:20.81 cifsd
3207 mpd 20 0 68836 5400 2024 S 0.3 0.3 0:10.69 mpd
問題点と今後の方針
まともに使えるkernelソースは3.8.13.16だけのようです(3.0.xは未検証)
なのでkernel_Verの違いで聴き比べるなんてことは、当分できそうにありません。
1に入っていたboot.scrではuInitrdを使うようになっているので(zImageだけでも可)、initramfsにmpd及び必要なモジュールを入れて使えるようにしようかと考えています。
tinkerさん
odroidのレポート、ありがとうございます。やはり、armアーキテクチュは手強そうですね。x86に転身し、ヌクヌクと生息している我が身には大変そうです(^^;;;。使用レポートも楽しみにしています。
使ってみたいとは思っているのですが、NewAlixあり、HiFiBerryありで、「odroidは遠くなりにけり」ですね。TinyCoreはあと一息というところまで来ました。カーネルの挙動がちょっと特殊ですが、armマシンと比較すれば、天国と地獄。雲泥の差ですね。
initramfsに全部いれちゃうというのはtinycoreもいっしょですね。だから実質リードオンリーです。
yoさん
NewAlixも考えたんですが、あえて茨の道を・・・(笑)
U3の音は、3.8にしては結構いいです。
評判の悪いSMC95XX(RasPiのethとusbに使われてる兼用の石)を使ってるみたいですが、パワーがあれば使えそうです。
これからはBBBとODROID-U3の2台をメインにしていくつもりです。
>TinyCoreはあと一息というところまで来ました
結果楽しみにしています。
質問です。mpd(関連するライブラリなども)は、追加パッケージを見ると足りないように思うのですが、足らないものはbuildしなければいけないんでしょうか?
>initramfsに全部いれちゃう
やってみても良くならないかもしれないですが、せっかく買ったんで、やれそうな遊びを探してます。
とりあえず、zcat ./initramfs-3.8.13.16-rt27-140215 | cpio -id、mpdとmpd.confはln -sして、ldd /usr/local/bin/mpdで何を入れりゃいいか見たところで、まだまだ先は長そうです。
tinkerさん
> 評判の悪いSMC955X(RasPiのethとusbに使われてる兼用の石)を使ってるみたいですが、パワーがあれば使えそうです。
NewAlixの場合もパワーで押し切るという感じはありますね。ただ、無理矢理鳴らしているという感じではなくて、実在感を強調するという感じなので、とてもいいです。マルチコアマシンの特徴かもしれません。
> 質問です。mpd(関連するライブラリなども)は、追加パッケージを見ると足りないように思うのですが、足らないものはbuildしなければいけないんでしょうか?
その通りだと思います。tinycoreの場合はなんとかあったので、ビルドはmpdだけですみました。あと使わない機能なら、コンフィグでdisableするという手もききますね。shout、mmsなどはこれで回避しました。
> とりあえず、zcat ./initramfs-3.8.13.16-rt27-140215 | cpio -id、mpdとmpd.confはln -sして、ldd /usr/local/bin/mpdで何を入れりゃいいか見たところで、まだまだ先は長そうです。
tinycoreの場合は適当なワークディレクトリを作成移動して、実質initramfsであるcore.gzというやつを
zcat /mnt/tce/boot/core.gz | sudo cpio -i -H newc -d
で展開し、変更追加した内容をコピーし、
find | sudo cpio -o -H newc | gzip -2 > ../core1.gz
で新しいcore1.gzを作成。入れ換えるという方法です。しかしこのfindの使い方は凄いですね。tinycoreの掲示板で見つけたのですが、ちょっと思いつかなかったです。これって、linuxハッカーでは常識なのですかね。
カーネルを入れ換えた時のモジュールライブラリの追加なんかもこれで出来ます。
あと、小さいファイルの変更の場合はmydata.tgzというプライベートな圧縮ファイルに保存しておくということも可能です。
yoさん
>その通りだと思います。tinycoreの場合はなんとかあったので、ビルドはmpdだけですみました
参考になります。
経過を公開していただけると、RasPiとかで真似したと思います。
>find | sudo cpio -o -H newc | gzip -2 > ../core1.gz
こんな使い方もあるんですね。
BBBで私が使っているuEnv.txtもuInitrdを使えるようになっているので、今やっていることが成功したらBBBでもやってみようと思います。
皆様
ODROID-U3を使ってみて、分かったことを書いておきます。
RT kernel+RTOPのmpdの場合、比較的大きなファイルの転送中に音が途切れることがあります。
これについては、irq/102-ehci_hcの優先度を99に設定すれば、問題は出ないようです(どのくらい上げれば良いかは未検証)
なお、RT kernel+RTOP無しのmpdの場合は問題はありませんでした。
まっ、音楽聞いてる時にファイルの転送(音楽データ以外の)などするアホ以外は問題は出ないと思います。
音の傾向は、個人的に以下のように感じています。
cubox :おおらかすぎ
wandboard:神経質すぎ
U3 :上記の中間(どちらかというとwandboard寄り。0.7*wandboardくらいの位置かな)
こんなんですが、ODROID-U3を使ってみようという奇特な方の要望があれば、細々した情報も出せると思います。
yoさん
initramfsを作ってみましたが、適当すぎたのか、目立った結果(明らかに音が良くなるとか負荷が下がるとか)は得られていません。
以下やったこと。
・initramfsを作成
kernelversion=`uname -r`
mkinitramfs -c gzip -o ./initramfs-$kernelversion $kernelversion
・作成したinitramfsにモジュール追加
mpdだけでも関連するモジュールが多いので、めんどくさいなあと探してみたところ、以下のページに便利なスクリプトがありましたので、ありがたく使用させていただきました。
http://d.hatena.ne.jp/int128/20080622/1214066340" target="_blank">http://d.hatena.ne.jp/int128/20080622/1214066340
上記ページのスクリプトを使い、./createinitramfs /usr/local/bin/mpdとするとmpdが依存するファイルを./initramfsに集めてきてくれます。
そこに作成済みのinitramfsを展開し、再度initramfsを作成
cd ./initramfs
zcat ../initramfs-$kernelversion | cpio -id
find . | cpio -o -H newc | gzip > ../initramfs-$kernelversion
次にu-bootで読める形式のuInitrdを作成しました。
cd ..
mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n initramfs -d ./initramfs-$kernelversion ./uInitrd
tinkerさん
> まっ、音楽聞いてる時にファイルの転送(音楽データ以外の)などするアホ以外は問題は出ないと思います。
僕ですね(^^;;;。atom機を使い、実機でビルドしながら音楽を聞くなんてよくやっていましたから。NewAlixだとほとんど問題は出ませんね(^^;;;。
> 以下のページに便利なスクリプトがありましたので、ありがたく使用させていただきました。
これは重宝しそうですね。情報ありがとうございました。
TinyCoreで音を出してみましたが、Archと大して変らないと思いました。面倒くささを考えるとArchで十分という感じですね。
問題はTinyCore、Arch共に共通なのですが、DSDネイティブ再生すると異常にcpu負荷が上がることです。wavだと1%位なのにdsd64で20%位にハネ上がります。何でですかね。しかもVoyageMPDだとこの現象は発生しません。自力でmpdサーバが動作するrootfsを作ろうとすると呪われるようです(^^;;;。x86の呪いだなぁ。不思議ですねぇ。
ただ、ノイズとか、音切れにはなりません。このあたりもarmと違うのですが、謎だなぁ。
もう一つの不具合?を忘れてました。
久しぶりにArchを使おうかと、/dev/mmcblk0p2にdebianとし/dev/mmcblk0p3にArchとして、それぞれのboot.scrを作りましたが、マルチbootが失敗します(root=/dev/mmcblk0p3にしてもdebianが上がる)
現在、調査中です・・・
現時点で解決したもの、未解決のものを書いておきます(前述以外のもの)
解決
・マルチブートの件は解決しました
u-bootが良くなかったようです。
http://odroid.us/odroid/odroidu2/debian/debian-wheezy-base-7.1.0.img.xz" target="_blank">http://odroid.us/odroid/odroidu2/debian/debian-wheezy-base-7.1.0.img.xzのu-bootは正常に動作します。
使用しているu-bootは以下のもののようです。
http://odroid.us/mediawiki/index.php?title=Main_Page" target="_blank">http://odroid.us/mediawiki/index.php?title=Main_Page(このサイトは色々参考になります)
http://odroid.us/mediawiki/index.php?title=U-boot_Topics" target="_blank">http://odroid.us/mediawiki/index.php?title=U-boot_Topics
・kernel 3.14-rc3
以下URLのG16が動きます。
ただしu-bootが古いので、cuboxと同じようにdtb付きのzImageを作成する必要があります。
cat arch/arm/boot/zImage arch/arm/boot/dts/exynos4412-odroidu2.dtb > ../zImage てな感じです。
3.14-rc3(実際はrc4に近いrc3です)とG16のdiffをとって、patchを作成済みです。
作成したpatchは3.14-rc5にも綺麗に当たり、buildしたkernelも動いています。
未解決
マルチブートは出来るようになったのですが、Archの動作がおかしいです。
そもそもethに使っている石がsmc95xxで、MAC addressを保存するEEPRORMがないのが原因のようです。
MAC addressが保存されていないと、例えばDHCPでアドレスを受ける場合、毎回アドレスが変わってしまいます。
そのためか、しばらく動かしていると通信が途絶えてしまいます。
原因は分かっているのですが、Archに執着がないので、ほったらかしです。
これについては、以下が参考になるかもしれません。
http://archlinuxarm.org/forum/viewtopic.php?f=47" target="_blank">http://archlinuxarm.org/forum/viewtopic.php?f=47&t=6164&start=10
http://archlinuxarm.org/forum/viewtopic.php?f=48" target="_blank">http://archlinuxarm.org/forum/viewtopic.php?f=48&t=3133
まずdebianで動作確認し、その後Archに挑戦されたほうが良いと思います。
もしかしたらG16のdeconfigのようにboot optionを設定したkernelは問題ないかもしれません(exynos4412-odroidu2.dtsの中でMAC addressを設定しているので)
その他
参考になるサイト
raspiにも参考になります。
http://hanposaki.blog.so-net.ne.jp/" target="_blank">http://hanposaki.blog.so-net.ne.jp/
とりあえずはここ
http://odroid.us/mediawiki/index.php?title=Main_Page" target="_blank">http://odroid.us/mediawiki/index.php?title=Main_Page
シリアル通信に必要なdriverやセキュリティ上必要な初期設定が参考になります。
http://gadget.ichmy.0t0.jp/odroid/" target="_blank">http://gadget.ichmy.0t0.jp/odroid/
以下に必要な物をUPしておきます。
3.8.13.16と18は、なんとなく音が違うように感じます。ただ現在のgitには3.8.13.16はありません(必要であればzipのurlをupしますので、その時は書き込んでください)
https://drive.google.com/file/d/0BxnbJHx0_xurQWxUT0lzaERCaGc/edit?usp=sharing" target="_blank">https://drive.google.com/file/d/0BxnbJHx0_xurQWxUT0lzaERCaGc/edit?usp=sharing
https://drive.google.com/file/d/0BxnbJHx0_xurZkRhZ1UyaHRlYVk/edit?usp=sharing" target="_blank">https://drive.google.com/file/d/0BxnbJHx0_xurZkRhZ1UyaHRlYVk/edit?usp=sharing
(このpatchはrc3には当たりません。理由は前述のとおりです)
tinkerさん
たくさんの情報ありがとうございます。
消化不良状態ですが、ぼちぼち進めてみます。
syuさん
お待ちしてます。
Archは相変わらずなので、syuさんが成功したら教えて下さい。
patchにおかしなところがありました。
gpu関係で、かつコメント部なので問題はないと思いますが、修正お願いします。
+ * Interface for the broadcast unit on Mali-450.
+ *
+ * - Represents up to 8 テ� (MMU + PP) pairs.(文字化けしてる)
を以下のように変更してください。
+ * Interface for the broadcast unit on Mali-450.
+ *
+ * - Represents up to 8 x (MMU + PP) pairs.
また、rc6にはpatchが当たらない部分があるようです。
調べたところ、以下の部分は公式3.14-rc6で修正されたみたいです。
3.14-rc6以降に当てる場合は、patchから以下の部分を削除してください。
ここから diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
ここまで /*** clk rate change notifiers ***/
syuさん
3.14のRTパッチが出てたので作ってみました。
https://drive.google.com/file/d/0BxnbJHx0_xurWmc1OHFtTEhVdlk/edit?usp=sharing" target="_blank">https://drive.google.com/file/d/0BxnbJHx0_xurWmc1OHFtTEhVdlk/edit?usp=sharing
tinkerさん、ありがとうございます。
bbb-i2s接続の試行も一段落したので、ぼちぼちodroid-u3も試してみます。実はケープも入手済みです。
syuさん
>実はケープも入手済みです
BBBのケープですか?
それとも、こっちのやつですか?
http://www.hardkernel.com/main/products/prdt_info.php?g_code=G138760240354" target="_blank">http://www.hardkernel.com/main/products/prdt_info.php?g_code=G138760240354
tinkerさん
そっちの方です。U3 IO Shield
何に使うかまでは、まだ考えていません。
あとは、
http://www.hardkernel.com/main/products/prdt_info.php?g_code=G134111883934" target="_blank">http://www.hardkernel.com/main/products/prdt_info.php?g_code=G134111883934
http://www.hardkernel.com/main/products/prdt_info.php?g_code=G138750628451" target="_blank">http://www.hardkernel.com/main/products/prdt_info.php?g_code=G138750628451