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, BOT, CBW, CSW

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.