USB-Mass-Storage-BOT-Debugging: CBW, CSW, Sense-Daten und fehlgeschlagene Transfers
So debuggen Sie USB-Mass-Storage-Bulk-Only-Transport-Fehler mit Command Block Wrappern, Command Status Wrappern und Sense-Daten.
USB-Mass-Storage-Geräte wirken aus User-Sicht einfach: "Flash-Drive, Data-Logger, Firmware-Update-Device oder Embedded-Storage-Gadget anstecken, und ein Disk erscheint. Wenn es scheitert, ist der Fehler oft vage: Device not ready, I/O-Fehler, Format-Prompt, Mount-Fehler oder verschwindender Disk." Darunter nutzen viele Geräte Bulk-Only Transport. BOT hat einen erkennbaren Kommando-Flow: "Command Block Wrapper, Data-Phase, Command Status Wrapper. Bricht dieses Muster, kann der Capture meist zeigen, wo."
Den BOT-Flow verstehen
Das normale Muster:
- Host sendet CBW über Bulk-OUT
- optionale Data-Phase über Bulk-IN oder Bulk-OUT
- Gerät sendet CSW über Bulk-IN
Der CBW trägt ein SCSI-Kommando. Der CSW meldet den Kommando-Status. Scheitert das Kommando, gibt der Host möglicherweise REQUEST SENSE aus, um den Grund zu erfahren.
Nützliche Evidence:
- CBW-Signatur
- Command-Tag
- Data-Transfer-Länge
- Richtungs-Flag
- SCSI-Kommando-Bytes
- Data-Phase-Länge
- CSW-Signatur
- CSW-Status
- Residue
- Sense-Daten nach Fehler
Passen die Tags nicht zusammen, kann der Host dem Status nicht trauen. Passt die Datenlänge nicht zum Verhalten, können Timeouts oder Stalls folgen.
Sense-Daten erklären viele Fehler
Ein fehlgeschlagenes SCSI-Kommando ist nicht das Ende der Diagnose. Sense-Daten geben oft den echten Grund:
- not ready
- medium error
- illegal request
- write protected
- logical block address out of range
- unit attention after reset
Firmware-Teams sollten das fehlgeschlagene Kommando und die folgende Sense-Antwort capturen. Ein Host-Mount-Fehler kann eine valide Reaktion auf einen von der Firmware gemeldeten Storage-Zustand sein.
Endpoint-STALL und Reset-Recovery
BOT hat definiertes Recovery-Verhalten. Stallt ein Endpoint oder scheitert ein Kommando schwer, gibt der Host möglicherweise Clear-Endpoint-Halt oder Mass-Storage-Reset aus. Ein Gerät, das nicht korrekt recoveret, kann verschwinden oder Unplugging erfordern.
Prüfen Sie:
- welcher Endpoint stalled
- ob der Host Clear-Feature gesendet hat
- ob BOT-Reset passiert ist
- ob der nachfolgende CBW/CSW-Flow resumed hat
- ob die Tags konsistent blieben
Diese Evidence ist besser, als Firmware-State-Machines zu erraten.
Wo Bus Scope passt
Bus Scope ist eine USB-Inspektions-Workbench. Für Mass-Storage-Fälle reichen Rohbytes allein nicht; dekodierte BOT-Struktur und Transfer-Status helfen Engineers, den Fehler schneller zu finden.
Ein nützlicher Bus-Scope-Report für BOT-Debugging beantwortet:
- welches SCSI-Kommando ist fehlgeschlagen?
- hat die Data-Phase zu CBW-Richtung und -Länge gepasst?
- ist CSW angekommen?
- hat das CSW-Tag zum CBW-Tag gepasst?
- welche Sense-Daten folgten?
- hat die Reset-Recovery funktioniert?
Für Suchanfragen wie "USB mass storage BOT failed", "CBW CSW mismatch" oder "USB flash drive I/O error firmware" ist das der Pfad vom User-Symptom zur Bus-Evidence.