无法声明接口 0:设备或资源忙
Failed to claim interface 0: Device or resource busy
我正在尝试使用 WEBUSB API
与 USB 设备通信。但是当我试图声明接口时它显示
"DOMException: Unable to claim interface"
bConfigurationvalue
是1
,接口号是0
。我在
下面添加命令 lsusb -v
的输出
~$ lsusb -v
Bus 001 Device 005: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0930 Toshiba Corp.
idProduct 0x6544 TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB)
bcdDevice 1.00
iManufacturer 1 TOSHIBA
iProduct 2 TransMemory
iSerial 3 C412F52D6C84CFC0A0012AEF
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 255
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 255
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
为什么显示设备或资源繁忙。如何认领接口?
设备显示为忙碌,因为这是一个 USB 大容量存储 class 设备,并且 Linux 将在连接时自动加载声明接口 0 的内核驱动程序。
您可以manually unbind the USB device driver使用以下命令:
echo -n "1-1:1.0" > /sys/bus/usb/drivers/usb-storage/unbind
"1-1:1.0" 指定 USB 存储驱动程序应解除绑定的设备和接口。 “1-1”表示总线1,端口1,“1.0”表示配置1,接口0。这样连接设备时,内核日志中会打印此信息,
usb-storage 1-1:1.0: USB Mass Storage device detected
您设备的总线和端口号可能会有所不同。
虽然这应该允许您将此设备与 WebUSB 一起使用,但由于涉及手动步骤,它不太可能用作长期解决方案。 WebUSB 专为没有内置操作系统驱动程序的设备而设计。
我遇到了设备问题,发现 usb_modeswitch
命令很有用。给定供应商和产品 ID,可以重置设备。例如:
usb_modeswitch -v 0x1d50 -p 0x60e3 --reset-usb
我正在尝试使用 WEBUSB API
与 USB 设备通信。但是当我试图声明接口时它显示
"DOMException: Unable to claim interface"
bConfigurationvalue
是1
,接口号是0
。我在
lsusb -v
的输出
~$ lsusb -v
Bus 001 Device 005: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0930 Toshiba Corp.
idProduct 0x6544 TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB)
bcdDevice 1.00
iManufacturer 1 TOSHIBA
iProduct 2 TransMemory
iSerial 3 C412F52D6C84CFC0A0012AEF
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 255
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 255
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
为什么显示设备或资源繁忙。如何认领接口?
设备显示为忙碌,因为这是一个 USB 大容量存储 class 设备,并且 Linux 将在连接时自动加载声明接口 0 的内核驱动程序。
您可以manually unbind the USB device driver使用以下命令:
echo -n "1-1:1.0" > /sys/bus/usb/drivers/usb-storage/unbind
"1-1:1.0" 指定 USB 存储驱动程序应解除绑定的设备和接口。 “1-1”表示总线1,端口1,“1.0”表示配置1,接口0。这样连接设备时,内核日志中会打印此信息,
usb-storage 1-1:1.0: USB Mass Storage device detected
您设备的总线和端口号可能会有所不同。
虽然这应该允许您将此设备与 WebUSB 一起使用,但由于涉及手动步骤,它不太可能用作长期解决方案。 WebUSB 专为没有内置操作系统驱动程序的设备而设计。
我遇到了设备问题,发现 usb_modeswitch
命令很有用。给定供应商和产品 ID,可以重置设备。例如:
usb_modeswitch -v 0x1d50 -p 0x60e3 --reset-usb