Я тоже пытаюсь отладить устройство Android Accessory Mode (ADK), когда оно подключено к телефону Nexus S.Хотя я не смог отладить свое оборудование, я нашел полезным использовать систему Linux в качестве устройства режима доступа.Это позволяет использовать usbmon и Wireshark для наблюдения за базовым протоколом.
Если у кого-то есть способ отладки соединения Android-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) Compile и загрузите приложение USBTest на ваше устройство Android, используя eclipse ( developer.android.com / sdk / installation.html ) или предпочитаемый вами метод.Вам нужно установить 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) Запустите Wireshark с правами rootи выберите соответствующий интерфейс захвата:
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) Пример сеанса захвата Wireshark для связи simplectrl-to-USBTest доступен в виде вложения в списке поддержки библиотеки 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 ).