libusb on 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,

Как я могу работать с USB-устройством, используя libusb в Android Lollipop?

Ранее я перебирал устройства, находил свое устройство, используя PID и VID, запрашивал его конечные точки и работал как обычно. Теперь я не могу получить struct libusb_device **devs; с помощью libusb_get_device_list и это останавливает все. Что я могу сделать, имея путь к устройству и открытый дескриптор файла подключения с Android?

PS. тестирование на Nexus 9 с Android 5.1.1

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 ответов

Другие вопросы по тегам