Débogage de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de pilote

Comment déboguer les périphériques composites USB quand une interface marche, une autre échoue, ou que l'hôte lie le mauvais pilote.

USB, périphérique composite, IAD, interface, liaison pilote, descripteur

Les périphériques composites USB sont à la fois pratiques et dangereux. Un seul périphérique peut exposer des contrôles HID, du CDC série, du stockage de masse, des endpoints vendor, de l'audio, de la vidéo ou des interfaces de diagnostic. Quand tout est décrit correctement, l'hôte lie les bons pilotes et chaque fonction marche. Quand un seul champ de descripteur est faux, le périphérique entier peut sembler peu fiable.

Les recherches comme « USB composite device not recognized », « CDC interface not showing », « HID works but serial does not » ou « wrong driver binding USB interface » pointent généralement vers la structure des descripteurs, la numérotation d'interfaces, l'affectation des endpoints ou le comportement de l'Interface Association Descriptor.

Les périphériques composites nécessitent une configuration cohérente

Le descripteur de configuration est la carte de niveau supérieur. Il doit décrire la longueur totale, le nombre d'interfaces, les attributs d'alimentation, et tous les descripteurs d'interface et d'endpoint imbriqués. Si wTotalLength est faux, l'hôte peut ne pas lire toutes les fonctions. Si le nombre d'interfaces est faux, l'hôte peut ignorer les interfaces suivantes. Si les adresses d'endpoints se télescopent, les transferts deviennent ambigus ou invalides.

Inspectez :

  • longueur totale de configuration
  • nombre d'interfaces
  • numéros d'interfaces
  • alternate settings
  • adresses d'endpoints
  • directions d'endpoints
  • valeurs class, subclass, protocol
  • ordre des descripteurs

Une capture doit montrer si l'hôte a demandé la configuration complète et quels octets le périphérique a renvoyés.

L'IAD aide à regrouper les interfaces liées

Les Interface Association Descriptors sont souvent utilisés pour regrouper plusieurs interfaces appartenant à une même fonction, comme la communication CDC plus les données CDC. Sans regroupement correct, l'hôte peut lier les pilotes de façon incorrecte ou n'exposer qu'une partie de la fonction.

Preuves IAD à inspecter :

  • premier numéro d'interface
  • nombre d'interfaces
  • function class, subclass, protocol
  • placement avant les interfaces regroupées
  • cohérence avec les descripteurs d'interface réels

Si le CDC série n'apparaît pas mais que HID fonctionne, l'interface HID peut être correcte tandis que le regroupement CDC est faux.

Les collisions d'adresses d'endpoints passent facilement inaperçues

Les adresses d'endpoints incluent la direction. L'endpoint 0x81 et 0x01 sont de directions différentes, mais deux endpoints IN avec la même adresse ne sont pas valides au sein de la même configuration. Les équipes firmware copient parfois des descripteurs d'endpoints entre interfaces et oublient de mettre à jour les adresses.

Symptômes :

  • une interface marche, une autre est muette
  • l'hôte envoie des transferts vers un endpoint inattendu
  • le pilote de classe charge mais l'application ne reçoit rien
  • STALL d'endpoint ou timeout après configuration
  • seule une fonction marche à la fois

La capture doit montrer côte à côte les descripteurs d'endpoints et le trafic de transfert ultérieur.

La liaison de pilote est aussi une preuve

L'hôte choisit les pilotes en fonction des descripteurs. Un périphérique qui se lie incorrectement peut avoir une preuve de descripteur qui explique pourquoi. Class, subclass, protocol, interface association, compatible IDs et descripteurs spécifiques à l'OS peuvent tous affecter la liaison.

Ne diagnostiquez pas la liaison de pilote uniquement à partir du Gestionnaire de périphériques ou des logs applicatifs. Comparez les requêtes spécifiques à la classe de l'hôte avec l'arborescence des descripteurs. Si les requêtes de classe attendues n'arrivent jamais, l'hôte n'a probablement pas lié le pilote attendu.

Où Bus Scope s'inscrit

Bus Scope doit aider les équipes firmware à inspecter les périphériques composites aux deux niveaux :

  • carte des descripteurs
  • preuves de transfert après la liaison du pilote

Une bonne session .bscope pour le débogage composite montre :

  • toutes les interfaces
  • regroupement IAD
  • affectations d'endpoints
  • requêtes spécifiques à la classe par interface
  • octets de descripteurs bruts
  • statut des transferts après configuration

Cela rend la conversation de support précise. Au lieu de « Windows n'aime pas notre périphérique composite », le rapport peut dire « l'interface 2 ne reçoit jamais les requêtes de classe CDC parce que le descripteur de regroupement ne correspond pas à la disposition d'interfaces déclarée ».

C'est le niveau de preuve dont les équipes firmware ont besoin.

<!-- bus-scope-localized-transaction-foundation-v1:start -->

