Интерфейс libusb уже заявлен - PullRequest
10 голосов
/ 16 июня 2011

Я пишу драйвер устройства для USB-устройства, используя libusb.Когда я пытаюсь получить устройство, я получаю код ошибки LIBUSB_ERROR_BUSY (-6).В соответствии с документацией это означает, что устройство уже заявлено ( ссылка ).

Как узнать, какой драйвер / программа потребовал устройство и, что более важно, как я могу, я , запросите устройство, как только оно будет востребовано.

Фрагмент кода:

r = libusb_claim_interface(handle[0], 0);
if (r < 0) {
    fprintf(stderr, "libusb_claim_interface error %d\n", r);
    goto out_release;
}
printf("claimed interface\n");

Вывод:

libusb_claim_interface error -6

Ответы [ 3 ]

15 голосов
/ 25 июня 2011

Вы звоните libusb_detach_kernel_driver() до libusb_claim_interface()?Это может быть необходимо.

2 голосов
/ 29 сентября 2011

Скорее всего, проблема в том, что интерфейс запрашивается другим драйвером Linux.позвоните libusb_detach_kernel_driver() и укажите номер интерфейса, после чего вы сможете его подключить.

0 голосов
/ 17 июня 2011

Вы звонили libusb_set_configuration() до libusb_claim_interface()?

Это нужно вызывать, даже если в дескрипторе есть только одна конфигурация.

...