интерфейс libusb уже заявлен

Я пишу драйвер устройства для 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

person jairo    schedule 15.06.2011    source источник
comment
Я нашел этот пост в поисках Как узнать, какой драйвер / программа потребовал устройство, и поэтому я хотел связать этот вопрос: Есть ли способ выяснить, что использует модуль ядра Linux?, что, на мой взгляд, актуально, потому что в нем говорится, что невозможно увидеть, какие программы требуют драйвер / модуль.   -  person sdaau    schedule 18.03.2013


Ответы (3)


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

person David Grayson    schedule 25.06.2011

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

person linsek    schedule 29.09.2011

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

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

person Turbo J    schedule 17.06.2011
comment
Я попробовал, но вернул ту же ошибку (-6). Взяв пик на usb-devices из терминала, usb-storage указан в качестве драйвера для устройства. По какой-то причине устройству назначается драйвер, и я не смог этого предотвратить. Я пробовал использовать правила udev. - person jairo; 20.06.2011