ChumbyでFTDI

小さい目覚ましLinuxコンピュータ時計のChumbyで、FTDIのUSBシリアル変換チップ、例えばFT232RLを認識させて、Flashからコントロールしようと考えているのですが、方向性が見えてきたので一旦まとめ記事を作っておきたいと思います。

調べてみると先人によって実験がされていることがわかりました。例えばISHさんのChumby目覚ましリモコン化という記事が大変参考になります。要約を書いておきますと、手順としては以下ののことをされていました。

  1. Chumbyのクロス開発環境を構築
  2. カーネル/ドライバ(ftdi_sio.ko)のリビルド、この際にFTDIのドライバを組み込む
  3. 組み込んだFTDIのドライバとFlashを中継してくれるようなcgiを作成して、FlashからFTDIのチップを叩けるようにする
  4. できたカーネルやドライバ、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を使って何かをしてくれるだろう人、極端に言うならばArduinoGainer、XBeeを使って何かしようとしているアーティストの方、にとってはかなり酷な作業かと思います。そこで自動化できないか検討してみようと考えていますが、どうやらUSBメモリスティックにちょっとした細工をすることによって可能になると思います。具体的には、ファイルが存在すれば起動時にカスタムな処理を行ってくれるUSB上のdebugchumbyというスクリプトを(ごにょごにょ)する予定です。

Cygwin上でChumbyの開発環境をつくりました。
※※(ごにょごにょ)で自動化しました。

October 07, 2008 08:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdelicious.comでブックマーク

コメント

>フラッシュからハードを叩く方法がわからない
fscommand()とかでできないんですな。
できてもいいような気がするけどヘタにできちゃうとナニなんでしょうな。

Posted by: あおき : October 7, 2008 01:35 PM

>あおきさん
Chumbyでもfscommand()やfscommand2()は関数としてあるみたいですが、それはシェルを直接たたくものではなく、FlashのPlayerが応答している(PCの場合ではブラウザが応答しているらしい?)のではないでしょうか。認識が間違っていたら指摘願います…

Posted by: fenrir : October 7, 2008 10:56 PM

仰るとおりシェルをたたくためのものじゃないです。
もしハードウェアに密着した処理をたたけるようにするんだったらそこに押し込むかなってだけですね。ケータイ用のFlashなんかじゃそうなってるし。
(もちろん、ケータイでも限定的な用途に使えるだけで、自由にハードウェアたたけるわけじゃないです。)

Posted by: あおき : October 9, 2008 10:10 AM

コメントする