2011年04月14日

KZM-A9-DualボードのAndroidのADBの接続

KZM-A9-DualボードのAndroidは、USB経由とネットワーク経由の2つの方法で接続することができます。



ネットワーク経由での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では未確認です。



トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード