ChumbyでFTDI
小さい目覚ましLinuxコンピュータ時計のChumbyで、FTDIのUSBシリアル変換チップ、例えばFT232RLを認識させて、Flashからコントロールしようと考えているのですが、方向性が見えてきたので一旦まとめ記事を作っておきたいと思います。
調べてみると先人によって実験がされていることがわかりました。例えばISHさんのChumby目覚ましリモコン化という記事が大変参考になります。要約を書いておきますと、手順としては以下ののことをされていました。
- Chumbyのクロス開発環境を構築
- カーネル/ドライバ(ftdi_sio.ko)のリビルド、この際にFTDIのドライバを組み込む
- 組み込んだFTDIのドライバとFlashを中継してくれるようなcgiを作成して、FlashからFTDIのチップを叩けるようにする
- できたカーネルやドライバ、cgiをChumbyに入れ込む
ポイントとしては、Chumbyに載っているフラッシュプレーヤのソースが公開されていないため、フラッシュからハードを叩く方法がわからないことだと思います。これはChumbyに載っているフラッシュがAdobeとの共同開発で、ライセンスに縛りがあるためのものだそうです。そこでcgiを作成することによって、フラッシュからハードへのブリッジをしているというわけです。
最近の事情(SW 1.6.0/FW 773)ですと、上記のリンクで手作りをしているドライバ(ftdi_sio.ko)が標準でついてくるようになりました。/drivers/ftdi_sio.koというのがそれで、insmodをすることによってFTDIのチップを認識するようになります。とりあえずの動作確認はinsmodをしたときにエラー表示がでないこと、lsmodでftdi_sioが表示されること、FTDIチップをUSBにつないだあと/dev/ttyUSB0が現れることで行いました。
しかし残念ながら、起動時にこのドライバを読み込むことにはなっていない、つまりはいちいち起動後にシェルにログインしてinsmodで有効化する必要があるようです。これは起動時に実行されるスクリプト/etc/init.d/rcSにinsmod ftdi_sio.kioがないことからうかがい知ることができます。従ってこのスクリプトを書き換えてしまえばいいのですが、残念ながらファイルシステムが読み込みのみ可能であるcramfsでできているので、単純にvi等で書き換えることができません。これをするためには『How to modify the root filesystem』にあるように、ddコマンドでイメージを吐き出し、別のマシンでマウントして、編集後、あらたなイメージを作成、Chumbyにいれなおす、という手順をとらないといけないようです。
以上述べてきた作業、cgiを入れ込んだり、FTDIドライバを有効にする作業は、Linuxなどに長けている人ならば別に抵抗なくできるでしょうが、ChumbyとFTDIを使って何かをしてくれるだろう人、極端に言うならばArduinoやGainer、XBeeを使って何かしようとしているアーティストの方、にとってはかなり酷な作業かと思います。そこで自動化できないか検討してみようと考えていますが、どうやらUSBメモリスティックにちょっとした細工をすることによって可能になると思います。具体的には、ファイルが存在すれば起動時にカスタムな処理を行ってくれるUSB上のdebugchumbyというスクリプトを(ごにょごにょ)する予定です。
※Cygwin上でChumbyの開発環境をつくりました。
※※(ごにょごにょ)で自動化しました。
コメント
>あおきさん
Chumbyでもfscommand()やfscommand2()は関数としてあるみたいですが、それはシェルを直接たたくものではなく、FlashのPlayerが応答している(PCの場合ではブラウザが応答しているらしい?)のではないでしょうか。認識が間違っていたら指摘願います…
仰るとおりシェルをたたくためのものじゃないです。
もしハードウェアに密着した処理をたたけるようにするんだったらそこに押し込むかなってだけですね。ケータイ用のFlashなんかじゃそうなってるし。
(もちろん、ケータイでも限定的な用途に使えるだけで、自由にハードウェアたたけるわけじゃないです。)
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。
>フラッシュからハードを叩く方法がわからない
Posted by: あおき : October 7, 2008 01:35 PMfscommand()とかでできないんですな。
できてもいいような気がするけどヘタにできちゃうとナニなんでしょうな。