I am trying to communicate with usb device using WEBUSB API
. BUT when I am trying to claim Interface it shows
"DOMException: Unable to claim interface"
the bConfigurationvalue
is 1
and interface number is 0
. I am adding the output of command lsusb -v
below
~$ 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)
Why does it shows the device or resources busy. How to claim the interface?.
The device is shown as busy because this is a USB Mass Storage class device and Linux will automatically load a kernel driver when it is connected that claims interface 0.
You can manually unbind the USB device driver with the following command:
echo -n "1-1:1.0" > /sys/bus/usb/drivers/usb-storage/unbind
"1-1:1.0" specifies the device and interface that the usb-storage driver should unbind from. "1-1" means bus 1, port 1 and "1.0" means configuration 1, interface 0. This information is printed in the kernel log when the device is connected like this,
usb-storage 1-1:1.0: USB Mass Storage device detected
The bus and port number for your device will likely differ.
While this should allow you to use this device with WebUSB it is not likely useful as a long term solution because of the manual steps involved. WebUSB is designed for devices without built-in operating system drivers.
来源:https://stackoverflow.com/questions/47695160/failed-to-claim-interface-0-device-or-resource-busy