Disparition du port COM série USB : débogage de ré-énumération, liaison de pilote, numéros de port et bridges CDC

Comment diagnostiquer les ports COM série USB qui disparaissent, changent de numéro, se ré-énumèrent, resets de bridges CDC ACM, échecs de liaison de pilote et applications qui conservent des handles obsolètes.

port com série usb disparaît, port com manquant, cdc acm, pont série usb, ré-énumération, liaison pilote, diagnostic usb

Les périphériques série USB sont partout: "cartes Arduino, contrôleurs industriels, modems, récepteurs GPS, moyens de test, sondes de debug, outils PLC, périphériques de codes-barres et firmwares CDC ACM personnalisés. Quand le port COM disparaît, les utilisateurs cherchent « USB serial COM port disappears », « COM port missing Device Manager », « USB serial re-enumerates », « CDC ACM device disconnects » ou « COM port changes after reconnect » car l'application se contente généralement de dire qu'elle ne peut pas ouvrir le port." Bus Scope est utile car un port COM manquant peut venir de couches très différentes: "énumération USB, problèmes de descripteurs, liaison de pilote, reset de périphérique, handle applicatif obsolète, échec de requête de line coding, ou Windows attribue un nouveau numéro COM."

Le port COM n'est pas le périphérique USB

Le port COM est une abstraction du système d'exploitation créée après que le périphérique USB s'est énuméré et que le pilote série s'est lié. Si le périphérique USB ne s'énumère jamais, aucun port COM ne peut apparaître. Si le périphérique USB s'énumère mais que l'interface CDC échoue, le port COM peut quand même être manquant.

Séparez les couches :

  • Le périphérique USB s'est-il attaché ?
  • Les descripteurs ont-ils été lus correctement ?
  • La configuration s'est-elle terminée ?
  • Les interfaces CDC sont-elles apparues ?
  • Le pilote s'est-il lié ?
  • L'OS a-t-il attribué un port COM ?
  • L'application a-t-elle ouvert le bon port actuel ?

La ré-énumération change les numéros de port

Windows peut attribuer un nouveau numéro COM quand un périphérique apparaît avec un numéro de série différent, un chemin USB différent, un VID/PID différent ou une identité d'interface différente. Un périphérique qui reset en mode bootloader peut exposer un port COM différent ou aucun port COM.

Symptômes :

  • Le périphérique était COM8, maintenant COM11.
  • L'application se souvient de l'ancien port COM.
  • Le rebranchement dans un autre port USB change l'attribution.
  • Le bootloader utilise un autre port.
  • Le périphérique apparaît comme inconnu après mise à jour firmware.

La trace de bus identifie si l'identité du périphérique a changé.

Requêtes de contrôle CDC ACM

Les périphériques série CDC reçoivent souvent des requêtes de classe :

  • SET_LINE_CODING
  • GET_LINE_CODING
  • SET_CONTROL_LINE_STATE
  • SEND_BREAK

Si le firmware stall ou mal gère ces requêtes, le port peut s'ouvrir mais aucune donnée ne circule, ou la liaison de pilote peut échouer.

Capturez le comportement d'ouverture du port, pas seulement le branchement. Beaucoup de défaillances surviennent quand l'application ouvre le port COM et que le pilote envoie des changements de line coding ou DTR/RTS.

Handles applicatifs obsolètes

Parfois l'USB se ré-énumère correctement, mais l'application garde un ancien handle ou une liste de ports COM cachée. Le bus montre que le nouveau périphérique est présent. L'application échoue quand même parce qu'elle n'a pas libéré ou rafraîchi le port.

Ce n'est pas une défaillance du bus USB. C'est un comportement applicatif ou de gestion de périphérique.

Checklist de débogage

Suivez ce flux :

  1. Capturez depuis le branchement.
  2. Confirmez le descripteur de périphérique et de configuration.
  3. Inspectez les descripteurs d'interfaces CDC.
  4. Capturez l'application ouvrant le port COM.
  5. Inspectez les requêtes de classe CDC.
  6. Cherchez un reset ou une déconnexion après le line coding.
  7. Comparez l'identité du périphérique avant et après reconnexion.
  8. Vérifiez si le numéro COM a changé.
  9. Vérifiez si l'application utilise un nom de port obsolète.
  10. Conservez à la fois la preuve USB et les notes d'attribution de port OS.

Diagnostic final

Un port COM série USB qui disparaît peut être un échec d'énumération, un échec de descripteur CDC, un échec de liaison de pilote, une ré-énumération avec une nouvelle identité, un échec de requête de line coding, un reset sous charge, ou un état applicatif obsolète.

Bus Scope aide en montrant le côté USB de l'histoire pour que les symptômes de port COM soient rattachés à l'attachement, aux descripteurs, aux requêtes CDC, aux resets et à l'identité réelle du périphérique.