Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes
Comment déboguer les périphériques série virtuels USB CDC ACM en inspectant SET_LINE_CODING, SET_CONTROL_LINE_STATE, les endpoints bulk et le comportement firmware.
Les périphériques USB CDC ACM sont utilisés pour les ports série virtuels, consoles de périphérique, outils firmware, télémétrie, moyens de test et diagnostics embarqués. Côté application, c'est simple: "ouvrir un port COM ou /dev/ttyACM*, régler un baud rate, lire et écrire des octets. En dessous, hôte et périphérique échangent toujours des requêtes USB spécifiques à la classe et des transferts bulk."
Quand un périphérique CDC s'énumère mais qu'aucune donnée ne circule, la capture peut dire si le problème vient du descripteur, du line coding, de l'état des lignes de contrôle, du trafic d'endpoint ou du buffering firmware.
CDC ACM a des interfaces de contrôle et de données
Un périphérique CDC ACM typique expose une interface de communication et une interface de données. L'hôte peut envoyer des requêtes spécifiques à la classe avant que le transfert de données ne commence.
Preuves importantes :
- descripteur d'interface de communication
- descripteur d'interface de données
- descripteurs fonctionnels CDC
- endpoint de notification
- endpoint bulk IN
- endpoint bulk OUT
SET_LINE_CODINGGET_LINE_CODINGSET_CONTROL_LINE_STATE
Si ces requêtes n'arrivent jamais, l'hôte n'a peut-être pas lié le pilote CDC attendu.
Le baud rate est souvent un signal, pas un UART physique
Pour beaucoup de périphériques USB CDC, le baud rate n'a pas la même signification physique que pour un UART. Mais l'hôte envoie quand même le line coding. Le firmware peut s'en servir pour configurer un pont, l'ignorer ou le valider.
Questions à capturer :
- l'hôte a-t-il envoyé
SET_LINE_CODING? - quel baud rate, parité, bits de stop et bits de données ont été demandés ?
- le firmware a-t-il accepté la requête ?
- l'hôte a-t-il asserté DTR ou RTS avec
SET_CONTROL_LINE_STATE? - le firmware attend-il DTR avant d'envoyer ?
Beaucoup de problèmes « pas de sortie série » sont en réalité « le firmware attend DTR et l'hôte ne l'a jamais asserté » ou « l'application a ouvert le port mais ne l'a pas configuré comme attendu ».
Les endpoints bulk prouvent le mouvement des données
Après le setup, les données CDC passent généralement par les endpoints bulk. Si les écritures de l'hôte apparaissent sur bulk OUT mais qu'aucune réponse bulk IN ne suit, le firmware n'émet peut-être pas. Si des données bulk IN apparaissent mais que l'application ne les affiche pas, le problème peut être dans le comportement applicatif de l'hôte.
Inspectez :
- direction de l'endpoint
- longueurs de transfert
- comportement NAK/timeout répété
- octets de charge utile réels
- statut des transferts
- ordonnancement par rapport aux requêtes d'état de ligne
C'est ainsi qu'une capture USB devient plus utile qu'une capture d'écran de terminal.
Où Bus Scope s'inscrit
Bus Scope doit aider les équipes firmware à garder ensemble descripteurs, requêtes de classe et données brutes d'endpoint dans une même session. Pour le débogage CDC ACM, il doit répondre à :
- l'hôte a-t-il lié CDC ?
- quel line coding a-t-il envoyé ?
- DTR/RTS ont-ils changé ?
- bulk OUT a-t-il porté des commandes ?
- bulk IN a-t-il porté des réponses ?
- le problème est-il survenu avant ou après le début du trafic de style série ?
Pour des recherches comme « USB CDC ACM no data », « virtual COM port no output » ou « SET_CONTROL_LINE_STATE DTR », la preuve n'est pas dans le terminal seul. Elle est dans les requêtes de classe USB et les transferts d'endpoint.
<!-- bus-scope-localized-transaction-foundation-v1:start -->Test du contrat USB pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes »
La réponse directe est qu’un STALL, timeout ou reset n’explique pas seul la cause. Prouvez d’abord que le fournisseur voit le bon périphérique, puis lisez le contrat du transfer : type, direction, recipient, wValue, wIndex, longueur annoncée et réelle, status et état avant/après. Pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes », reliez la conclusion à la première transaction différente d’un cas nominal.
| Limite | Comparaison | Décision |
|---|---|---|
| Plateforme | fournisseur, droits, Root Hub ou usbmon/XHC20 | Les records viennent-ils de la bonne connexion ? |
| Setup | bmRequestType, bRequest, wValue, wIndex, wLength | L’hôte envoie-t-il la requête prévue ? |
| Data | direction, longueur et bytes conservés | Le payload respecte-t-il le contrat ? |
| Status | ACK, STALL, timeout ou cancellation | Où finit réellement la transaction ? |
| État | configuration, interface, alternate setting, endpoint halt | Le périphérique était-il prêt ? |
Commencez avant reset et énumération et gardez descriptors, SET_CONFIGURATION, SET_INTERFACE et la commande avant défaut. Un filtre endpoint étroit peut masquer le control transfer décisif. Exécutez une seule action USB documentée par essai et ne changez que firmware, driver, port, câble, commande ou timing.
Comment rédiger une réponse réutilisable ?
Nommez requête, champs setup, réponse et contexte précédent, puis un test à variable unique. Des bytes non retenus ne prouvent pas packet loss. La proximité entre command et reset établit une corrélation, pas la cause sans répétition ou transition d’état.
Quand la comparaison est-elle valide ?
Gardez VID/PID, firmware, speed, topologie, fournisseur, filtre et trigger. Comparez les phases USB sémantiques, pas les frame numbers entre usbmon et USBPcap. Notez début, fin, version, OS, connexion et checksum. Consultez le dépannage Bus Scope.
Les propriétaires Semrush restent distincts : free USB analyzer sur la page produit, best USB protocol analyzer dans la comparaison et USB descriptor viewer dans le guide descriptor. Aucun volume ou KD n’est inventé pour cette page de support.
<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Réponse directe et limite d’acceptation
La réponse courte à « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes » est la suivante : Comment déboguer les périphériques série virtuels USB CDC ACM en inspectant SET_LINE_CODING, SET_CONTROL_LINE_STATE, les endpoints bulk et le comportement firmware. Considérez cette phrase comme un résultat à vérifier, et non comme une promesse valable pour toute entrée, tout appareil, tout projet ou tout environnement. Un résultat complet consigne l’état initial, l’action exacte, la sortie visible et la condition qui prouve la fin de la tâche dans Bus Scope.
Procédure fondée sur les preuves
Commencez par un cas petit et répétable avant de modifier un projet complet. Notez version de l’application, système, identité de l’entrée ou de l’appareil, réglages pertinents et résultat attendu. Exécutez une action volontaire, conservez la première transition inattendue et comparez-la à un cas nominal si possible. Plusieurs changements simultanés masquent la condition qui a créé ou corrigé le problème.
Point de contrôle 1 : Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquante
Transformez « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes » en critère réussite/échec reproductible. Indiquez ce qui doit être présent, absent et quelle reprise reste sûre. Conservez le projet ou la capture d’origine jusqu’à ce que la copie corrigée réussisse le même contrôle.
Point de contrôle 2 : Comment déboguer les périphériques série virtuels USB CDC ACM en inspectant SETLINECODING,
Traitez « Comment déboguer les périphériques série virtuels USB CDC ACM en inspectant SET_LINE_CODING, SET_CONTROL_LINE_STATE, les endpoints bulk et le comporte » comme une porte d’acceptation distincte pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes ». Consignez l’état avant l’action, le premier changement visible et l’état final. Si le résultat diffère de l’objectif décrit, revenez au dernier point confirmé au lieu de poursuivre sur des hypothèses.
Point de contrôle 3 : CDC ACM a des interfaces de contrôle et de données
Transformez « CDC ACM a des interfaces de contrôle et de données » en critère réussite/échec reproductible. Indiquez ce qui doit être présent, absent et quelle reprise reste sûre. Conservez le projet ou la capture d’origine jusqu’à ce que la copie corrigée réussisse le même contrôle.
Point de contrôle 4 : Le baud rate est souvent un signal, pas un UART physique
Traitez « Le baud rate est souvent un signal, pas un UART physique » comme une porte d’acceptation distincte pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes ». Consignez l’état avant l’action, le premier changement visible et l’état final. Si le résultat diffère de l’objectif décrit, revenez au dernier point confirmé au lieu de poursuivre sur des hypothèses.
Point de contrôle 5 : Les endpoints bulk prouvent le mouvement des données
Transformez « Les endpoints bulk prouvent le mouvement des données » en critère réussite/échec reproductible. Indiquez ce qui doit être présent, absent et quelle reprise reste sûre. Conservez le projet ou la capture d’origine jusqu’à ce que la copie corrigée réussisse le même contrôle.
Point de contrôle 6 : Où Bus Scope s'inscrit
Traitez « Où Bus Scope s'inscrit » comme une porte d’acceptation distincte pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes ». Consignez l’état avant l’action, le premier changement visible et l’état final. Si le résultat diffère de l’objectif décrit, revenez au dernier point confirmé au lieu de poursuivre sur des hypothèses.
Point de contrôle 7 : Test du contrat USB pour « Débogage série USB CDC ACM : line coding, état des lignes de co
Transformez « Test du contrat USB pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes » » en critère réussite/échec reproductible. Indiquez ce qui doit être présent, absent et quelle reprise reste sûre. Conservez le projet ou la capture d’origine jusqu’à ce que la copie corrigée réussisse le même contrôle.
Point de contrôle 8 : Comment rédiger une réponse réutilisable ?
Traitez « Comment rédiger une réponse réutilisable ? » comme une porte d’acceptation distincte pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes ». Consignez l’état avant l’action, le premier changement visible et l’état final. Si le résultat diffère de l’objectif décrit, revenez au dernier point confirmé au lieu de poursuivre sur des hypothèses.
Point de contrôle 9 : Quand la comparaison est-elle valide ?
Transformez « Quand la comparaison est-elle valide ? » en critère réussite/échec reproductible. Indiquez ce qui doit être présent, absent et quelle reprise reste sûre. Conservez le projet ou la capture d’origine jusqu’à ce que la copie corrigée réussisse le même contrôle.
Point de contrôle 10 : descripteur d'interface de communication
Traitez « descripteur d'interface de communication » comme une porte d’acceptation distincte pour « Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes ». Consignez l’état avant l’action, le premier changement visible et l’état final. Si le résultat diffère de l’objectif décrit, revenez au dernier point confirmé au lieu de poursuivre sur des hypothèses.
Matrice d’acceptation
| Point | Preuve à conserver | Critère de réussite |
|---|---|---|
| Débogage série USB CDC ACM : line coding, état des lignes de contrôle et données manquantes | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Comment déboguer les périphériques série virtuels USB CDC ACM en inspectant SETLINECODING, SETCONTROLLINESTATE, les endp | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| CDC ACM a des interfaces de contrôle et de données | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Le baud rate est souvent un signal, pas un UART physique | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Les endpoints bulk prouvent le mouvement des données | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Où Bus Scope s'inscrit | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
Isolation, reprise et transmission
Arrêtez-vous à la première limite en échec. Conservez source, projet, session ou capture, dupliquez avant toute modification destructive et changez une variable par essai. Rejouer un flux entier après plusieurs changements peut modifier le résultat sans expliquer pourquoi.
Distinguez absence de preuve et preuve d’absence. Une vue vide peut signaler mauvaise entrée, portée, filtre, permission, appareil, période ou état du projet. Vérifiez acquisition ou import avant d’interpréter décodeur, éditeur, rapport ou export.
Avant transmission, rouvrez l’artefact durable et inspectez début, point de décision et fin. Notez version, plateforme, configuration, attente, observation et reproduction minimale. Retirez ou masquez les données sensibles et confirmez l’autorisation du destinataire.
Questions et réponses
Quelle est la manière fiable la plus rapide de commencer ?
Utilisez le plus petit cas représentatif, écrivez le résultat attendu et ne changez qu’une variable. Validez le parcours de base avant d’ajouter filtres, effets, modifications, automatisation ou grande source.
Quelles preuves faut-il conserver ?
Gardez identité de l’entrée, version, plateforme, réglages, action exacte, première transition inattendue et sortie finale. Fermez puis rouvrez projet, session, rapport ou export avant de le considérer durable.
Quand faut-il répéter la procédure ?
Répétez-la après un changement pertinent d’application, système, pilote, firmware, modèle, source ou processus. Conservez le cas accepté précédent comme référence non modifiée.
Quand le résultat est-il transmissible ?
Lorsqu’une seconde personne autorisée identifie l’entrée, répète l’action, obtient le même résultat, comprend les limites et ouvre l’artefact sans état local non documenté.
Guides associés
Ces pages dans la même langue couvrent les étapes voisines sans changer le propriétaire canonique du sujet :
<!-- multilingual-blog-closeout:end -->