Débogage USB Mass Storage BOT : CBW, CSW, données sense et transferts échoués

Comment déboguer les échecs de Bulk-Only Transport USB Mass Storage via les Command Block Wrappers, Command Status Wrappers et données sense.

USB, stockage de masse, BOT, CBW, CSW, sense data

Les périphériques USB Mass Storage semblent simples côté utilisateur: "branchez une clé USB, un data logger, un périphérique de mise à jour firmware, ou un gadget de stockage embarqué, et un disque apparaît. Quand ça échoue, l'erreur peut être vague : périphérique non prêt, erreur d'I/O, demande de format, échec de montage ou disque qui disparaît." En dessous, beaucoup de périphériques utilisent le Bulk-Only Transport. BOT a un flux de commandes reconnaissable: "Command Block Wrapper, phase data, Command Status Wrapper. Si ce motif se casse, la capture peut généralement montrer où."

Comprendre le flux BOT

Le motif normal est :

  • l'hôte envoie CBW sur bulk OUT
  • phase data optionnelle sur bulk IN ou OUT
  • le périphérique envoie CSW sur bulk IN

Le CBW porte une commande SCSI. Le CSW rapporte le statut de la commande. Si la commande échoue, l'hôte peut émettre REQUEST SENSE pour savoir pourquoi.

Preuves utiles :

  • signature CBW
  • tag de commande
  • longueur de transfert de données
  • flag de direction
  • octets de commande SCSI
  • longueur de phase data
  • signature CSW
  • statut CSW
  • residue
  • données sense après défaillance

Si les tags ne correspondent pas, l'hôte ne peut pas se fier au statut. Si la longueur de données ne correspond pas au comportement, des timeouts ou stalls peuvent suivre.

Les données sense expliquent beaucoup de défaillances

Une commande SCSI échouée n'est pas la fin du diagnostic. Les données sense donnent souvent la vraie raison :

  • not ready
  • medium error
  • illegal request
  • write protected
  • logical block address hors plage
  • unit attention après reset

Les équipes firmware doivent capturer la commande qui a échoué et la réponse sense qui a suivi. Un échec de montage côté hôte peut être une réponse valide à une condition de stockage rapportée par le firmware.

STALL d'endpoint et récupération après reset

BOT a un comportement de récupération défini. Si un endpoint stall ou qu'une commande échoue gravement, l'hôte peut clear le halt d'endpoint ou émettre un reset de stockage de masse. Un périphérique qui ne récupère pas correctement peut sembler disparaître ou nécessiter un débranchement.

Inspectez :

  • quel endpoint a stallé
  • si l'hôte a envoyé clear feature
  • si un reset BOT s'est produit
  • si le flux CBW/CSW suivant a repris
  • si les tags sont restés cohérents

Cette preuve vaut mieux que de deviner les machines d'état du firmware.

Où Bus Scope s'inscrit

Bus Scope est un atelier d'inspection USB. Pour les cas de stockage de masse, les octets bruts seuls ne suffisent pas ; la structure BOT décodée et le statut des transferts aident les ingénieurs à trouver la faute plus vite.

Un bon rapport Bus Scope pour le débogage BOT doit répondre à :

  • quelle commande SCSI a échoué ?
  • la phase data a-t-elle matché la direction et longueur du CBW ?
  • le CSW est-il arrivé ?
  • le tag du CSW a-t-il matché le tag du CBW ?
  • quelles données sense ont suivi ?
  • la récupération après reset a-t-elle fonctionné ?

Pour des requêtes comme « USB mass storage BOT failed », « CBW CSW mismatch » ou « USB flash drive I/O error firmware », c'est le chemin du symptôme utilisateur vers la preuve de bus.

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

Test du contrat USB pour « Débogage USB Mass Storage BOT : CBW, CSW, données sense et transferts échoués »

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 Mass Storage BOT : CBW, CSW, données sense et transferts échoués », 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 Mass Storage BOT : CBW, CSW, données sense et transferts échoués » est la suivante : Comment déboguer les échecs de Bulk-Only Transport USB Mass Storage via les Command Block Wrappers, Command Status Wrappers et données sense. 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 Mass Storage BOT : CBW, CSW, données sense et transferts échoués

