2

我正在尝试使用WEBUSB API. 但是当我试图声明接口时,它显示

“DOMException:无法声明接口”

bConfigurationvalueis1和接口号是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)

为什么显示设备或资源繁忙。如何声明接口?

4

2 回答 2

2

该设备显示为忙,因为这是一个 USB 大容量存储类设备,Linux 将在连接时自动加载声称接口 0 的内核驱动程序。

您可以使用以下命令手动取消绑定 USB 设备驱动程序:

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 专为没有内置操作系统驱动程序的设备而设计。

于 2017-12-09T01:58:55.327 回答
0

我遇到了设备问题,发现该usb_modeswitch命令很有用。给定供应商和产品 ID,可以重置设备。例如:

usb_modeswitch -v 0x1d50 -p 0x60e3 --reset-usb
于 2021-11-15T20:10:52.827 回答