0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Konfiguration
Schließe ein USB-Gerät an und sieh alles, was es angibt: seine Vendor ID und Product ID, den Hersteller, das Produkt, die Seriennummer und den kompletten Baum aus Konfigurationen, Schnittstellen und Endpoints mit ihren Klassen und Übertragungstypen. Das Werkzeug liest nur Deskriptoren; es öffnet das Gerät nie und sendet ihm keine Daten.
Angebotene Geräte

So funktioniert es

Zeigt, was ein USB-Gerät über sich selbst angibt, sobald es angeschlossen wird. Der Gerätedeskriptor enthält die vom USB-IF vergebene Vendor ID, die vom Hersteller gewählte Product ID, die Version der USB-Spezifikation, die es zu erfüllen angibt, die Version des Produkts selbst und, sofern das Gerät sie bereitstellt, die Texte für Hersteller, Produkt und Seriennummer.

Darunter erscheint der komplette Baum: jede Konfiguration mit ihren Schnittstellen, jede Schnittstelle mit ihrem Tripel aus Klasse, Unterklasse und Protokoll im offiziellen USB-IF-Namen und jeder Endpoint mit Adresse, Richtung, Übertragungstyp und maximaler Paketgröße. Schnittstellen mit mehreren alternativen Einstellungen —üblich bei Kameras und Audiokarten— werden separat aufgeführt.

Das Werkzeug liest nur Deskriptoren: Es öffnet nie eine Sitzung mit dem Gerät, beansprucht nie eine Schnittstelle und sendet ihm nie ein Byte, stört also den Treiber nicht, der es gerade nutzt. Der gesamte Baum lässt sich als JSON exportieren, um ihn einem Bericht beizulegen oder mit dem eines anderen Rechners zu vergleichen.

Beispiele

046D:C52B0x00 / 0x00 / 0x00 → 3 × HID (0x03)Ein Funkempfänger für Tastatur und Maus gibt am Gerät die Klasse 0x00 an, der tatsächliche Typ wird also Schnittstelle für Schnittstelle festgelegt: hier drei HID-Schnittstellen mit je einem Interrupt-Endpoint als Eingang.
0x08 / 0x06 / 0x50Mass Storage · SCSI transparent command set · Bulk-Only TransportDas typische Tripel eines USB-Sticks oder einer externen Festplatte: zwei Bulk-Endpoints, einer als Eingang und einer als Ausgang, über die die SCSI-Befehle laufen.
0x02 / 0x02 / 0x01Communications and CDC Control · Abstract Control Model · AT Commands (ITU-T V.250)Das ist die virtuelle serielle Schnittstelle eines Entwicklungsboards oder eines Modems: eine Steuerschnittstelle mit einem Interrupt-Endpoint und eine CDC-Data-Schnittstelle mit den beiden Bulk-Endpoints, die die Daten transportieren.

Anwendungsfälle

  • Die genaue Vendor ID und Product ID eines Geräts herausfinden, um seinen Treiber zu suchen oder unter Linux eine udev-Regel zu schreiben.
  • Die Seriennummer eines USB-Sticks, eines Lesegeräts oder eines Adapters sehen, wenn das Betriebssystem sie nicht auf Anhieb anzeigt.
  • Während der Firmware-Entwicklung prüfen, ob das Gerät die erwarteten Schnittstellen, Alternativen und Endpoints mit den richtigen Klassen veröffentlicht.
  • Herausfinden, über welchen Endpoint und mit welchem Übertragungstyp man mit einem Gerät sprechen muss, bevor man dafür programmiert.
  • Zwei scheinbar identische Geräte anhand ihrer Version, ihrer Schnittstellen und ihrer Paketgrößen unterscheiden.
  • Die USB-Konfiguration eines Rechners dokumentieren, indem der komplette Baum als JSON exportiert wird.

Häufige Fragen

Warum funktioniert es nicht auf meinem iPhone oder in Firefox?

