几天前,我在 Android Lollipop 上测试了我的应用程序,但它停止工作。调试后发现 libsub 无法获取设备列表:
struct libusb_device **devs;
int devs_count = libusb_get_device_list(ctx, &devs);
我继续挖掘资源并发现下一个失败(linux_usbfs.c):
DIR *buses = opendir(usbfs_path); // '/dev/bus/usb', correct
struct discovered_devs *discdevs = *_discdevs;
int r = 0;
if (!buses) {
usbi_err(ctx, "opendir buses failed errno=%d", errno);
return LIBUSB_ERROR_IO; // my case!
}
usbfs_path 是正确的 ( /dev/bus/usb
),我的设备是/dev/bus/usb/003/002
.
如何在 Android Lollipop 中使用 libusb 使用 USB 设备?
以前我已经遍历设备,使用 PID 和 VID 找到我的设备,请求它的端点并照常工作。现在我无法struct libusb_device **devs;
使用libusb_get_device_list
,这会停止一切。从 android 获取设备路径和打开的连接文件描述符我能做什么?
PS。使用 Android 5.1.1 在 Nexus 9 上进行测试
聚苯乙烯。我也不能使用,libusb_open_device_with_vid_pid
因为它也请求设备列表:
DEFAULT_VISIBILITY
libusb_device_handle * LIBUSB_CALL libusb_open_device_with_vid_pid(
libusb_context *ctx, uint16_t vendor_id, uint16_t product_id)
{
struct libusb_device **devs;
struct libusb_device *found = NULL;
struct libusb_device *dev;
struct libusb_device_handle *handle = NULL;
size_t i = 0;
int r;
if (libusb_get_device_list(ctx, &devs) < 0)
return NULL;