USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung
So debuggen Sie USB-String-Deskriptoren, LANGID-Request-Fehler, Serial-Number-Deskriptor-Bugs, Manufacturer/Product-Namen, doppelte Serial-Numbers und Treiberbindungs-Probleme.
USB-String-Deskriptoren wirken harmlos, aber schlechte Strings können Treiberbindung, Device-Identität, Serial-Port-Persistenz, Lab-Automation, Firmware-Update-Tools und Support-Workflows zerbrechen. Nutzer suchen nach "USB string descriptor failed", "LANGID descriptor", "USB serial number descriptor missing", "duplicate USB serial number", "USB product string wrong" und "Windows shows unknown USB device name", wenn das Device enumeriert, aber die Identität instabil ist.
Bus Scope hilft, weil String-Deskriptor-Fehler während der Enumeration als Control-Transfers passieren. Der Host fragt nach unterstützten Language-IDs und dann nach Manufacturer-, Product- und Serial-Number-Strings. Gibt irgendeine Step fehlerhafte Daten zurück, kann das OS trotzdem weitermachen, aber schlechte Identität speichern.
LANGID-Deskriptor
Bevor spezifische Strings angefragt werden, kann der Host String-Deskriptor Null anfragen. Der gibt unterstützte Language-IDs zurück.
Typische Evidence:
GET_DESCRIPTOR String index 0
LANGID list returned
GET_DESCRIPTOR String index 1
GET_DESCRIPTOR String index 2
GET_DESCRIPTOR String index 3
Scheitert String-Deskriptor Null, können spätere String-Requests sich über Hosts hinweg inkonsistent verhalten.
Manufacturer-, Product- und Serial-Strings
Häufige String-Indizes:
iManufactureriProductiSerialNumber
Diese Felder werden vom Device-Deskriptor referenziert. Wirbt das Device mit einem Non-Zero-String-Index, scheitert aber, den String zurückzugeben, kann das Host-Verhalten variieren.
Symptome:
- Device erscheint als "Unknown Device".
- Product-Name ist verstümmelt.
- Serial-Number ist leer.
- Windows erstellt nach jedem Anstecken einen neuen COM-Port.
- Linux-udev-Regeln matchen nicht zuverlässig.
- Firmware-Update-Tool kann das Target nicht identifizieren.
- Mehrere Units kollabieren in eine Identität.
Doppelte Serial-Numbers
Doppelte USB-Serial-Numbers sind ein ernstes Produktions-Problem. Zwei physische Devices mit derselben VID, PID und Serial-Number können als dieselbe Device-Instanz behandelt werden.
Konsequenzen:
- Falsche Kalibrier-Daten geladen.
- Test-Station schreibt Logs auf falsches Gerät.
- COM-Port-Zuweisung ändert sich unvorhersehbar.
- Licensing oder Provisioning bindet an falsche Hardware.
- Field-Support kann Devices nicht unterscheiden.
Packet-Capture kann belegen, ob die Serial-Deskriptor-Bytes tatsächlich dupliziert sind oder ob die OS-Anzeige ein tieferes Issue versteckt.
Fehlende Serial-Number
Manche Devices lassen absichtlich eine Serial-Number weg. Das kann für einfache Peripheriegeräte akzeptabel sein, verursacht aber Probleme, wenn stabile Identität zählt.
Häufige Suchbegriffe:
- "USB device new COM port every time"
- "USB serial number missing"
- "Windows USB device instance path changes"
- "Linux udev match USB serial"
Fehlt die Serial-Number, identifiziert das OS das Device möglicherweise über Port-Topology statt über Hardware-Identität.
Fehlerhafte UTF-16LE-Strings
USB-Strings sind als Unicode-Strings kodiert. Firmware-Bugs umfassen:
- falsche Deskriptor-Länge.
- ungerade Byte-Anzahl.
- fehlender Deskriptor-Typ.
- ungültige UTF-16LE-Bytes.
- Null-Termination-Erwartungs-Mismatch.
- Rückgabe von ASCII-Bytes statt USB-String-Format.
- Truncation langer Serial-Numbers.
Manche Hosts tolerieren das. Andere verwerfen den Deskriptor oder zeigen korrupten Text.
String-Request-Timing und Retries
Hosts können denselben String mehrfach mit unterschiedlichen Längen anfragen. Ein Device sollte sowohl kurze Probe-Requests als auch Full-Length-Requests behandeln.
Fehler-Patterns:
- Device gibt korrekte ersten 2 Bytes zurück, scheitert aber beim Full-Request.
- Firmware nimmt an, dass
wLengthimmer der Deskriptor-Länge entspricht. - Control-Endpoint stalled bei wiederholtem String-Request.
- Device gibt nach Reset andere Serial-Number zurück.
- Bootloader und App-Firmware melden unterschiedliche Identität.
Das ist häufig in Firmware-Update-Workflows.
Treiberbindungs-Auswirkung
Die Treiber-Auswahl hängt meist von VID/PID/Klasse ab, aber String-Deskriptoren beeinflussen die User-sichtbare Identität und manchmal Vendor-Tools. Composite-Devices, CDC-Serial-Devices, HID-Tools und DFU-Bootloader verlassen sich oft auf Strings für Support und Automation.
Sagt ein Support-Ticket "falscher USB-Device-Name", verwerfen Sie das nicht als kosmetisch. Es kann Deskriptor-Korruption oder Firmware-State-Verwirrung anzeigen.
Debug-Checkliste
Nutzen Sie diesen Ablauf:
- Enumeration ab Anstecken capturen.
- Device-Deskriptor-String-Indizes inspizieren.
- String-Deskriptor Null auf LANGID prüfen.
- Manufacturer-String dekodieren.
- Product-String dekodieren.
- Serial-Number-String dekodieren.
- Zwei physische Units vergleichen.
- Bootloader und App-Firmware vergleichen.
- Verhalten nach Reset und Replug prüfen.
- Roh-Deskriptor-Bytes für Firmware-Fixes bewahren.
Enddiagnose
USB-String-Deskriptor- und LANGID-Probleme beeinflussen Device-Identität, Serial-Persistenz, Fertigungstests, Field-Support und Treiber-Workflows. Die Schlüssel-Evidence ist nicht das OS-Label, sondern die tatsächlichen Deskriptor-Control-Transfers.
Bus Scope zeigt LANGID, Manufacturer, Product, Serial-Number, fehlerhafte Strings, doppelte Serials und Enumeration-Retries in einer Diagnose-Sicht.
<!-- bus-scope-localized-transaction-foundation-v1:start -->USB-Vertragsprüfung für „USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name 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-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name 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-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung“ lautet: So debuggen Sie USB-String-Deskriptoren, LANGID-Request-Fehler, Serial-Number-Deskriptor-Bugs, Manufacturer/Product-Namen, doppelte Serial-Numbers und Treiberbindungs-Probleme. 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-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und
Behandeln Sie „USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung“ als eigene Abnahmegrenze für „USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 2: So debuggen Sie USB-String-Deskriptoren, LANGID-Request-Fehler, Serial-Number-Deskriptor-B
Formulieren Sie für „So debuggen Sie USB-String-Deskriptoren, LANGID-Request-Fehler, Serial-Number-Deskriptor-Bugs, Manufacturer/Product-Namen, doppelte Serial-Numbers und“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 3: LANGID-Deskriptor
Behandeln Sie „LANGID-Deskriptor“ als eigene Abnahmegrenze für „USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 4: Manufacturer-, Product- und Serial-Strings
Formulieren Sie für „Manufacturer-, Product- und Serial-Strings“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 5: Doppelte Serial-Numbers
Behandeln Sie „Doppelte Serial-Numbers“ als eigene Abnahmegrenze für „USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 6: Fehlende Serial-Number
Formulieren Sie für „Fehlende Serial-Number“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 7: Fehlerhafte UTF-16LE-Strings
Behandeln Sie „Fehlerhafte UTF-16LE-Strings“ als eigene Abnahmegrenze für „USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 8: String-Request-Timing und Retries
Formulieren Sie für „String-Request-Timing und Retries“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 9: Treiberbindungs-Auswirkung
Behandeln Sie „Treiberbindungs-Auswirkung“ als eigene Abnahmegrenze für „USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 10: Debug-Checkliste
Formulieren Sie für „Debug-Checkliste“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Abnahmematrix
| Prüfpunkt | Aufzubewahrender Nachweis | Passkriterium |
|---|---|---|
| USB-String-Deskriptor- und LANGID-Debugging: Serial-Number, Manufacturer, Product-Name und Treiberbindung | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| So debuggen Sie USB-String-Deskriptoren, LANGID-Request-Fehler, Serial-Number-Deskriptor-Bugs, Manufacturer/Product-Name | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| LANGID-Deskriptor | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Manufacturer-, Product- und Serial-Strings | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Doppelte Serial-Numbers | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Fehlende Serial-Number | 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 -->