Die WebUSB-API ist in Chromium-basierten Browsern —Chrome, Edge und Opera— für Windows, macOS, Linux, ChromeOS und Android implementiert. Firefox und Safari implementieren sie nicht, und unter iOS nutzen alle Browser die System-Engine, dort steht sie also ebenfalls nicht zur Verfügung. Außerdem sind HTTPS nötig und dass die Seite nicht in eine andere Website eingebettet ist.

Das Gerät ist angeschlossen, erscheint aber nicht im Auswahldialog.

Vielleicht ist der gewählte Filter zu eng: Probiere die Option, die alle Geräte anbietet. Erscheint es dann immer noch nicht, steht es wahrscheinlich auf der Sperrliste des Browsers, die bestimmte Produkte aus Sicherheitsgründen ausschließt —darunter FIDO-Sicherheitsschlüssel—, damit keine Webseite sie anfassen kann. Unter Linux kann auch die Systemberechtigung für den Geräteknoten fehlen.

Warum meldet das Gerät die Klasse 0x00?

Klasse 0x00 im Gerätedeskriptor bedeutet «schau in die Schnittstellen». Fast alle Verbundgeräte nutzen sie, die unterschiedliche Funktionen über dasselbe Kabel bündeln: eine Tastatur mit eingebautem Hub, eine Kamera, die auch ein Mikrofon bereitstellt, oder ein Multifunktionsdrucker. In diesen Fällen steckt der tatsächliche Typ jeder Funktion in der Klasse der jeweiligen Schnittstelle, nicht in der des Geräts.

Was ist ein Endpoint und was bedeutet eine Adresse wie 0x81?

Ein Endpoint ist jedes der Postfächer, über die Daten in eine Schnittstelle hinein- oder aus ihr herausgehen. Die unteren sieben Bits der Adresse sind die Endpoint-Nummer, das höchste Bit gibt die Richtung an: 0x81 ist also Endpoint 1 als Eingang —vom Gerät zum Rechner— und 0x01 wäre Endpoint 1 als Ausgang. Der Übertragungstyp bestimmt die Behandlung: Bulk für große Datenmengen ohne Frist, Interrupt für kleine und häufige Ereignisse wie einen Tastendruck und isochron für Audio und Video, die lieber ein Paket verlieren als zu spät zu kommen.

Kann das Werkzeug etwas am Gerät verändern oder kaputt machen?

Nein. Es liest nur die Deskriptoren, die der Browser beim Erkennen des Geräts bereits erhalten hat; es öffnet nie eine Sitzung, beansprucht nie eine Schnittstelle und schreibt nie. Deshalb kannst du sogar eine Tastatur oder einen USB-Stick untersuchen, den das Betriebssystem gerade benutzt, obwohl eine Webseite mit ihnen nicht kommunizieren darf.

Warum sind Hersteller oder Produkt leer?

Diese Texte sind optionale Deskriptoren: Viele günstige Geräte speichern sie schlicht nicht, und manche Betriebssysteme geben sie nicht an den Browser weiter. Für diese Fälle schlägt das Werkzeug die Vendor ID und die Product ID im usb.ids-Katalog des Linux-USB-Projekts nach, der den offiziellen Namen des Herstellers und oft auch den des Produkts führt.

Verlassen die Gerätedaten meinen Rechner?

Die Deskriptoren werden in deinem Browser gelesen und an keinen Server gesendet. Die einzige Ausnahme ist die Suche im usb.ids-Katalog, die Vendor ID und Product ID abfragt —zwei Zahlen, die das Modell bezeichnen, nicht deinen Rechner oder dein Exemplar— und die du vor der Geräteauswahl abschalten kannst. Die Seriennummer wird nie gesendet.

Was sind die alternativen Einstellungen einer Schnittstelle?

Ein und dieselbe Schnittstelle kann mehrere Sätze von Endpoints angeben und nur einen davon aktiv halten. Kameras und Audiokarten nutzen das, um verschiedene Kombinationen aus Auflösung oder Qualität anzubieten: Jede Alternative reserviert eine andere Bandbreite auf dem Bus, und das Betriebssystem wählt beim Start der Übertragung die passende aus. Alternative 0 bleibt aktiv, solange das Gerät untätig ist.