Débogage USB HID Boot Protocol vs Report Protocol
Comment déboguer la commutation USB HID Boot Protocol et Report Protocol, requêtes SetProtocol, mode BIOS clavier, report IDs, touches manquantes et compatibilité firmware HID.
Les claviers et souris USB HID peuvent utiliser Boot Protocol ou Report Protocol. Les utilisateurs cherchent « HID Boot Protocol », « HID Report Protocol », « USB keyboard BIOS mode », « SetProtocol HID », « keyboard works in BIOS but not OS » ou « HID report ID missing keys » quand l'entrée marche dans un environnement mais échoue dans un autre.
Bus Scope est utile car l'hôte peut envoyer des requêtes de classe HID qui changent la façon dont le périphérique formate les rapports. Si le firmware ignore SetProtocol ou envoie le mauvais format de rapport, des touches peuvent disparaître même si le périphérique s'énumère correctement.
Boot Protocol
Boot Protocol est un format HID simplifié utilisé par le BIOS, UEFI, les environnements de pré-boot et les piles hôte simples. Il permet à des claviers et souris basiques de marcher avant qu'un parser HID complet ne soit disponible.
Symptômes impliquant Boot Protocol :
- Clavier marche dans le BIOS mais échoue dans l'OS.
- Clavier marche dans l'OS mais pas dans le menu de boot.
- Touches spéciales disparaissent en mode pré-boot.
- Souris marche seulement après chargement de l'OS.
- Le firmware envoie des report IDs quand le rapport boot n'en attend pas.
La question diagnostique est : quel protocole l'hôte a-t-il sélectionné ?
Report Protocol
Report Protocol utilise le HID report descriptor. Il supporte des dispositions plus riches, report IDs, rapports vendor, touches média, capteurs et comportement composite.
Si l'hôte passe en Report Protocol mais que le périphérique continue d'envoyer des rapports Boot, l'OS peut parser l'entrée incorrectement. Si l'hôte demande Boot Protocol mais que le périphérique envoie Report Protocol, le BIOS peut ignorer les rapports.
Requête SetProtocol
La requête de classe HID SetProtocol peut basculer entre Boot Protocol et Report Protocol pour les périphériques supportés.
Preuves à collecter :
- Descripteur d'interface HID.
- Valeurs Boot subclass et protocol.
- Report descriptor.
- Requête
SetProtocol. - Valeur de protocole sélectionnée par l'hôte.
- Octets de rapport interrupt IN avant et après le switch.
Bus Scope peut rendre cette séquence visible.
Report IDs et touches manquantes
Report Protocol peut utiliser des report IDs. Boot Protocol attend souvent des rapports de taille fixe sans préfixe de report ID.
Bugs firmware fréquents :
- Le périphérique inclut le report ID en Boot Protocol.
- Le périphérique omet le report ID en Report Protocol.
- Le périphérique change la taille du rapport mais le descripteur ne suit pas.
- Les touches média sont uniquement dans un rapport secondaire.
- Le rapport NKRO est envoyé avant que l'hôte ne l'active.
- Le clavier envoie un rapport vendor sur l'endpoint clavier.
Ces bugs créent des expressions comme « USB keyboard missing keys » et « HID report ID wrong ».
Comportement BIOS vs système d'exploitation
Les environnements BIOS et UEFI sont généralement plus stricts et plus simples que les OS complets. Un clavier peut paraître correct sur Windows ou Linux mais échouer avant le boot.
Comparaison utile :
- Capture pendant le pré-boot si possible avec un analyseur externe.
- Capture après chargement de l'OS.
- Comparez le comportement de SetProtocol.
- Comparez le format de payload des rapports.
- Vérifiez si le périphérique reset entre environnements.
Même si la capture pré-boot est difficile, la preuve SetProtocol côté OS peut révéler les hypothèses du firmware.
Checklist de débogage
Suivez ce processus :
- Capturez l'énumération.
- Inspectez la subclass et le protocol de l'interface HID.
- Inspectez le HID report descriptor.
- Trouvez les requêtes SetProtocol.
- Décodez le protocole sélectionné.
- Comparez les rapports interrupt IN avant et après.
- Vérifiez l'usage du report ID.
- Testez touches normales et touches média.
- Comparez le comportement BIOS, bootloader, Windows et Linux.
- Conservez ensemble les octets de descripteurs et de rapports.
Diagnostic final
Les échecs HID Boot Protocol et Report Protocol sont des problèmes de négociation de format de rapport. Le périphérique peut s'énumérer correctement tout en envoyant des rapports dans le mauvais format de protocole.
Bus Scope aide à prouver si des touches manquantes, échecs d'entrée en BIOS ou problèmes de compatibilité HID viennent de la gestion SetProtocol, des report IDs, d'un décalage de descripteurs ou du formatage des rapports firmware.
<!-- bus-scope-localized-transaction-foundation-v1:start -->Test du contrat USB pour « Débogage USB HID Boot Protocol vs Report Protocol »
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 HID Boot Protocol vs Report Protocol », 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 HID Boot Protocol vs Report Protocol » est la suivante : Comment déboguer la commutation USB HID Boot Protocol et Report Protocol, requêtes SetProtocol, mode BIOS clavier, report IDs, touches manquantes et compatibilité firmware HID. 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 HID Boot Protocol vs Report Protocol
Transformez « Débogage USB HID Boot Protocol vs Report Protocol » 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 la commutation USB HID Boot Protocol et Report Protocol, requêtes SetProt
Traitez « Comment déboguer la commutation USB HID Boot Protocol et Report Protocol, requêtes SetProtocol, mode BIOS clavier, report IDs, touches manquantes et c » comme une porte d’acceptation distincte pour « Débogage USB HID Boot Protocol vs Report Protocol ». 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 : Boot Protocol
Transformez « Boot Protocol » 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 : Report Protocol
Traitez « Report Protocol » comme une porte d’acceptation distincte pour « Débogage USB HID Boot Protocol vs Report Protocol ». 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 : Requête SetProtocol
Transformez « Requête SetProtocol » 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 : Report IDs et touches manquantes
Traitez « Report IDs et touches manquantes » comme une porte d’acceptation distincte pour « Débogage USB HID Boot Protocol vs Report Protocol ». 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 : Comportement BIOS vs système d'exploitation
Transformez « Comportement BIOS vs système d'exploitation » 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 : Checklist de débogage
Traitez « Checklist de débogage » comme une porte d’acceptation distincte pour « Débogage USB HID Boot Protocol vs Report Protocol ». 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 : 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.
Point de contrôle 10 : Test du contrat USB pour « Débogage USB HID Boot Protocol vs Report Protocol »
Traitez « Test du contrat USB pour « Débogage USB HID Boot Protocol vs Report Protocol » » comme une porte d’acceptation distincte pour « Débogage USB HID Boot Protocol vs Report Protocol ». 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 USB HID Boot Protocol vs Report Protocol | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Comment déboguer la commutation USB HID Boot Protocol et Report Protocol, requêtes SetProtocol, mode BIOS clavier, repor | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Boot Protocol | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Report Protocol | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Requête SetProtocol | État initial, une action et état obtenu | Une seconde personne reproduit le résultat |
| Report IDs et touches manquantes | É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 -->