Nexus7からUSB赤外線リモコンを操る(前編)
スマホを汎用の赤外線リモコンにしたいと言う需要は結構有そうに思うのだがどうだろう。
少なくとも私は以前から欲しかった。
で密林さんで見つけたのがこれ
FRISKのケースに入ると言うUSB接続のマルチリモコンのキットだ。
安いのでキットの方をポチったら翌々日に到着。
部品数が少ないのでハンダごて使える人なら簡単に作れます。
完成品:
PCに メーカのサイト から落としてきたアプリを入れて動作確認するとサクッと動きました。
Android との接続
いきなりはまります。
接続してアプリから UsbManager.getDeviceList() としても何も取得できません。
調べると OS レベルでは認識しているようなのですがアプリから見えないようです。
「UsbManager.getDeviceList empty」でググると一杯出てくるのですがどうも
マウス、キーボード、USBメモリはアプリには見せないようになっているらしいです。
仕様として明確になっている記述は見つかりません。
機種によって動く動かないの記事がみられるので
USBホスト機能自体ベンダー依存なのかもしれません。
この赤外線リモコンキットはキーボードとマウスのインターフェースを持っているため OSに誤認されデバイス全体が隠蔽されてしまっているようです。
ファームウェアの書き換え
このキットはファームウェアのソースが公開されていてフォーラムからDLできます。 そこでファームウェアを書き換えてキーボード、マウスの機能を無効化する事にします。
フォーラムからファームウェア書換えツールをDLして修正したファームウェアに書き換えます。
- ファームウェア書換えツール
- Android用修正ファームウェア
- (追記:2014/3/1に更新しました。)
ファームウェア書き換え手順
- デバイスを外して 赤いスイッチを BOOT側 にします。
- デバイスを接続して書換えツール(HIDBootLoader.exe) を起動します。
- 「Open hex file」ボタンを押してAndroid用修正ファームウェア(RemoconServant-for-android.hex)を選択します。
- 「Program/Verify」ボタンを押して Complete と表示されれば書き換え終了です。
- デバイスを外して 赤いスイッチを元に戻します。
ファームウェア修正内容
USBのdescriptor定義をいじってキーボード、マウスと認識されないようにしただけです。
自分でビルドしたい人は以下の修正パッチを当てて -D__FOR_ANDROID
でコンパイルして下さい。
- usb_descriptors.c Android用修正パッチ
- main.c Android用修正パッチ(2014/3/1追記)
ビルドツールが見つけ辛いのでリンクを張って置きます。
ファームウェア書き換え結果
ファームウェア書き換え後、Android に接続するとちゃんとアプリから認識できました。
リモコン アプリ
- アプリ作りました => USB赤外線リモコン アプリ
感想
さらっと書いてますが、ここまでめっちゃ大変でした。
アプリから認識されないUSBデバイスの種類が曖昧だし、 ファームウェアのコンパイラはチップメーカのサイトから消えてるし。
ともあれやっとこれで Android のプログラムに入れます。
「Nexus7からUSB赤外線リモコンを操る(中編)」に続きます。
