gpt4 book ai didi

c - 使用 libusb 的 USB 权限错误

转载 作者:行者123 更新时间:2023-12-04 05:08:26 25 4
gpt4 key购买 nike

我正在尝试为 USB 到 DMX 转换器(Velleman VM116)创建驱动程序。

我遇到的问题是,当我尝试打开 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

最佳答案

It was indeed a privilege problem, when I sudo it it works



您可以使用 UDEV用于更改 USB 设备连接权限的脚本。这样你就不需要成为 root允许通过 libusb 访问.

关于c - 使用 libusb 的 USB 权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15209315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com