Pour « Débogage USB Mass Storage BOT : CBW, CSW, données sense et transferts échoués », séparez une décision du produit d’une limite du système, du matériel, du fichier source, des droits ou du processus. Confirmez la couche qui fournit la preuve avant d’attribuer une cause. Un symptôme voisin ne devient ainsi pas une cause racine prétendument prouvée.

Point de contrôle 2 : Comment déboguer les échecs de Bulk-Only Transport USB Mass Storage via les Command Block

Ne fermez « Comment déboguer les échecs de Bulk-Only Transport USB Mass Storage via les Command Block Wrappers, Command Status Wrappers et données sense. » que lorsque le résultat enregistré, exporté ou rouvert correspond encore à l’état observé. Le retour temporaire de l’interface aide, mais une preuve durable est plus forte. Consignez toute limite restante pour la suite.

Point de contrôle 3 : Comprendre le flux BOT

Pour « Comprendre le flux BOT », séparez une décision du produit d’une limite du système, du matériel, du fichier source, des droits ou du processus. Confirmez la couche qui fournit la preuve avant d’attribuer une cause. Un symptôme voisin ne devient ainsi pas une cause racine prétendument prouvée.

Point de contrôle 4 : Les données sense expliquent beaucoup de défaillances

Ne fermez « Les données sense expliquent beaucoup de défaillances » que lorsque le résultat enregistré, exporté ou rouvert correspond encore à l’état observé. Le retour temporaire de l’interface aide, mais une preuve durable est plus forte. Consignez toute limite restante pour la suite.

Point de contrôle 5 : STALL d'endpoint et récupération après reset

Pour « STALL d'endpoint et récupération après reset », séparez une décision du produit d’une limite du système, du matériel, du fichier source, des droits ou du processus. Confirmez la couche qui fournit la preuve avant d’attribuer une cause. Un symptôme voisin ne devient ainsi pas une cause racine prétendument prouvée.

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

Ne fermez « Où Bus Scope s'inscrit » que lorsque le résultat enregistré, exporté ou rouvert correspond encore à l’état observé. Le retour temporaire de l’interface aide, mais une preuve durable est plus forte. Consignez toute limite restante pour la suite.

Point de contrôle 7 : Test du contrat USB pour « Débogage USB Mass Storage BOT : CBW, CSW, données sense et tran

Pour « Test du contrat USB pour « Débogage USB Mass Storage BOT : CBW, CSW, données sense et transferts échoués » », séparez une décision du produit d’une limite du système, du matériel, du fichier source, des droits ou du processus. Confirmez la couche qui fournit la preuve avant d’attribuer une cause. Un symptôme voisin ne devient ainsi pas une cause racine prétendument prouvée.

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

Ne fermez « Comment rédiger une réponse réutilisable ? » que lorsque le résultat enregistré, exporté ou rouvert correspond encore à l’état observé. Le retour temporaire de l’interface aide, mais une preuve durable est plus forte. Consignez toute limite restante pour la suite.

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

Pour « Quand la comparaison est-elle valide ? », séparez une décision du produit d’une limite du système, du matériel, du fichier source, des droits ou du processus. Confirmez la couche qui fournit la preuve avant d’attribuer une cause. Un symptôme voisin ne devient ainsi pas une cause racine prétendument prouvée.

Point de contrôle 10 : l'hôte envoie CBW sur bulk OUT

Ne fermez « l'hôte envoie CBW sur bulk OUT » que lorsque le résultat enregistré, exporté ou rouvert correspond encore à l’état observé. Le retour temporaire de l’interface aide, mais une preuve durable est plus forte. Consignez toute limite restante pour la suite.

Matrice d’acceptation

Point Preuve à conserver Critère de réussite
Débogage USB Mass Storage BOT : CBW, CSW, données sense et transferts échoués État initial, une action et état obtenu Une seconde personne reproduit le résultat
Comment déboguer les échecs de Bulk-Only Transport USB Mass Storage via les Command Block Wrappers, Command Status Wrapp État initial, une action et état obtenu Une seconde personne reproduit le résultat
Comprendre le flux BOT État initial, une action et état obtenu Une seconde personne reproduit le résultat
Les données sense expliquent beaucoup de défaillances État initial, une action et état obtenu Une seconde personne reproduit le résultat
STALL d'endpoint et récupération après reset É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 -->