bulk-only-transport · shipping · also BOT, USB Mass Storage Bulk-Only Transport

Bulk-Only Transport

Bulk-Only Transport (BOT) is a USB mass-storage transport that serializes command, optional data and status transfers over bulk endpoints.

Related Observatory article: Bulk-Only Transport on hesela.com

A normal command sequence begins with a 31-byte Command Block Wrapper (CBW) and ends with a 13-byte Command Status Wrapper (CSW). Another CBW requires a received CSW for the preceding sequence or reset recovery. BOT does not support bidirectional data within one command. [1]

BOT Reset Recovery first issues the class-specific Bulk-Only Mass Storage Reset, then clears HALT on Bulk-In, then Bulk-Out. It is not the same operation as a USB device reset. The class reset alone preserves endpoint STALL conditions and data toggles. [1]

In Linux v6.12, a command-failed CSW takes the automatic-sense path, while a phase error returns a transport error for recovery. The driver also accommodates specific tag, signature and residue quirks, so driver acceptance is not proof of standards conformance. [2]

For command-passed or command-failed status, dCSWDataResidue subtracts relevant bytes sent for Data-In, or bytes processed for Data-Out, from dCBWDataTransferLength. Bus transfers may include padding or bytes the device does not process. The host ignores residue for phase-error status. [1]

Zero residue and command-passed status alone cannot establish durability: volatile caches and end-to-end flush/FUA handling still matter. [3]

Relations

related
USB mass storage, UASP, SCSI

Limitations

  • No command queuing through overlapping CBWs on the same BOT interface. [1]

Citations

  1. USB-IF: Mass Storage Bulk-Only Transport revision 1.0, sections 3.3-3.5, 5 and 6 (accessed 2026-11-07)
  2. Linux v6.12: Bulk-Only status, residue quirks and automatic sense handling (accessed 2026-10-19)
  3. Linux v6.12: explicit volatile write-back cache control (accessed 2026-10-19)

Further reading

  1. Hesela: USB storage resets and transport-status interpretation (accessed 2026-10-19)
Sources & caveats
  • Normative requirements use USB-IF BOT revision 1.0. Linux behavior is scoped to commit adc218676eef25575469234709c2d87185ca223a; no USB hardware was tested. [1] [2]

JSON: /data/terms/bulk-only-transport.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. Bulk-Only Transport. Hesela. 2026-11-07. https://hesela.dev/terms/bulk-only-transport/