USB-Serial-COM-Port verschwindet: Re-Enumeration, Treiberbindung, Port-Nummern und CDC-Bridges debuggen
So troubleshooten Sie verschwindende USB-Serial-COM-Ports, sich ändernde Nummern, Re-Enumeration, CDC-ACM-Bridge-Resets, Treiberbindungs-Fehler und Apps mit stale Handles.
USB-Serial-Devices sind überall: "Arduino-Boards, industrielle Controller, Modems, GPS-Empfänger, Test-Fixtures, Debug-Probes, PLC-Tools, Barcode-Devices und Custom-CDC-ACM-Firmware. Wenn der COM-Port verschwindet, suchen Nutzer nach "USB serial COM port disappears", "COM port missing Device Manager", "USB serial re-enumerates", "CDC ACM device disconnects" und "COM port changes after reconnect", weil die App meist nur sagt, sie könne den Port nicht öffnen." Bus Scope hilft, weil ein fehlender COM-Port durch sehr unterschiedliche Layer verursacht sein kann: "USB-Enumeration, Deskriptor-Probleme, Treiberbindung, Device-Reset, stale App-Handle, Line-Coding-Request-Fehler oder Windows, das eine neue COM-Nummer zuweist."
COM-Port ist nicht das USB-Device
Der COM-Port ist eine OS-Abstraktion, die erstellt wird, nachdem das USB-Device enumeriert und der Serial-Treiber gebunden hat. Enumeriert das USB-Device nie, kann kein COM-Port erscheinen. Enumeriert das USB-Device, aber das CDC-Interface scheitert, kann der COM-Port trotzdem fehlen.
Trennen Sie die Layer:
- Ist das USB-Device angehängt?
- Wurden Deskriptoren korrekt gelesen?
- Wurde die Konfiguration abgeschlossen?
- Sind CDC-Interfaces erschienen?
- Hat der Treiber gebunden?
- Hat das OS einen COM-Port zugewiesen?
- Öffnet die App den korrekten aktuellen Port?
Re-Enumeration ändert Port-Nummern
Windows kann eine neue COM-Nummer zuweisen, wenn ein Device mit anderer Serial-Number, anderem USB-Pfad, anderer VID/PID oder anderer Interface-Identität erscheint. Ein Device, das in den Bootloader-Mode resettet, kann einen anderen COM-Port oder gar keinen COM-Port exponieren.
Symptome:
- Device war COM8, jetzt COM11.
- App merkt sich alten COM-Port.
- Anstecken an anderen USB-Port ändert Zuweisung.
- Bootloader nutzt anderen Port.
- Device erscheint nach Firmware-Update als unknown.
Der Bus-Trace identifiziert, ob sich die Device-Identität geändert hat.
CDC-ACM-Control-Requests
CDC-Serial-Devices empfangen oft Klassen-Requests:
SET_LINE_CODINGGET_LINE_CODINGSET_CONTROL_LINE_STATESEND_BREAK
Stallt oder mishandelt die Firmware diese, kann der Port sich öffnen, aber Daten fließen nie, oder die Treiberbindung kann scheitern.
Capturen Sie Open-Port-Verhalten, nicht nur Anstecken. Viele Fehler passieren, wenn die App den COM-Port öffnet und der Treiber Line-Coding- oder DTR/RTS-State-Änderungen sendet.
Stale App-Handles
Manchmal re-enumeriert USB korrekt, aber die App hält einen alten Handle oder eine gecachte COM-Port-Liste. Der Bus zeigt, dass das neue Device vorhanden ist. Die App scheitert trotzdem, weil sie den Port nicht freigegeben oder refreshed hat.
Das ist kein USB-Bus-Fehler. Es ist App-/Device-Management-Verhalten.
Debug-Checkliste
Nutzen Sie diesen Workflow:
- Ab Anstecken capturen.
- Device- und Configuration-Deskriptor bestätigen.
- CDC-Interface-Deskriptoren inspizieren.
- App-Öffnung des COM-Ports capturen.
- CDC-Klassen-Requests inspizieren.
- Auf Reset oder Disconnect nach Line-Coding prüfen.
- Device-Identität vor und nach Reconnect vergleichen.
- Prüfen, ob sich die COM-Nummer geändert hat.
- Prüfen, ob die App einen stale Port-Namen nutzt.
- USB-Evidence und OS-Port-Zuweisungs-Notizen bewahren.
Enddiagnose
Ein verschwindender USB-Serial-COM-Port kann Enumeration-Fehler, CDC-Deskriptor-Fehler, Treiberbindungs-Fehler, Re-Enumeration mit neuer Identität, Line-Coding-Request-Fehler, Reset unter Last oder stale App-State sein.
Bus Scope hilft, indem es die USB-Seite der Geschichte zeigt, sodass COM-Port-Symptome an Attach, Deskriptoren, CDC-Requests, Resets und tatsächliche Device-Identität gebunden werden können.