2013年9月29日日曜日
Cubie Juke Box
とりあえず適当に色々触っていましたが...
この記事を見て「2倍の楽しさ秘めた、高音質ネットワーク機 CD-N500」、なんとなく目標が決まりました。
Cubie Juke Box
[機能]
1) CDのリッピング
cdparanoia を使用する。CDDBからデータを取得する部分をどう実現するか悩み中。
2) AAC or AC3 (DollyDigital?) へのエンコード
libav を使用する
3) SATA接続のHDD搭載
NTFSは、NTFS-3gを使っているので性能がイマイチです。
FATは4Gの制限があるから後々の事を考えるとダメ。
なので、Androidをちょっと改造して、ext4形式でHDDをマウントした。
4) S/PDIF でのパススルー出力
実験中。AC3で圧縮したデータをデコードせずに、そのままアンプに送りたいなぁ...
5) DLNA サーバー & クライアント
サーバーは minidlna を移植して実現できた。
クライアントは、FireAir Receiverというアプリが標準でインストールされていて動作するけど、ソースが公開されているものを探してます。
とりあえず現状で、Skiftaと言うアプリを使って、ソースとレンダラをCubieboard2にすると、スマホで再生操作ができた。
この話題は、また今度。
6) LCDにステータス表示
将来的には漢字が表示できるLCDが欲しいけど、そう言うのがまだ見つからない。
7) 再生・設定アプリ
一応操作できるように自前アプリを作る。Cubieboard2は、IRリモコンも使える。
操作するために、HDMIで画面を出すのもイマイチなので、Skiftaみたいにスマホからも操作できるようにしたい。
こんな感じです。
2013年9月27日金曜日
cubieboard2 + SPDIF + Passthrough
実はこれが一番の目的でした。
パススルー!!です。
折角SPDIFで外部のオーディオ機器と接続しているのですから、PCMに変換せず、そのままのDTS形式でデータを投げたいのです。
でも方法が分からず色々悩みましたが、やっとその答えが見えつつあります。
1.ドライバのソースをひたすら眺める。
A20 の SPDIF のドライバを以下のディレクトリに見つけました。
lichee/linux-3.3/sound/soc/sun7i/spdif/
この中のソースを眺めていると、気になるソースを発見!!
/*add the pcm and raw data select interface*/
switch(params_channels(params)) {
case 1:/*pcm mode*/
case 2:
fmt = 0;
break;
case 4:/*raw data mode*/
fmt = 1;
break;
default:
return -EINVAL;
}
う~ん。そんな物なのでしょうか?
チャンネル数が4ならRAWモード??
なんか微妙ですが、たぶんこれです。
2.再生する術を考える。
externalの下を眺めていると、使えそうなツールがありました。
その名も tinyalsa です。
そこで、先ほど得た知識を元に、tinyplay.c にパッチを...
チャンネル数を無理やり 4 に変えます。
// config.channels = channels;
config.channels = 4; // RAWモード
最後に、どっかのWEBサイトで拾ってきた DTS の WAV ファイルをこのツールで再生してみます。
# tinyplay test.wav -D 2
すると...わたくしの所有する SONY MDR-DS5100 (古っ!!)の DTS のインジケータが光輝きました。
なんとなく、音質が良くなった気がしますが、それ以上に、この方法で音楽を再生すると、Androidの操作音とMixされることが無くなるので、とても良い感じです。
操作音とMixされると、雑音っぽいのが混ざるのが気になったので...
とりあえず、パススルーっぽいものは動いています。
ですが、実用に至るまでには、もう少し調べることが残ってます。
何故ならDTSのデータの作り方が分かってません。
2013年9月21日土曜日
cubieboard2にI2C液晶をつける
トスリンクを買うときに、一緒にStrawberry LinuxのLCD液晶を買ってましたので、今日はそれを接続してみました。
接続方法は...
[LCD] 1 - [Cubieboard2] U14 44 (VCC 3.3V)
[LCD] 2 - [Cubieboard2] U15 6 (TWI1-SCK ※1)
[LCD] 3 - [Cubieboard2] U15 7 (TWI1-SDA ※1)
[LCD] 4 - [Cubieboard2] U14 42 (GND)
[LCD] 5 - [Cubieboard2] U14 44 (VCC 3.3V)
※1 I2Cの2つは3.3KΩの抵抗を使って、VCCにプルアップ接続してます。
毎度のことながら、これで正解かは、一切自信ありません。
動作確認...
テスト用に i2c-tools をビルドしてインストールします。
これも、いつもの事ながら、externalにコピーしてAndroid.mkを用意してビルドします。
特に、エラーもなくすんなりとビルドできました。
無事にLCDをcubieboard2から認識できているか確認します。
# i2cdetect -y 1
結果は...
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
第一関門突破です。
無事に認識しているようです!!
次にOkiraku Programmingさんのスクリプトを参考にして、以下のコマンドを入力しました。
# i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x78 0x5e 0x6c i
# i2cset -y 1 0x3e 0 0x0c 0x01 0x06 i
# i2cset -y 1 0x3e 0x40 0x31 0x32 i
すると、LCDに "01" と表示されました!!
これで動作確認できたので、今度は自分でプログラムを組んでみたいと思います。
2013年9月19日木曜日
cubieboard2 で AAC変換
完全に迷走気味な気がしますが、CDからリッピングしたデータをそのまま保存するのはサイズが大きいので、AACでエンコードしたいと思います。
そこで、libav を cubieboard2 にインストールしました。
方法は、gibhubのリポジトリをダウンロードして、android42/externalの下に放り込んでビルドしました。
NDKとか設定するが日頃から面倒で、cubieboardみたいにSDKのソース一式がある場合って、externalの下にコピーすれば何とかなるもんです。
ただ、今回は、time.h がどうしてもシステムの方を参照してしまうので、インチキっぽいですが、av_time.h とかファイル名を変えてエラーを回避しちゃいました。
その時、adbのシェルで実行したコマンドは以下のような感じ
# avconv -i track01.cdda.wav -acodec aac -strict experimental -f mp4 track01.m4a
5分の曲を1ファイル変換するのに 約1分
完成したファイルのサイズは 50MB -> 7MB で 約1/7 です。
デュアルコアのうち、片方しか使ってないようなので、CDからのリッピングと並列で行えば、なんとか実用可能なレベルだと思います。
2013年9月18日水曜日
cubieboard2 + SPDIF
昨日の続きです。
トスリンクの端子が届いたので、早速、cubieboard2に接続してみました。
[部品]
1) 送信用光コネクタ基板「TX177_D」
2) Photolink送信用:PLT133/T9
デジットさんのページで紹介されていた部品です。
これを組み立て、以下のように cubieboard2 と接続します。
[TX177D] 1 - [Cubieboard2] U14 42 (GND)
[TX177D] 2 - [Cubieboard2] U14 44 (VCC 3.3V)
[TX177D] 3 - [Cubieboard2] U14 41 (SPDIF)
※U14は、SATA端子がある方のコネクタです。(参考)
これで、トスリンク端子の増設が完了しました。
Cubieboard2 の F/W の修正は、sys_config.fex の記述を1つ変更するだけです。
(変更前) spdif_used = 0
(変更後) spdif_used = 1
最後に、Android起動後、設定画面でサウンド出力先をSPDIFに変えればOKです。
【注意!!】
私はハードウェアの事が良く分かってません。
もしこれで、あなたのcubieboard2 が壊れても一切責任は取れません。
この回路に何か問題がありそうなら、是非教えて頂きたいです。m(_ _)m
cubieboard2でデジタルオーディオ
私の青春時代ってレコードはCDに、テープはMDに、ビデオはDVDにと、
アナログがどんどんデジタルに置き換わっていった時代で、
自分も何かそこに未来を感じていて、とても夢があふれていた時代でした。
まぁ、一通り置き換わった今、だから何って感じなのですが...
そんなこんなで、夜中にヘッドフォンで音楽を聴きながらコーディグを勤しんでますが、
突然盛大なノイズが乗ることがあります。
まぁ、USBで通信している時なんですけどね...
何せヘッドフォン端子がUSB端子の隣にあり、USBを使うたび、
ピ~ヒャラヒャラと... お前はどこのテープリーダーだって感じです。
結局、人が音を聞く時、最後はアナログで、その大切なところで、
ノイズが乗りまくるわけです。
安物のマザーボードには、私の青春の1ページだったトスリンク
(※最近、正式名称を覚えました。以前は、ずっと光端子...)
なんて付いてません。
もっと、音楽を聴きながら、快適にコーディングをしたい!!
最近流行りの、USB DAC的な事をしたい。
ただ、USB DACは個人的に、そんな馬鹿なってことが多いので、
ちょっと敬遠気味です...
そろそろ、前置きが長くなりましたが、
トスリンク端子が欲しいです。
それで、SONYのワイヤレスヘッドフォンと繋ぎたいです。
次のcubietrackには付いているらしいのですが、まだ売ってません
しょうがないので、cubieboard2にトスリンクを追加します。
とりあえず部材は注文しました。
でも、まだ届いてません。
とりあえず今日は、素材となるCDのデータを吸い出すために、
cubieboard2上にcdparanoiaを移植しました。
cubieboard2だと、USB接続のDVDのデバイスパスが以下のようになるみたいで、
この部分だけcdparanoiaの改造が必要でした。
DVDドライブのパス : /dev/block/sr0
改造したソース : scan_devices.c
static char *cdrom_devices[]={
"/dev/block/sr?", <--- 追加
"/dev/cdrom",
"/dev/cdroms/cdrom?",
"/dev/hd?",
:
無事、cubieboard2で、CDのデータをリッピングできました。
ただ、薄々気づいているんです。
当面の興味の対象がCubieboard2で、そのボード上でデバッグしてて、
音楽を再生している場合じゃないって事。
結局、一番近くにあるノイズだらけの端子に、ヘッドフォンを繋ぐ私がいる事実...
2013年9月4日水曜日
公式のSDK
CubieBoard2のSDKが公開されていないなんて間違いでした。
検索すれば普通に出てきますね。
Tutorials for CB2
なんで今まで気が付かなかったのだろう...
でも、IEでダウンロードすると何故かファイルの拡張子が tar になって展開できません。
FireFoxでダウンロードし直しです。
多分、また10時間位かかります。
検索すれば普通に出てきますね。
Tutorials for CB2
なんで今まで気が付かなかったのだろう...
でも、IEでダウンロードすると何故かファイルの拡張子が tar になって展開できません。
FireFoxでダウンロードし直しです。
多分、また10時間位かかります。
2013年8月31日土曜日
Cubieboard2のSDK
Cubieforumに記述されていたA20のSDK
WAX Berry A20-Piの方は、中国のサイトだけあって、タイムアウトでダウンロードできませんでしたが、
A20-SDK torrentの方は、ダウンロードできました。
ビルドした結果は、https://github.com/cubieboard2/manifests にある公式?のバイナリと
同じになると思います。
ただ残念ながら、このSDKは、タブレット用の定義しかないので、
CubieBoard2用としては、イマイチです。
SDKが公開されていないと、こういうボードの魅力は、無いに等しいと思う。
linuxで使えってことなのかなぁ...イマイチです。
とりあえず気を取り直して、次は、GPIOでLED点滅とか、I2Cで外付けLCD制御とか、
電子工作的な物にチャレンジしてみたいなぁと考えてます。
WAX Berry A20-Piの方は、中国のサイトだけあって、タイムアウトでダウンロードできませんでしたが、
A20-SDK torrentの方は、ダウンロードできました。
ビルドした結果は、https://github.com/cubieboard2/manifests にある公式?のバイナリと
同じになると思います。
ただ残念ながら、このSDKは、タブレット用の定義しかないので、
CubieBoard2用としては、イマイチです。
SDKが公開されていないと、こういうボードの魅力は、無いに等しいと思う。
linuxで使えってことなのかなぁ...イマイチです。
とりあえず気を取り直して、次は、GPIOでLED点滅とか、I2Cで外付けLCD制御とか、
電子工作的な物にチャレンジしてみたいなぁと考えてます。
2013年8月29日木曜日
cubieboard2 で HDMI 1080P 出力
sys_config.fexの呪文を書き換えることで 1080P 出力にしても
表示が乱れなくなりました。
A10よりは良さそうですが、解像度を1920x1080にすると若干もたつく。
A10の時に使っていた設定と同じように、1280x720を1080Pに拡大表示する方法が、
ベストかなぁと思いつつ、この設定をすると表示が乱れちゃう...
ただ、これはハードの問題というよりは、hwcomposerあたりに
バグがありそうな気がします。
とりあえず当面は、1920x1080&1080P のプチセレブ仕様で使います。
表示が乱れなくなりました。
A10よりは良さそうですが、解像度を1920x1080にすると若干もたつく。
A10の時に使っていた設定と同じように、1280x720を1080Pに拡大表示する方法が、
ベストかなぁと思いつつ、この設定をすると表示が乱れちゃう...
ただ、これはハードの問題というよりは、hwcomposerあたりに
バグがありそうな気がします。
とりあえず当面は、1920x1080&1080P のプチセレブ仕様で使います。
2013年8月28日水曜日
cubieboard2にSATAのHDDを接続する
2.5inchのHDDが余ってたので、
昨日作ったAndroidに、更にSATAの設定追加してビルドしました。
結果...
HDDを認識しファイルにもアクセスできるけど、なんかカチャカチャ異音がする。
HDDが物理的に壊れている可能性が高いけど、
電源が足りてないというのも否定できない。
う~ん。今日も微妙。
そういえば、CubieforumsにA20のSDKのURLが記載されてました。
http://www.cubieforums.com/index.php?topic=471.0
試しにダウンロード中ですが、多分、私が持ってるのと同じだと思う。
同じだったら、暇な時にでも、ビルド方法を記述します。
っていうかA10と殆ど同じなんだけどね。
※追記
電源だった。
iPadの充電器を利用して、Cubieboard2に電源を供給したら、
カチャカチャ言わなくなった。
やっぱり、USBからの給電だけではHDDは動かないよ。
昨日作ったAndroidに、更にSATAの設定追加してビルドしました。
結果...
HDDを認識しファイルにもアクセスできるけど、なんかカチャカチャ異音がする。
HDDが物理的に壊れている可能性が高いけど、
電源が足りてないというのも否定できない。
う~ん。今日も微妙。
そういえば、CubieforumsにA20のSDKのURLが記載されてました。
http://www.cubieforums.com/index.php?topic=471.0
試しにダウンロード中ですが、多分、私が持ってるのと同じだと思う。
同じだったら、暇な時にでも、ビルド方法を記述します。
っていうかA10と殆ど同じなんだけどね。
※追記
電源だった。
iPadの充電器を利用して、Cubieboard2に電源を供給したら、
カチャカチャ言わなくなった。
やっぱり、USBからの給電だけではHDDは動かないよ。
cubieboard2用にAndroidをビルドしてみた
先代のcubieboardと同じで、cubieboard2もAndroidのソース一式が公開されていると
勘違いしてました。
残念ながらビルド済みのバイナリだけでソースは公開されていないようです。
しょうがないので、手元にあった、A20用のAndroidをビルドして
cubieboard2にインストールしてみました。
無事起動しましたが...
相変わらず、HDMIを1080Iとか1080Pに切り替えると表示が乱れます。
cubieboard2のサイトで配っているAndroidのバイナリは、タブレット用が
ベースになっていると思われ、HDMIの解像度を切り替える機能が無く、
更に720P固定になってる。
私の設定が何か悪かったのかもしれないけど、Allwinnerのドキュメントって
中国語で全然分かんないし...
ただ、本当に表示できるのかなぁ...
A10だって結局...
cubieboard2用のAndroidのソース一式、
公開してくれないかなぁ...
勘違いしてました。
残念ながらビルド済みのバイナリだけでソースは公開されていないようです。
しょうがないので、手元にあった、A20用のAndroidをビルドして
cubieboard2にインストールしてみました。
無事起動しましたが...
相変わらず、HDMIを1080Iとか1080Pに切り替えると表示が乱れます。
cubieboard2のサイトで配っているAndroidのバイナリは、タブレット用が
ベースになっていると思われ、HDMIの解像度を切り替える機能が無く、
更に720P固定になってる。
私の設定が何か悪かったのかもしれないけど、Allwinnerのドキュメントって
中国語で全然分かんないし...
ただ、本当に表示できるのかなぁ...
A10だって結局...
cubieboard2用のAndroidのソース一式、
公開してくれないかなぁ...
2013年7月4日木曜日
cubieboard2を買ってみた
最近、A10で開発しているのですが、本当に不安定で苦労してます。
自分が悪いのか、それとも本当に、こんな物なのか比較検証してみたくで、
開発キットを買ってみました。
cubieboard2です。 A20搭載です。
僕が持っている試作のA20搭載機は、ネットワークが何故か動かないけど、
こっちのは動くみたいです。
何時届くかなぁ。
とりあえず、githubで入手したソースをビルドして待つとします。
登録:
投稿 (Atom)