Отвечая на этот вопрос, поскольку я столкнулся с этой проблемой в той же ОС и смог решить ее следующим образом:
Загрузите и скомпилируйте последнюю версию исходного кода libusb 1.0.8.
Ниже приведены некоторые вызовы API, которые я использовал для запроса интерфейса USB 0:
libusb_init(NULL);
libusb_open_device_with_vid_pid(NULL, vendor_id, product_id);
libusb_detach_kernel_driver(devh, 0);
libusb_claim_interface(devh, 0);
libusb_close(devh);
libusb_exit(NULL);
Описание переменных в приведенном выше примере:
static struct libusb_device_handle *devh = NULL;
uint16_t vendor_id;
uint16_t product_id;
Чтобы получить идентификатор поставщика и идентификатор продукта, вы можете выполнить следующие команды (например, сведения о моем устройстве)
$ lsusb
...
Шина 001 Устройство 013: ID 0930: 6544 Корпорация Toshiba Kingston DataTraveler 2.0 Stick (2 ГБ)
...
Строка, разделенная полужирным двоеточием, содержит соответственно идентификатор поставщика и продукта.
Как скомпилировать код:
Я использовал следующую команду для компиляции своего кода:
/ bin / bash libtool --silent --tag = CC --mode = ссылка g ++ -Wall -Wundef -Wunused -Wshadow -D_DEBUG -I ../ libusb -g -O2 -o читать read.cpp .. /libusb/libusb-1.0.la -lusb-1.0 -lrt
Скопируйте libtool в область компиляции из извлеченного каталога libusb-1.0.8.
Надеюсь, это поможет.