我正在尝试将我的PC作为Android 2.3.4设备的USB主机,以便能够开发API而无需实际的"附件".为此,我需要将PC建立为USB主机和"设备"(在我的例子中是运行2.3.4的Nexus One).
我从http://android.serverbox.ch/开始使用libusb代码作为PC端的基础,以及Android端的DemoKit代码和Android文档.
这两个似乎很好地协商连接,并且接口被"声称"但在实际的批量传输尝试中死亡.在OSX上,错误是-5(LIBUSB_ERROR_NOT_FOUND),在Ubuntu Linux上(作为root)错误是-1(LIBUSB_ERROR_IO).(最近发布的每个版本都有最新的libusb 1.0.8).
这是代码.关于问题的其他评论欢迎,虽然这主要是一个概念验证,所以我真的只是在寻找批量转移不起作用的原因:
#include <stdio.h>
#include <libusb.h>
#include <string.h>
#define ENDPOINT_BULK_IN 0x83
#define ENDPOINT_BULK_OUT 0x03 // Have tried 0x00, 0x01 and 0x02
#define VID 0x18D1
#define PID 0x4E11
#define ACCESSORY_PID 0x2D00
#define ACCESSORY_ADB_PID 0x2D01 // Can't get this to work, if ADB is active, can't get handle on device
/*
ON OSX
gcc adktest.c -I/usr/local/include -o adktest -lusb-1.0.0 -I/usr/local/include -I/usr/local/include/libusb-1.0
ON UBUNTU
gcc adktest.c -I/usr/include -o adktest -lusb-1.0 -I/usr/include -I/usr/include/libusb-1.0
Testing on Nexus …Run Code Online (Sandbox Code Playgroud)