Débogage USB Device Qualifier et Other Speed Configuration

Comment déboguer les descripteurs USB Device Qualifier, Other Speed Configuration, les différences d'énumération high-speed vs full-speed et les échecs de décalage de descripteurs.

device qualifier usb, other speed configuration, usb high speed, usb full speed, décalage descripteur, énumération usb, diagnostic usb

Les périphériques USB qui supportent à la fois le full-speed et le high-speed doivent décrire comment ils se comportent à l'autre vitesse. Les utilisateurs cherchent « USB Device Qualifier descriptor », « Other Speed Configuration descriptor », « high speed device enumerates as full speed », « USB descriptor mismatch » ou « device works on USB 2.0 but fails on hub » quand le même produit se comporte différemment selon le port, câble, hub ou contrôleur hôte.

Bus Scope est utile car le diagnostic exige de comparer requêtes de descripteurs, vitesse réelle, tailles de paquet d'endpoint, descripteurs de configuration et décisions de l'hôte pendant l'énumération.

Ce qu'est le descripteur Device Qualifier

Le descripteur Device Qualifier décrit comment un périphérique capable high-speed fonctionnerait à l'autre vitesse. Si le périphérique est actuellement en high-speed, le qualifier renseigne l'hôte sur le comportement full-speed. S'il est actuellement en full-speed, il peut décrire la capacité high-speed.

Champs importants :

  • version USB
  • device class
  • subclass
  • protocol
  • taille de paquet max de l'endpoint zéro
  • nombre de configurations

Si ce descripteur est manquant, mal formé ou incohérent, l'énumération peut quand même réussir sur un hôte et échouer sur un autre.

Other Speed Configuration

Le descripteur Other Speed Configuration décrit les détails de configuration à la vitesse opposée. Les tailles de paquet d'endpoint, intervalles de polling et hypothèses de bande passante peuvent différer.

Motifs de défaillance fréquents :

  • la configuration full-speed annonce des tailles d'endpoint qui n'ont de sens qu'en high-speed
  • la configuration high-speed oublie une interface
  • le nombre de descripteurs other-speed ne correspond pas à la configuration réelle
  • le firmware renvoie un STALL quand l'hôte attend un descripteur
  • l'hôte accepte le périphérique mais lie le mauvais pilote
  • le périphérique marche via un hub et échoue via un autre

Ces problèmes sont difficiles à voir dans les logs applicatifs.

Périphérique high-speed énuméré comme full-speed

Un cas de support fréquent est « USB high-speed device detected as full-speed ». Cela peut venir de la qualité du câble, de la topologie du hub, de l'intégrité du signal, du comportement de chirp firmware, du design électrique ou de problèmes de descripteurs.

La preuve au niveau paquet aide à séparer les couches :

  • La négociation high-speed a-t-elle eu lieu ?
  • L'hôte a-t-il demandé le Device Qualifier ?
  • Le périphérique a-t-il renvoyé des octets de descripteur valides ?
  • Les descripteurs d'endpoint correspondaient-ils à la vitesse sélectionnée ?
  • L'hôte a-t-il resete et retenté ?
  • Le périphérique s'est-il ré-énuméré plus tard à une autre vitesse ?

Si la trace montre que le périphérique n'a jamais atteint le high-speed, des correctifs de descripteurs ne suffiront pas. Si la trace montre une énumération high-speed mais des descripteurs other-speed invalides, le firmware est un suspect plus sérieux.

Décalage de taille de paquet d'endpoint entre vitesses

Les descripteurs d'endpoint peuvent différer entre les configurations full-speed et high-speed. Un endpoint bulk peut faire 64 octets en full-speed et 512 en high-speed.

Symptômes de défaillance :

  • les transferts échouent seulement sur les ports high-speed
  • les transferts échouent seulement via un vieux hub full-speed
  • la taille de buffer firmware correspond à une vitesse mais le descripteur en annonce une autre
  • le pilote hôte envoie des transferts plus gros que ce que le firmware attendait
  • le périphérique renvoie des paquets courts à des frontières inattendues

Cela se rattache directement au débogage de wMaxPacketSize.

Périphériques composites

Les périphériques composites rendent les descripteurs other-speed plus fragiles. Un périphérique peut exposer HID, CDC, vendor, stockage de masse et interfaces de mise à jour firmware. L'arbre other-speed doit rester cohérent.

Bugs :

  • descripteur Interface Association manquant à une vitesse
  • numéros d'interface différents entre vitesses
  • adresses d'endpoint qui changent de façon inattendue
  • une interface a un descripteur other-speed valide et une autre non
  • Windows lie un pilote différent après ré-énumération