Test du contrat USB pour « Débogage de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de pilote »

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 de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de pilote », 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 de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de pilote » est la suivante : Comment déboguer les périphériques composites USB quand une interface marche, une autre échoue, ou que l'hôte lie le mauvais pilote. 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 de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de

Vérifiez « Débogage de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de pilote » avec la plus petite entrée représentative. Gardez les réglages indépendants inchangés, répétez la même action et contrôlez le résultat après réouverture ou reconnexion. Une image seule est moins forte qu’un relevé comprenant entrée, réglage, action, sortie et heure.

Point de contrôle 2 : Comment déboguer les périphériques composites USB quand une interface marche, une autre éc

Si « Comment déboguer les périphériques composites USB quand une interface marche, une autre échoue, ou que l'hôte lie le mauvais pilote. » est ambigu, comparez un cas nominal et un cas défaillant dans des conditions identiques. Marquez la première différence utile au lieu de lister tous les symptômes suivants. Cette limite produit généralement une demande d’assistance plus claire.

Point de contrôle 3 : Les périphériques composites nécessitent une configuration cohérente

Vérifiez « Les périphériques composites nécessitent une configuration cohérente » avec la plus petite entrée représentative. Gardez les réglages indépendants inchangés, répétez la même action et contrôlez le résultat après réouverture ou reconnexion. Une image seule est moins forte qu’un relevé comprenant entrée, réglage, action, sortie et heure.

Point de contrôle 4 : L'IAD aide à regrouper les interfaces liées

Si « L'IAD aide à regrouper les interfaces liées » est ambigu, comparez un cas nominal et un cas défaillant dans des conditions identiques. Marquez la première différence utile au lieu de lister tous les symptômes suivants. Cette limite produit généralement une demande d’assistance plus claire.

Point de contrôle 5 : Les collisions d'adresses d'endpoints passent facilement inaperçues

Vérifiez « Les collisions d'adresses d'endpoints passent facilement inaperçues » avec la plus petite entrée représentative. Gardez les réglages indépendants inchangés, répétez la même action et contrôlez le résultat après réouverture ou reconnexion. Une image seule est moins forte qu’un relevé comprenant entrée, réglage, action, sortie et heure.

Point de contrôle 6 : La liaison de pilote est aussi une preuve

Si « La liaison de pilote est aussi une preuve » est ambigu, comparez un cas nominal et un cas défaillant dans des conditions identiques. Marquez la première différence utile au lieu de lister tous les symptômes suivants. Cette limite produit généralement une demande d’assistance plus claire.

Point de contrôle 7 : Où Bus Scope s'inscrit

Vérifiez « Où Bus Scope s'inscrit » avec la plus petite entrée représentative. Gardez les réglages indépendants inchangés, répétez la même action et contrôlez le résultat après réouverture ou reconnexion. Une image seule est moins forte qu’un relevé comprenant entrée, réglage, action, sortie et heure.

Point de contrôle 8 : Test du contrat USB pour « Débogage de périphérique composite USB : numéros d'interface, I

Si « Test du contrat USB pour « Débogage de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de pilote » » est ambigu, comparez un cas nominal et un cas défaillant dans des conditions identiques. Marquez la première différence utile au lieu de lister tous les symptômes suivants. Cette limite produit généralement une demande d’assistance plus claire.

Point de contrôle 9 : Comment rédiger une réponse réutilisable ?

Vérifiez « Comment rédiger une réponse réutilisable ? » avec la plus petite entrée représentative. Gardez les réglages indépendants inchangés, répétez la même action et contrôlez le résultat après réouverture ou reconnexion. Une image seule est moins forte qu’un relevé comprenant entrée, réglage, action, sortie et heure.

Point de contrôle 10 : Quand la comparaison est-elle valide ?

Si « Quand la comparaison est-elle valide ? » est ambigu, comparez un cas nominal et un cas défaillant dans des conditions identiques. Marquez la première différence utile au lieu de lister tous les symptômes suivants. Cette limite produit généralement une demande d’assistance plus claire.

Matrice d’acceptation

Point Preuve à conserver Critère de réussite
Débogage de périphérique composite USB : numéros d'interface, IAD, endpoints et liaison de pilote État initial, une action et état obtenu Une seconde personne reproduit le résultat
Comment déboguer les périphériques composites USB quand une interface marche, une autre échoue, ou que l'hôte lie le mau État initial, une action et état obtenu Une seconde personne reproduit le résultat
Les périphériques composites nécessitent une configuration cohérente État initial, une action et état obtenu Une seconde personne reproduit le résultat
L'IAD aide à regrouper les interfaces liées État initial, une action et état obtenu Une seconde personne reproduit le résultat
Les collisions d'adresses d'endpoints passent facilement inaperçues État initial, une action et état obtenu Une seconde personne reproduit le résultat
La liaison de pilote est aussi une preuve É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 -->