1

Ich versuche, mit dem USB-Gerät unter Verwendung von WEBUSB API zu kommunizieren. Aber wenn ich versuche, Schnittstelle zu behaupten, es zeigtFehler beim Anfordern der Schnittstelle 0: Gerät oder Ressource beschäftigt

„DOMException: Kann Schnittstelle Anspruch“

die bConfigurationvalue ist 1 und Schnittstellennummer ist 0. Ich füge die Ausgabe des Befehls lsusb -v unter

~$ 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) 

Warum es das Gerät oder die Ressourcen beschäftigt zeigt. Wie beanspruche ich die Schnittstelle?

+0

Code-Einzug hinzugefügt Sie sollten versuchen, Ihre Frage mit Formatierungstools lesbar zu machen, nehmen Sie sich etwas Zeit, um [Docs] zu lesen (https://stackoverflow.com/help/formatting) –

Antwort

0

Das Gerät ist so beschäftigt gezeigt, da dies ein USB-Massenspeichergerät ist und Linux automatisch einen Kernel-Treiber laden, wenn er angeschlossen ist, die Schnittstelle behauptet 0.

Sie kann manually unbind the USB device driver mit dem folgenden Befehl:

echo -n "1-1:1.0" > /sys/bus/usb/drivers/usb-storage/unbind

"1-1: 1.0" gibt das Gerät und die Schnittstelle an, von der der USB-Speichertreiber freigegeben werden soll. „1-1“ bedeutet, Bus 1, Port 1 und „1,0“ bedeutet, Konfiguration 1, Schnittstelle 0. Diese Informationen im Kernprotokoll gedruckt werden, wenn die Vorrichtung wie folgt verbunden ist,

usb-storage 1-1:1.0: USB Mass Storage device detected

Der Bus und Die Portnummer für Ihr Gerät wird wahrscheinlich abweichen.

Während dies Ihnen erlauben sollte, dieses Gerät mit WebUSB zu verwenden, ist es wegen der manuellen Schritte wahrscheinlich nicht als eine langfristige Lösung nützlich. WebUSB wurde für Geräte ohne integrierte Betriebssystemtreiber entwickelt.

Verwandte Themen