在Nexus中调试一个Android Usb附件模式

时间:2011-08-01 07:55:45

标签: android debugging usb adb

当我们在Usb附件模式中使用Nexus时,我们应该关闭手机中的adb模式。或者Usb附件无法访问。

有人知道adb模式是否关闭,我们如何调试apk? 我试过远程调试。失败。

谷歌sdk说:  0x2D00保留用于支持附件模式的Android设备。 0x2D01保留用于支持附件模式的设备以及ADB(Android调试桥)协议,后者为ADB公开了第二个带有两个批量端点的接口。如果要在计算机上模拟附件,则可以使用这些端点来调试附件应用程序。通常,除非您的附件正在设备上对ADB实施直通,否则请勿使用此接口。

但是我们如何使用PID 2D01激活Nexus?我的Nexus只适用于2D00

在此处添加参考: http://developer.android.com/guide/topics/usb/adk.html#determine

3 个答案:

答案 0 :(得分:3)

我也试图在连接到Nexus S手机时调试Android附件模式(ADK)设备。虽然我无法调试我的硬件,但我发现使用Linux系统作为附件模式设备很有用。这允许使用usbmonWireshark来观察基础协议。

如果有人有办法调试Android-to-Accessory通信而无需购买USB协议分析仪( www.openvizsla.org ),请提供帮助。

Nexus-Computing GmbH( android.serverbox.ch/?p=262 )simplectrl.c(Linux端)和UsbTest(Android端)非常宝贵,是以下基础:

在Ubuntu 11.04下如何捕获USB流量:

1)启用usbmon:

mount -t debugfs none_debugs /sys/kernel/debug

sudo modprobe usbmon

2)安装Wireshark和帮助程序:

sudo apt-get -y install flex bison wireshark libusb-dev libusb-1.0-0-dev

apt-get source libusb

3)下载并安装libpcap,( www.tcpdump.org/release/libpcap-1.1.1.tar.gz

tar xvf libpcap-1.1.1.tar.gz

cd libpcap-1.1.1

./configure

make

sudo make install

4)将您的Android设备连接到Linux系统并确保已连接:

?/android-sdk/platform-tools/adb devices

5)使用eclipse( developer.android.com/sdk/installing.html )或您首选的方法编译并将USBTest App上传到您的Android设备上。您需要安装Google API 2.3.3。我已经更新了simplectrl和UsbTest以及一些错误修复,以确保它们开箱即用。它们在LUFA图书馆支持列表( groups.google.com/group/lufa-support/msg/2e6d76c92d9e828a )中作为附件提供。

6)确定要捕获的正确USB总线。 lsusb将输出如下内容:

Bus 001 Device 057: ID 18d1:4e22 Google Inc.

以上表示您的Android设备位于总线001上。

7)以root权限启动Wireshark并选择适当的捕获接口:

gksudo wireshark

8)将Linux系统连接到Android设备并运行simplectrl

rm ./simplectrl; gcc simplectrl.c -I/usr/include/ -o simplectrl -lusb-1.0 -I/usr/include/ -I/usr/include/libusb-1.0

9)示例Simpleshatrl-to-USBTest通信的Wireshark捕获会话作为LUFA库支持列表中的附件提供( groups.google.com/group/lufa-support/msg/8c740dfa58a1d1fd )。


如果要传输usbmon捕获的数据,可以执行以下操作:

1)列出usbmon接口:sudo ls -laR /sys/kernel/debug/usb/usbmon/

2)使用lsusb列出已连接的设备。输出将类似于:

Bus 001 Device 057: ID 18d1:4e22 Google Inc.

3)以上意味着您的Android设备位于总线001上,因此您应该从总线1捕获数据:

sudo sudo cat /sys/kernel/debug/usb/usbmon/1u

*注意总线0捕获所有总线。 u定义数据的输出格式。欲了解更多信息,请阅读( www.kernel.org/doc/Documentation/usb/usbmon.txt )。

答案 1 :(得分:1)

通过wifi调试USB附件似乎只能在Nexus设备上使用(我使用的是Nexus 7和Nexus 7 2013)。我尝试了很多其他设备(三星,摩托罗拉),在设置中启用USB调试时,他们没有检测到配件。还试过硬件usb切换器 - 没有帮助。

答案 2 :(得分:0)

如果您正在寻找此类信息,

Nexus one not showing in DDMS problem

还要看看我的答案。