http://developer.android.com/guide/topics/connectivity/usb/host.html
FSUSB2がLinuxで使えるのは確認出来たので、今度はAndroidアプリから認識出来るか試してみたら、ハマってしまい何時間か無駄にしたのでメモしておきます。
ポイントは2つ。
- 本体でUSBホスト機能が有効になっていなかった。
カーネルはUSB機器が接続されたことを認識しているのに、Android側に何もメッセージが飛んでないので、原因を調べるのに随分かかりました。わかってしまえばなんのこともない。
これはD70Wがそうだっただけなのかもしれませんが、Android 3.1以降でもUSBホスト機能が有効になっていないことがあるみたいです。
下記の内容のファイルを android.hardware.usb.host.xml という名前で作成しておいて 、
<?xml version="1.0" encoding="utf-8"?> <permissions> <feature name="android.hardware.usb.host" /> </permissions>
このファイルをAndroidの /system/etc/permission ディレクトリに置いてからリブートすれば、USBホスト機能を有効に出来ます。
- USB機器を特定するためのIDの指定が10進数だった。
AndroidアプリがFSUSB2に特定して反応するように device_filter でベンダーIDとプロダクトIDを指定するわけですが、ここに16進数でIDを指定していたのでメッセージが受け取れていませんでした。
lsusbの出力にしろ、あちこちに出てくるメッセージにしろ、IDは16進数で表示されているので、それをそのまま設定していたのが敗因でした。
これは16進数を10進数になおして設定すれば良いです。
以上で、AndroidアプリからFSUSB2を認識するところまでは確認出来ました。
ありがとうございます!今まで全然手応えがなかったのが、これで前進しそうです。EKEN T01Aという中華パッドを使っています。android.hardware.usb.host.xml というファイル自体が存在していませんでした。
返信削除