USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung
So debuggen Sie USB-Composite-Devices, wenn ein Interface läuft, ein anderes fehlschlägt oder der Host den falschen Treiber bindet.
USB-Composite-Devices sind praktisch und gefährlich. Ein einzelnes Gerät kann HID-Controls, CDC-Serial, Mass-Storage, herstellerspezifische Endpoints, Audio, Video oder Diagnose-Interfaces exponieren. Wenn alles korrekt beschrieben ist, bindet der Host die richtigen Treiber und jede Funktion läuft. Ist ein Deskriptor-Feld falsch, kann das ganze Gerät unzuverlässig wirken.
Suchen wie "USB composite device not recognized", "CDC interface not showing", "HID works but serial does not" oder "wrong driver binding USB interface" deuten meist auf Deskriptor-Struktur, Interface-Nummerierung, Endpoint-Zuweisung oder das Verhalten des Interface-Association-Deskriptors hin.
Composite-Devices brauchen eine kohärente Konfiguration
Der Configuration-Deskriptor ist die Top-Level-Karte. Er muss die Gesamtlänge, Anzahl der Interfaces, Power-Attributes und alle verschachtelten Interface- und Endpoint-Deskriptoren beschreiben. Ist wTotalLength falsch, liest der Host möglicherweise nicht alle Funktionen. Ist die Interface-Anzahl falsch, ignoriert der Host spätere Interfaces. Kollidieren Endpoint-Adressen, werden Transfers mehrdeutig oder ungültig.
Prüfen Sie:
- Configuration-Gesamtlänge
- Anzahl der Interfaces
- Interface-Nummern
- Alternate Settings
- Endpoint-Adressen
- Endpoint-Richtungen
- Class-, Subclass-, Protocol-Werte
- Deskriptor-Reihenfolge
Ein Capture sollte zeigen, ob der Host die volle Konfiguration angefragt hat und welche Bytes das Gerät zurückgegeben hat.
IAD hilft, zusammengehörige Interfaces zu gruppieren
Interface-Association-Deskriptoren werden oft genutzt, um mehrere Interfaces zu gruppieren, die zu einer Funktion gehören, etwa CDC-Communication plus CDC-Data. Ohne korrekte Gruppierung bindet der Host möglicherweise Treiber falsch oder legt nur einen Teil der Funktion offen.
IAD-Evidence zum Prüfen:
- erste Interface-Nummer
- Interface-Anzahl
- Function-Class, Subclass, Protocol
- Platzierung vor den gruppierten Interfaces
- Konsistenz mit den tatsächlichen Interface-Deskriptoren
Erscheint CDC-Serial nicht, aber HID läuft, ist das HID-Interface möglicherweise in Ordnung, während die CDC-Gruppierung falsch ist.
Endpoint-Adress-Kollisionen sind leicht zu übersehen
Endpoint-Adressen enthalten die Richtung. Endpoint 0x81 und 0x01 sind verschiedene Richtungen, aber zwei IN-Endpoints mit derselben Adresse sind innerhalb derselben Device-Konfiguration nicht erlaubt. Firmware-Teams kopieren manchmal Endpoint-Deskriptoren zwischen Interfaces und vergessen, die Adressen anzupassen.
Symptome:
- ein Interface läuft, ein anderes ist still
- Host sendet Transfers an unerwarteten Endpoint
- Klassentreiber lädt, aber App bekommt keine Daten
- Endpoint-STALL oder -Timeout nach Konfiguration
- nur eine Funktion läuft auf einmal
Der Capture sollte Endpoint-Deskriptoren und späteren Transfer-Traffic nebeneinander zeigen.
Treiberbindung ist auch Evidence
Der Host wählt Treiber basierend auf Deskriptoren. Ein Gerät, das falsch bindet, hat möglicherweise Deskriptor-Evidence, die erklärt, warum. Class, Subclass, Protocol, Interface-Association, Compatible-IDs und OS-spezifische Deskriptoren können die Bindung beeinflussen.
Diagnostizieren Sie Treiberbindung nicht nur aus dem Geräte-Manager oder App-Logs. Vergleichen Sie die klassenspezifischen Requests des Hosts mit dem Deskriptor-Baum. Kommen die erwarteten Klassen-Requests nie an, hat der Host wahrscheinlich nicht den erwarteten Treiber gebunden.
Wo Bus Scope passt
Bus Scope hilft Firmware-Teams, Composite-Devices auf beiden Ebenen zu inspizieren:
- Deskriptor-Map
- Transfer-Evidence nach Treiberbindung
Eine gute .bscope-Session für Composite-Debugging zeigt:
- alle Interfaces
- IAD-Gruppierung
- Endpoint-Zuweisungen
- klassenspezifische Requests pro Interface
- rohe Deskriptor-Bytes
- Transfer-Status nach Konfiguration
So wird das Support-Gespräch konkret. Statt "Windows mag unser Composite-Device nicht" kann der Report sagen "Interface 2 erhält keine CDC-Klassen-Requests, weil der Gruppierungs-Deskriptor nicht zum deklarierten Interface-Layout passt".
Das ist die Evidence-Ebene, die Firmware-Teams brauchen.
<!-- bus-scope-localized-transaction-foundation-v1:start -->USB-Vertragsprüfung für „USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung“
Die direkte Antwort lautet: STALL, Timeout oder Reset erklärt die Ursache nicht allein. Beweisen Sie zuerst, dass der Capture-Provider das richtige Gerät sieht, und lesen Sie danach den Transfervertrag: Request-Typ, Richtung, Recipient, wValue, wIndex, angekündigte und tatsächliche Länge, Status sowie Zustand davor und danach. Verknüpfen Sie bei „USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung“ jede Aussage mit der ersten Transaktion, die von einem bekannten guten Lauf abweicht.
| Grenze | Zu vergleichen | Belastbares Urteil |
|---|---|---|
| Plattform | Provider, Rechte, Root Hub beziehungsweise usbmon/XHC20 | Kommen Records von der richtigen Verbindung? |
| Setup | bmRequestType, bRequest, wValue, wIndex, wLength | Sendet der Host die beabsichtigte Anfrage? |
| Data | Richtung, Länge und gespeicherte Bytes | Entspricht die Payload dem Vertrag? |
| Status | ACK, STALL, Timeout oder Cancellation | Wo endet die Transaktion tatsächlich? |
| Zustand | Configuration, Interface, Alternate Setting, Endpoint Halt | War das Gerät für die Anfrage bereit? |
Starten Sie vor Reset und Enumeration und behalten Sie Descriptoren, SET_CONFIGURATION, SET_INTERFACE und den Befehl vor dem Fehler. Ein enger Endpoint-Filter kann genau den Control Transfer verstecken, der das spätere Symptom erklärt. Führen Sie pro Versuch eine dokumentierte USB-Aktion aus und ändern Sie nur Firmware, Treiber, Port, Kabel, Hostbefehl oder Timing.
Wie sieht eine zitierfähige Antwort aus?
Nennen Sie angekommenen Request, konkrete Setup-Felder, Geräteantwort und vorherigen Zustand; danach folgt ein Test mit genau einer Änderung. Nicht gespeicherte Bytes durch Retention sind kein bewiesener Packet Loss. Zeitliche Nähe zwischen Command und Reset belegt Korrelation, nicht ohne Wiederholung oder Zustandsübergang die Ursache.
Wann ist ein Vergleich gültig?
Halten Sie VID/PID, Firmware, Speed, Topologie, Provider, Filter und Trigger möglichst gleich. Vergleichen Sie semantische USB-Phasen statt Frame-Nummern zwischen usbmon und USBPcap. Notieren Sie Start, Ende, Version, OS, Anschluss und Dateiprüfsumme. Nutzen Sie vor der Übergabe die Bus-Scope-Fehlersuche.
Semrush-Eigentümer bleiben getrennt: free USB analyzer gehört zur Produktseite, best USB protocol analyzer zur Vergleichsseite und USB descriptor viewer zum Descriptor-Guide. Diese Supportseite erhält keine erfundene Suchmenge oder KD.
<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Direkte Antwort und Abnahmegrenze
Die kurze Antwort zu „USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung“ lautet: So debuggen Sie USB-Composite-Devices, wenn ein Interface läuft, ein anderes fehlschlägt oder der Host den falschen Treiber bindet. Behandeln Sie diese Aussage als zu prüfendes Ergebnis und nicht als Versprechen für jede Eingabe, jedes Gerät, jedes Projekt oder jede Umgebung. Ein vollständiges Ergebnis dokumentiert Ausgangszustand, exakte Aktion, sichtbare Ausgabe und die Bedingung, die den Abschluss in Bus Scope belegt.
Evidenzorientiertes Vorgehen
Beginnen Sie mit einem kleinen, wiederholbaren Fall, bevor Sie ein vollständiges Projekt verändern. Protokollieren Sie Anwendungsversion, Betriebssystem, Eingabe- oder Geräteidentität, relevante Einstellungen und erwartetes Ergebnis. Führen Sie eine bewusste Aktion aus, bewahren Sie den ersten unerwarteten Übergang und vergleichen Sie möglichst mit einem bekannten guten Lauf. Mehrere gleichzeitige Änderungen verdecken, welche Bedingung den Fehler erzeugt oder behoben hat.
Prüfpunkt 1: USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung
Prüfen Sie „USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung“ mit der kleinsten repräsentativen Eingabe. Lassen Sie unabhängige Einstellungen unverändert, wiederholen Sie dieselbe Aktion und kontrollieren Sie das Ergebnis nach erneutem Öffnen oder Verbinden. Ein Bild ist schwächer als ein Nachweis mit Eingabe, Einstellung, Aktion, Ausgabe und Zeitpunkt.
Prüfpunkt 2: So debuggen Sie USB-Composite-Devices, wenn ein Interface läuft, ein anderes fehlschlägt o
Ist „So debuggen Sie USB-Composite-Devices, wenn ein Interface läuft, ein anderes fehlschlägt oder der Host den falschen Treiber bindet.“ mehrdeutig, vergleichen Sie einen bekannten guten und einen fehlerhaften Fall unter gleichen Bedingungen. Markieren Sie die erste relevante Abweichung statt aller späteren Symptome. Diese Grenze führt meist zu einer klareren Supportanfrage und einem sichereren Experiment.
Prüfpunkt 3: Composite-Devices brauchen eine kohärente Konfiguration
Prüfen Sie „Composite-Devices brauchen eine kohärente Konfiguration“ mit der kleinsten repräsentativen Eingabe. Lassen Sie unabhängige Einstellungen unverändert, wiederholen Sie dieselbe Aktion und kontrollieren Sie das Ergebnis nach erneutem Öffnen oder Verbinden. Ein Bild ist schwächer als ein Nachweis mit Eingabe, Einstellung, Aktion, Ausgabe und Zeitpunkt.
Prüfpunkt 4: IAD hilft, zusammengehörige Interfaces zu gruppieren
Ist „IAD hilft, zusammengehörige Interfaces zu gruppieren“ mehrdeutig, vergleichen Sie einen bekannten guten und einen fehlerhaften Fall unter gleichen Bedingungen. Markieren Sie die erste relevante Abweichung statt aller späteren Symptome. Diese Grenze führt meist zu einer klareren Supportanfrage und einem sichereren Experiment.
Prüfpunkt 5: Endpoint-Adress-Kollisionen sind leicht zu übersehen
Prüfen Sie „Endpoint-Adress-Kollisionen sind leicht zu übersehen“ mit der kleinsten repräsentativen Eingabe. Lassen Sie unabhängige Einstellungen unverändert, wiederholen Sie dieselbe Aktion und kontrollieren Sie das Ergebnis nach erneutem Öffnen oder Verbinden. Ein Bild ist schwächer als ein Nachweis mit Eingabe, Einstellung, Aktion, Ausgabe und Zeitpunkt.
Prüfpunkt 6: Treiberbindung ist auch Evidence
Ist „Treiberbindung ist auch Evidence“ mehrdeutig, vergleichen Sie einen bekannten guten und einen fehlerhaften Fall unter gleichen Bedingungen. Markieren Sie die erste relevante Abweichung statt aller späteren Symptome. Diese Grenze führt meist zu einer klareren Supportanfrage und einem sichereren Experiment.
Prüfpunkt 7: Wo Bus Scope passt
Prüfen Sie „Wo Bus Scope passt“ mit der kleinsten repräsentativen Eingabe. Lassen Sie unabhängige Einstellungen unverändert, wiederholen Sie dieselbe Aktion und kontrollieren Sie das Ergebnis nach erneutem Öffnen oder Verbinden. Ein Bild ist schwächer als ein Nachweis mit Eingabe, Einstellung, Aktion, Ausgabe und Zeitpunkt.
Prüfpunkt 8: USB-Vertragsprüfung für „USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints
Ist „USB-Vertragsprüfung für „USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung““ mehrdeutig, vergleichen Sie einen bekannten guten und einen fehlerhaften Fall unter gleichen Bedingungen. Markieren Sie die erste relevante Abweichung statt aller späteren Symptome. Diese Grenze führt meist zu einer klareren Supportanfrage und einem sichereren Experiment.
Prüfpunkt 9: Wie sieht eine zitierfähige Antwort aus?
Prüfen Sie „Wie sieht eine zitierfähige Antwort aus?“ mit der kleinsten repräsentativen Eingabe. Lassen Sie unabhängige Einstellungen unverändert, wiederholen Sie dieselbe Aktion und kontrollieren Sie das Ergebnis nach erneutem Öffnen oder Verbinden. Ein Bild ist schwächer als ein Nachweis mit Eingabe, Einstellung, Aktion, Ausgabe und Zeitpunkt.
Prüfpunkt 10: Wann ist ein Vergleich gültig?
Ist „Wann ist ein Vergleich gültig?“ mehrdeutig, vergleichen Sie einen bekannten guten und einen fehlerhaften Fall unter gleichen Bedingungen. Markieren Sie die erste relevante Abweichung statt aller späteren Symptome. Diese Grenze führt meist zu einer klareren Supportanfrage und einem sichereren Experiment.
Abnahmematrix
| Prüfpunkt | Aufzubewahrender Nachweis | Passkriterium |
|---|---|---|
| USB-Composite-Device-Debugging: Interface-Nummern, IAD, Endpoints und Treiberbindung | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| So debuggen Sie USB-Composite-Devices, wenn ein Interface läuft, ein anderes fehlschlägt oder der Host den falschen Trei | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Composite-Devices brauchen eine kohärente Konfiguration | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| IAD hilft, zusammengehörige Interfaces zu gruppieren | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Endpoint-Adress-Kollisionen sind leicht zu übersehen | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Treiberbindung ist auch Evidence | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
Fehlerisolierung, Recovery und Übergabe
Stoppen Sie beim ersten fehlerhaften Übergang. Bewahren Sie Quelle, Projekt, Session oder Capture und erstellen Sie vor destruktiven Änderungen eine Kopie. Ändern Sie pro Experiment nur eine Variable. Ein kompletter erneuter Lauf nach mehreren Änderungen kann anders enden, ohne die Ursache zu erklären.
Unterscheiden Sie fehlende Evidenz von Evidenz für ein Fehlen. Eine leere Ansicht kann auf falsche Eingabe, Scope, Filter, Berechtigung, Gerät, Zeitbereich oder Projektzustand hinweisen. Beweisen Sie Aufnahme oder Import, bevor Sie Decoder, Editor, Bericht oder Export interpretieren.
Öffnen Sie vor der Übergabe das dauerhafte Artefakt erneut und prüfen Sie Anfang, Entscheidungsstelle und Ende. Dokumentieren Sie Version, Plattform, Konfiguration, Erwartung, Beobachtung und kleinste Reproduktion. Entfernen oder schwärzen Sie sensible Daten und prüfen Sie die Berechtigung des Empfängers.
Fragen und Antworten
Wie beginnt man am schnellsten zuverlässig?
Verwenden Sie den kleinsten repräsentativen Fall, notieren Sie das erwartete Ergebnis und ändern Sie nur eine Variable. Beweisen Sie den Grundpfad, bevor Filter, Effekte, Bearbeitungen, Automatisierung oder größere Quellen hinzukommen.
Welche Evidenz sollte gespeichert werden?
Bewahren Sie Eingabeidentität, Version, Plattform, Einstellungen, exakte Aktion, ersten unerwarteten Übergang und Endausgabe. Projekt, Session, Bericht oder Export müssen geschlossen und erneut geöffnet werden.
Wann sollte das Verfahren wiederholt werden?
Wiederholen Sie es nach relevanten Änderungen an Anwendung, Betriebssystem, Treiber, Firmware, Modell, Quelle oder Workflow. Behalten Sie den früher akzeptierten Fall als unveränderte Vergleichsbasis.
Wann ist die Aufgabe übergabefähig?
Wenn eine autorisierte zweite Person Eingabe und Aktion erkennt, dasselbe Ergebnis reproduziert, verbleibende Grenzen versteht und das gespeicherte Artefakt ohne undokumentierten lokalen Zustand öffnen kann.
Verwandte Anleitungen
Diese gleichsprachigen Seiten decken angrenzende Schritte ab, ohne den kanonischen Eigentümer dieses Themas zu verändern:
<!-- multilingual-blog-closeout:end -->