linux打开usb设备失败错误无响应

linux打开usb设备失败错误无响应,linux,permissions,usb,Linux,Permissions,Usb,我想在linux上连接usb设备。我用libusb连接。但是当我调用usb_open(dev)时,它返回NULL,查找并检查libusb源代码,在linux.c中我找到了usb_open.as的实现 int-usb_-os_-open(usb_-dev_-handle*dev) { char文件名[PATH_MAX+1]; snprintf(文件名,sizeof(文件名)-1,“%s/%s/%s”, usb_路径,dev->bus->dirname,dev->device->filename);

我想在linux上连接usb设备。我用libusb连接。但是当我调用usb_open(dev)时,它返回NULL,查找并检查libusb源代码,在linux.c中我找到了usb_open.as的实现

int-usb_-os_-open(usb_-dev_-handle*dev)

{

char文件名[PATH_MAX+1];
snprintf(文件名,sizeof(文件名)-1,“%s/%s/%s”,
usb_路径,dev->bus->dirname,dev->device->filename);
dev->fd=open(文件名,O_RDWR);
如果(dev->fd<0){
dev->fd=open(仅文件名);
如果(dev->fd<0)
USB\u错误\u STR(-errno,“无法打开%s:%s”,
文件名,strerror(errno));
}
返回0;
}

因此,它在打开时失败,并且每次都设置了errno。但我会像这样检查设备权限:

crw rw rw-1根根189,139 8月 26 10:38/dev/bus/usb/002/012

那么,是否有其他条件限制打开设备

char filename[PATH_MAX + 1];

snprintf(filename, sizeof(filename) - 1, "%s/%s/%s",
usb_path, dev->bus->dirname, dev->device->filename);

dev->fd = open(filename, O_RDWR);                                                      
if (dev->fd < 0) {
 dev->fd = open(filename, O_RDONLY);
 if (dev->fd < 0)
   USB_ERROR_STR(-errno, "failed to open %s: %s",
     filename, strerror(errno));
}

return 0;