{
  "slug": "bulk-only-transport",
  "term": "Bulk-Only Transport",
  "aliases": [
    "BOT",
    "USB Mass Storage Bulk-Only Transport"
  ],
  "definition": "Bulk-Only Transport (BOT) is a USB mass-storage transport that serializes command, optional data and status transfers over bulk endpoints.",
  "note": "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. [bot]\n\nBOT 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. [bot]\n\nIn 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. [bot-linux]\n\nFor 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. [bot]\n\nZero residue and command-passed status alone cannot establish durability: volatile caches and end-to-end flush/FUA handling still matter. [cache-control]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    "No command queuing through overlapping CBWs on the same BOT interface. [bot]"
  ],
  "related": [
    "usb-mass-storage",
    "uasp",
    "scsi"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "bot",
      "title": "USB-IF: Mass Storage Bulk-Only Transport revision 1.0, sections 3.3-3.5, 5 and 6",
      "url": "https://www.usb.org/sites/default/files/usbmassbulk_10.pdf",
      "accessed": "2026-11-07"
    },
    {
      "id": "bot-linux",
      "title": "Linux v6.12: Bulk-Only status, residue quirks and automatic sense handling",
      "url": "https://raw.githubusercontent.com/torvalds/linux/adc218676eef25575469234709c2d87185ca223a/drivers/usb/storage/transport.c",
      "accessed": "2026-10-19"
    },
    {
      "id": "cache-control",
      "title": "Linux v6.12: explicit volatile write-back cache control",
      "url": "https://raw.githubusercontent.com/torvalds/linux/adc218676eef25575469234709c2d87185ca223a/Documentation/block/writeback_cache_control.rst",
      "accessed": "2026-10-19"
    },
    {
      "id": "hesela-usb",
      "title": "Hesela: USB storage resets and transport-status interpretation",
      "url": "https://hesela.com/analyses/usb-sata-bridge-uas-failure-signatures/",
      "accessed": "2026-10-19"
    }
  ],
  "provenance": [
    "Normative requirements use USB-IF BOT revision 1.0. Linux behavior is scoped to commit adc218676eef25575469234709c2d87185ca223a; no USB hardware was tested. [bot] [bot-linux]"
  ],
  "updated": "2026-11-07"
}
