USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten
So debuggen Sie USB-CDC-ACM-virtuelle serielle Geräte durch Inspizieren von SET_LINE_CODING, SET_CONTROL_LINE_STATE, Bulk-Endpoints und Firmware-Verhalten.
USB-CDC-ACM-Geräte werden für virtuelle serielle Ports, Device-Konsolen, Firmware-Tools, Telemetrie, Test-Fixtures und Embedded-Diagnose genutzt. Aus App-Sicht wirken sie einfach: "COM-Port oder /dev/ttyACM* öffnen, Baudrate setzen, Bytes lesen und schreiben. Darunter tauschen Host und Device aber weiterhin klassenspezifische USB-Requests und Bulk-Transfers aus."
Wenn ein CDC-Gerät enumeriert, aber keine Daten fließen, kann der Capture zeigen, ob das Problem Deskriptor-Layout, Line Coding, Control Line State, Endpoint-Traffic oder Firmware-Buffering ist.
CDC ACM hat Control- und Data-Interfaces
Ein typisches CDC-ACM-Gerät legt ein Communication-Interface und ein Data-Interface offen. Der Host kann klassenspezifische Requests senden, bevor der Datentransfer beginnt.
Wichtige Evidence:
- Communication-Interface-Deskriptor
- Data-Interface-Deskriptor
- CDC Functional-Deskriptoren
- Notification-Endpoint
- Bulk-IN-Endpoint
- Bulk-OUT-Endpoint
SET_LINE_CODINGGET_LINE_CODINGSET_CONTROL_LINE_STATE
Wenn diese Requests nie ankommen, hat der Host möglicherweise nicht den erwarteten CDC-Treiber gebunden.
Baudrate ist oft ein Signal, kein physischer UART
Für viele USB-CDC-Geräte ist die Baudrate nicht physisch relevant in der Weise, wie sie es für einen UART ist. Der Host sendet aber trotzdem Line Coding. Die Firmware kann sie nutzen, um eine Bridge zu konfigurieren, sie ignorieren oder validieren.
Capture-Fragen:
- Hat der Host
SET_LINE_CODINGgesendet? - Welche Baudrate, Parity, Stop-Bits und Data-Bits wurden angefragt?
- Hat die Firmware den Request akzeptiert?
- Hat der Host mit
SET_CONTROL_LINE_STATEDTR oder RTS gesetzt? - Wartet die Firmware vor dem Senden auf DTR?
Viele "no serial output"-Probleme sind eigentlich "Firmware wartet auf DTR und der Host hat es nie asserted" oder "App hat den Port geöffnet, aber ihn nicht wie erwartet konfiguriert".
Bulk-Endpoints beweisen Datenfluss
Nach dem Setup fließt CDC-Datenverkehr normalerweise über Bulk-Endpoints. Sehen Writes vom Host auf Bulk-OUT, aber keine Bulk-IN-Antwort, sendet die Firmware möglicherweise nicht. Erscheinen Bulk-IN-Daten, aber die App zeigt sie nicht, liegt es möglicherweise am Verhalten der Host-App.
Prüfen Sie:
- Endpoint-Richtung
- Transfer-Längen
- wiederholtes NAK/Timeout-Verhalten
- tatsächliche Payload-Bytes
- Status der Transfers
- Reihenfolge relativ zu Line-State-Requests
So wird ein USB-Capture nützlicher als ein Terminal-Screenshot.
Wo Bus Scope passt
Bus Scope hilft Firmware-Teams, Deskriptoren, Klassen-Requests und rohe Endpoint-Daten in einer Session zu halten. Für CDC-ACM-Debugging beantwortet es:
- Hat der Host CDC gebunden?
- Welches Line Coding hat er gesendet?
- Hat sich DTR/RTS verändert?
- Hat Bulk-OUT Kommandos getragen?
- Hat Bulk-IN Antworten getragen?
- Ist das Problem vor oder nach dem serial-artigen Traffic aufgetreten?
Für Suchen wie "USB CDC ACM no data", "virtual COM port no output" oder "SET_CONTROL_LINE_STATE DTR" liegt die Evidence nicht allein im Terminal. Sie liegt in den USB-Klassen-Requests und Endpoint-Transfers.
<!-- bus-scope-localized-transaction-foundation-v1:start -->USB-Vertragsprüfung für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“
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 CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“ 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 CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“ lautet: So debuggen Sie USB-CDC-ACM-virtuelle serielle Geräte durch Inspizieren von SET_LINE_CODING, SET_CONTROL_LINE_STATE, Bulk-Endpoints und Firmware-Verhalten. 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 CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten
Formulieren Sie für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“ 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 2: So debuggen Sie USB-CDC-ACM-virtuelle serielle Geräte durch Inspizieren von SETLINECODING,
Behandeln Sie „So debuggen Sie USB-CDC-ACM-virtuelle serielle Geräte durch Inspizieren von SET_LINE_CODING, SET_CONTROL_LINE_STATE, Bulk-Endpoints und Firmware-Verha“ als eigene Abnahmegrenze für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“. 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 3: CDC ACM hat Control- und Data-Interfaces
Formulieren Sie für „CDC ACM hat Control- und Data-Interfaces“ 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 4: Baudrate ist oft ein Signal, kein physischer UART
Behandeln Sie „Baudrate ist oft ein Signal, kein physischer UART“ als eigene Abnahmegrenze für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“. 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 5: Bulk-Endpoints beweisen Datenfluss
Formulieren Sie für „Bulk-Endpoints beweisen Datenfluss“ 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 6: Wo Bus Scope passt
Behandeln Sie „Wo Bus Scope passt“ als eigene Abnahmegrenze für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“. 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 7: USB-Vertragsprüfung für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und
Formulieren Sie für „USB-Vertragsprüfung für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten““ 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 8: Wie sieht eine zitierfähige Antwort aus?
Behandeln Sie „Wie sieht eine zitierfähige Antwort aus?“ als eigene Abnahmegrenze für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“. 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 9: Wann ist ein Vergleich gültig?
Formulieren Sie für „Wann ist ein Vergleich gültig?“ 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 10: Communication-Interface-Deskriptor
Behandeln Sie „Communication-Interface-Deskriptor“ als eigene Abnahmegrenze für „USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten“. 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.
Abnahmematrix
| Prüfpunkt | Aufzubewahrender Nachweis | Passkriterium |
|---|---|---|
| USB CDC ACM Serial Debugging: Line Coding, Control Line State und fehlende Daten | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| So debuggen Sie USB-CDC-ACM-virtuelle serielle Geräte durch Inspizieren von SETLINECODING, SETCONTROLLINESTATE, Bulk-End | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| CDC ACM hat Control- und Data-Interfaces | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Baudrate ist oft ein Signal, kein physischer UART | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Bulk-Endpoints beweisen Datenfluss | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Wo Bus Scope passt | 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 -->