lollipop上的libusb - 无法获取设备列表

时间:2015-07-27 13:58:52

标签: android security android-5.0-lollipop libusb android-5.1.1-lollipop

几天前我已经在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上进行测试

PPS。我也无法使用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;

0 个答案:

没有答案