Я пытаюсь создать драйвер для USB-к-DMX преобразователя (Velleman VM116.)USB ошибка разрешения с помощью libusb
У меня есть проблема в том, что, когда я пытаюсь открыть устройство USB и настроить его его возвращает ошибку: Configurating USB failed: Operation not permitted
, я не могу найти, что означает эта ошибка. Как я могу правильно настроить USB-устройство? Это мой код:
int dmxOpen(){
int result;
struct usb_bus *busses;
struct usb_bus *bus;
usb_init();
usb_find_busses();
result = usb_find_devices();
if(result < 0){
perror("Finding USB devices failed");
return 0;
}
usb_set_debug(1);
busses = usb_get_busses();
for(bus = busses; bus; bus = bus->next){
for(dev = bus->devices; dev; dev = dev->next){
if ((dev->descriptor.idVendor == 0x10cf) && (dev->descriptor.idProduct == 0x8062)){
udev = usb_open(dev);
#if defined(LIBUSB_HAS_GET_DRIVER_NP) && defined(LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP)
usb_detach_kernel_driver_np(udev, 0);
#endif
result = usb_set_configuration(udev, dev->descriptor.bNumConfigurations);
if(result < 0){
usb_close(udev);
perror("Configurating USB failed");
return 0;
}
result = usb_claim_interface(udev, 0);
if(result < 0){
usb_release_interface(udev, 1);
usb_close(udev);
perror("Claiming USB failed");
return 0;
}
return 1;
}
}
}
return 0;
}
Кстати мой компьютер работает на Linux Debian 64 бит, и это те характеристики устройства:
Bus 010 Device 002: ID 10cf:8062 Velleman Components, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x10cf Velleman Components, Inc.
idProduct 0x8062
bcdDevice 0.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 41
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 29
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
всегда, используйте perror вместо printf –
Теперь я изменил все 'printf' на' perror', а ошибка 'Configurating USB failed: Operation not allowed ', как я могу получить разрешение? – tversteeg
Не уверен, почему операция не разрешена, может быть проблемой с привилегиями, попробуйте запустить ее как root. Это метод драйвера или тестовое приложение для драйвера? –