2011年04月14日
KZM-A9-DualボードのAndroidのADBの接続
ネットワーク経由でのADBの接続
KZM-A9-Dualボードを有線LANにつなぎます。IPアドレスはDHCPサーバから取得するようになっています。そのIPアドレスを確認します。
# netcfg lo UP 127.0.0.1 255.0.0.0 0x00000049 eth0 UP 192.168.1.123 255.255.255.0 0x00001043
シリアルのコンソールのshellで以下を実行します。(adb経由のshellだと stop adbdをしたら切れてしまいますので注意。)
# setprop service.adb.tcp.port 5555 # stop adbd # start adbd
ホスト側(Ubuntu)で以下を実行します。
$ export ADBHOST=192.168.1.123 $ adb kill-server $ adb devices * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached emulator-5554 device
ネットワーク経由の場合はemulator-5554として認識されます。この状態で
$ adb shell #
つながりました。
Eclipseから接続したい場合は、この後に続けてコマンドラインからEclipseを起動してください。(つまり環境変数ADBHOSTに同じ値が設定してある状態でEclipseを起動する。)
恒久的にネットワーク経由でadbを使いたい場合は、KZM-A9-Dualボードのルートディレクトリにある init.kzm9d.rc のon boot のところに setprop service.adb.tcp.port 5555 を追加しておきます。
KZM-A9-Dualボードが複数ある場合でもIPアドレスで区別することができます。
USBでのADBの接続
KZM-A9-Dualボードのmini Bコネクタから市販の変換ケーブルを使ってホストのUSBにつないでください。
KZM-A9-Dualに添付のカーネルはUSBのベンダーIDの値をあえて変更しませんでした。そのため、ホスト(Windows/Mac/Linux)側でNexus Oneを認識するUSBドライバをインストールしておけば使用可能です。(2011.4.14 修正 後ろに追記)
もしこれを変更したいならば、カーネルのソースの以下の部分を変更してください。
drivers/usb/gadget/android.c
#define VENDOR_ID 0x18D1
USBで複数台のKZM-A9-Dualを使う
残念ながら現在のKZM-A9-DualのカーネルではUSBのシリアル番号が固定値になっています。そのため複数台のKZM-A9-Dualをつなぐと以下のようになってしまって区別ができません。
$ adb devices List of devices attached 0123456789ABCDEF device 0123456789ABCDEF device
とりあえずの回避策として、カーネルのソースのこの固定値の部分を変更してビルドし直します。
drivers/usb/gadget/android.c
--- android.c.org 2011-04-13 15:48:11.133594221 +0900 +++ android.c 2011-04-13 15:49:22.662772278 +0900 @@ -109,7 +109,8 @@ /* These dummy values should be overridden by platform data */ [STRING_MANUFACTURER_IDX].s = "Android", [STRING_PRODUCT_IDX].s = "Android", - [STRING_SERIAL_IDX].s = "0123456789ABCDEF", + /*[STRING_SERIAL_IDX].s = "0123456789ABCDEF",*/ + [STRING_SERIAL_IDX].s = "0123456789ABCDAB", { } /* end of list */ }; #endif
これで片方のカーネルを入れ替えると以下のようになります。
$ adb devices List of devices attached 0123456789ABCDEF device 0123456789ABCDAB device
これで adbの-sオプションを使ってどちらかを選んで接続できるようになります。
$ adb -s 0123456789ABCDAB shell
(2011.4.14 追記)
LinuxでのUSBドライバの設定
Nexus Oneと同じ ルールでKZM-A9-Dualボードを認識します。
/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
WindowsでのUSBドライバの設定
Google USBドライバのandroid_winusb.infに以下の修正をしたらKZM-A9-Dualボードを認識するようになりました。
$ diff -u android_winusb.inf.org android_winusb.inf --- android_winusb.inf.org 2011-04-14 17:11:52.646278800 +0900 +++ android_winusb.inf 2011-04-14 17:35:43.985146700 +0900 @@ -40,6 +40,7 @@ ;Google NexusOne %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02&MI_01 +%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0002&MI_01 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E11 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E12&MI_01 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E22&MI_01 @@ -59,6 +60,7 @@ ;Google NexusOne %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02&MI_01 +%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0002&MI_01 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E11 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E12&MI_01 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E22&MI_01
Windows7 64bitで確認しました。この修正は無保証です。
MacでのUSBドライバの設定
Macでは未確認です。