Pour les produits à firmware personnalisé, c'est une erreur de copier-coller fréquente.

STALL peut être valide ou suspect

Certaines requêtes de descripteurs peuvent légitimement STALL pour des périphériques qui ne supportent pas la capacité demandée. Mais pour les périphériques capables high-speed, des défaillances répétées autour du Device Qualifier ou de Other Speed Configuration méritent attention.

Le rapport doit conserver :

  • type de requête
  • type de descripteur
  • wValue
  • wIndex
  • wLength
  • données renvoyées
  • statut STALL ou timeout

Bus Scope doit rendre ces transferts de contrôle lisibles au lieu de forcer les ingénieurs à décoder manuellement les octets bruts.

Checklist de débogage

Suivez ce flux :

  1. Capturez depuis le branchement physique.
  2. Enregistrez la vitesse réellement négociée.
  3. Inspectez le Device Descriptor.
  4. Inspectez le descripteur Device Qualifier.
  5. Inspectez le descripteur Other Speed Configuration.
  6. Comparez les tailles de paquet d'endpoint entre vitesses.
  7. Vérifiez les numéros d'interface et adresses d'endpoint.
  8. Testez port direct, hub et dock USB-C.
  9. Comparez le comportement d'énumération Windows et Linux.
  10. Conservez les échecs et retries de requêtes de descripteurs.

Diagnostic final

Les bugs USB Device Qualifier et Other Speed Configuration sont des problèmes de cohérence de descripteurs. Ils expliquent pourquoi un périphérique peut marcher à une vitesse, échouer à une autre, ou se comporter différemment derrière des hubs et docks.

Bus Scope aide à capturer la preuve d'énumération exacte : requêtes de descripteurs, octets other-speed, tailles d'endpoint, STALLs, resets et conséquences de liaison de pilote.

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

Test du contrat USB pour « Débogage USB Device Qualifier et Other Speed Configuration »

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 USB Device Qualifier et Other Speed Configuration », 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 USB Device Qualifier et Other Speed Configuration » est la suivante : Comment déboguer les descripteurs USB Device Qualifier, Other Speed Configuration, les différences d'énumération high-speed vs full-speed et les échecs de décalage de descripteurs. 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 USB Device Qualifier et Other Speed Configuration

Traitez « Débogage USB Device Qualifier et Other Speed Configuration » comme une porte d’acceptation distincte pour « Débogage USB Device Qualifier et Other Speed Configuration ». 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 2 : Comment déboguer les descripteurs USB Device Qualifier, Other Speed Configuration, les dif

Transformez « Comment déboguer les descripteurs USB Device Qualifier, Other Speed Configuration, les différences d'énumération high-speed vs full-speed et les échec » 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 3 : Ce qu'est le descripteur Device Qualifier

Traitez « Ce qu'est le descripteur Device Qualifier » comme une porte d’acceptation distincte pour « Débogage USB Device Qualifier et Other Speed Configuration ». 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 4 : Other Speed Configuration

Transformez « Other Speed Configuration » 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 5 : Périphérique high-speed énuméré comme full-speed

Traitez « Périphérique high-speed énuméré comme full-speed » comme une porte d’acceptation distincte pour « Débogage USB Device Qualifier et Other Speed Configuration ». 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 6 : Décalage de taille de paquet d'endpoint entre vitesses

Transformez « Décalage de taille de paquet d'endpoint entre vitesses » 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 7 : Périphériques composites

Traitez « Périphériques composites » comme une porte d’acceptation distincte pour « Débogage USB Device Qualifier et Other Speed Configuration ». 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 8 : STALL peut être valide ou suspect

Transformez « STALL peut être valide ou suspect » 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 9 : Checklist de débogage

Traitez « Checklist de débogage » comme une porte d’acceptation distincte pour « Débogage USB Device Qualifier et Other Speed Configuration ». 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 10 : Diagnostic final

Transformez « Diagnostic final » 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.

Matrice d’acceptation

Point Preuve à conserver Critère de réussite
Débogage USB Device Qualifier et Other Speed Configuration État initial, une action et état obtenu Une seconde personne reproduit le résultat
Comment déboguer les descripteurs USB Device Qualifier, Other Speed Configuration, les différences d'énumération high-sp État initial, une action et état obtenu Une seconde personne reproduit le résultat
Ce qu'est le descripteur Device Qualifier État initial, une action et état obtenu Une seconde personne reproduit le résultat
Other Speed Configuration État initial, une action et état obtenu Une seconde personne reproduit le résultat
Périphérique high-speed énuméré comme full-speed État initial, une action et état obtenu Une seconde personne reproduit le résultat
Décalage de taille de paquet d'endpoint entre vitesses É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 -->