BOT(Bulk-Only Transport) Device Descriptors and Layouts

A standard USB-enabled BOT has the following layout of bulk device descriptors: Device Descriptors, Configuration Descriptors, and String Descriptors.
BOT Device Descriptors and Layouts

Table of Contents

Bulk-Only Transport is a storage device. Like other common devices, BOT shares some common descriptors, such as Device descriptors, configuration descriptors, interface descriptors, endpoint descriptors, and string descriptors.

There are no other special descriptors for BOT mass storage devices.

A standard USB-enabled BOT has the following layout of bulk device descriptors:

  • Device Descriptors
  • Configuration Descriptors (Interface Descriptors, Endpoint Descriptors)
  • String Descriptors

Device Descriptors

The BOT mass storage device type is defined in the interface descriptor, so the values ​​of bDeviceClass, bDeviceSubClass, and bDeviceProtocol in its device descriptor must be 0.

The iSerialNumber string must be defined in the appropriate format (Windows validation is not strict); With this format, the last 12 characters of the serial number string must be hexadecimal data bits.

For example, the device descriptor of the DiskMFR flash drive is as follows:

  1. ---------------------- Device Descriptor ----------------------
  2. bLength : 0x12 (18 bytes)
  3. bDescriptorType : 0x01 (Device Descriptor)
  4. bcdUSB : 0x200 (USB Version 2.00)
  5. bDeviceClass : 0x00 (defined by the interface descriptors)
  6. bDeviceSubClass : 0x00
  7. bDeviceProtocol : 0x00
  8. bMaxPacketSize0 : 0x40 (64 bytes)
  9. idVendor : 0x0951 (Yunze Technology Limited)
  10. idProduct : 0x1665
  11. bcdDevice : 0x0200
  12. iManufacturer : 0x01 (String Descriptor 1)
  13. Language 0x0409 : "DiskMFR"
  14. iProduct : 0x02 (String Descriptor 2)
  15. Language 0x0409 : "DiskMFR 2.0"
  16. iSerialNumber : 0x03 (String Descriptor 3)
  17. Language 0x0409 : "1C6F654E48EB1FC1391B7D69"
  18. bNumConfigurations : 0x01 (1 Configuration)
  19. Data (HexDump) : 12 01 00 02 00 00 00 40 51 09 65 16 00 02 01 02 [email protected].....
  20. 03 01

Configuration Descriptors

The configuration descriptors must be consistent with the standard configuration descriptors.

  1. ------------------ Configuration Descriptor -------------------
  2. bLength : 0x09 (9 bytes)
  3. bDescriptorType : 0x02 (Configuration Descriptor)
  4. wTotalLength : 0x0020 (32 bytes)
  5. bNumInterfaces : 0x01 (1 Interface)
  6. bConfigurationValue : 0x01 (Configuration 1)
  7. iConfiguration : 0x00 (No String Descriptor)
  8. bmAttributes : 0x80
  9. D7: Reserved, set 1 : 0x01
  10. D6: Self Powered : 0x00 (no)
  11. D5: Remote Wakeup : 0x00 (no)
  12. D4..0: Reserved, set 0 : 0x00
  13. MaxPower : 0x32 (100 mA)
  14. Data (HexDump) : 09 02 20 00 01 01 00 80 32 09 04 00 00 02 08 06 .. .....2.......
  15. 50 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 P...............

Interface Descriptors

The BOT mass storage device type is defined in the interface descriptor, so it needs to be filled in as required.

FieldValueInstruction
bInterfaceClass0x08MASS Storage Class
bInterfaceSubClass0x06Indicates a SCSI command set
bInterfaceProtocol0x50BULK-ONLY TRANSPORT

Set of commands supported by bInterfaceSubClass

SubClass CodeCommand Block SpecificationComment
00hSCSI command set not reportedDe facto use
01hReduced Block Commands (RBC) T10 Project 1240-DDefined outside of USB
02hMMC-5 (ATAPI)Defined outside of USB
03hObsoleteWas SSF-8070i
04hUSB Floppy Interface (UFI)Specifies how to interface Floppy Disk Drives to USB
05hObsoleteWas QIC-157
06hSCSI transparent command setDefined outside of USB
07hLockable Mass StorageLSDFS specifies how host has to negotiate access before trying SCSI.
08hIEEE 1667Defined outside of USB
09h – FEhReservedReserved
FFhSpecific to device vendorDe facto use

BInterfaceProtocol Indicates the supported protocol

bInterfaceProtocolProtocol ImplementationComment
00hControl/Bulk/Interrupt protocol
(with command completion interrupt)
USB Mass Storage Class
Control/Bulk/Interrupt (CBI) Transport
01hControl/Bulk/Interrupt protocol
(with no command completion interrupt)
USB Mass Storage Class
Control/Bulk/Interrupt (CBI) Transport
02hObsolete
03h – 4FhReservedReserved
50hBulk-Only Transport (BBB)USB Mass Storage Class Bulk-Only Transport
51h – FEhReservedReserved
FFhSpecific to device vendorDe facto use
  1. ---------------- Interface Descriptor -----------------
  2. bLength : 0x09 (9 bytes)
  3. bDescriptorType : 0x04 (Interface Descriptor)
  4. bInterfaceNumber : 0x00
  5. bAlternateSetting : 0x00
  6. bNumEndpoints : 0x02 (2 Endpoints)
  7. bInterfaceClass : 0x08 (Mass Storage)
  8. bInterfaceSubClass : 0x06 (SCSI transparent command set)
  9. bInterfaceProtocol : 0x50 (Bulk-Only Transport)
  10. iInterface : 0x00 (No String Descriptor)
  11. Data (HexDump) : 09 04 00 00 02 08 06 50 00 .......P.

Endpoint Descriptors

  1. ----------------- Endpoint Descriptor -----------------
  2. bLength : 0x07 (7 bytes)
  3. bDescriptorType : 0x05 (Endpoint Descriptor)
  4. bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
  5. bmAttributes : 0x02 (TransferType=Bulk)
  6. wMaxPacketSize : 0x0200 (max 512 bytes)
  7. bInterval : 0x00 (never NAKs)
  8. Data (HexDump) : 07 05 81 02 00 02 00 .......
  9. ----------------- Endpoint Descriptor -----------------
  10. bLength : 0x07 (7 bytes)
  11. bDescriptorType : 0x05 (Endpoint Descriptor)
  12. bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
  13. bmAttributes : 0x02 (TransferType=Bulk)
  14. wMaxPacketSize : 0x0200 (max 512 bytes)
  15. bInterval : 0x00 (never NAKs)
  16. Data (HexDump) : 07 05 02 02 00 02 00

String Descriptors

The string descriptor can be customized except that the device serial number has special requirements.

  1. ------ String Descriptor 0 ------
  2. bLength : 0x04 (4 bytes)
  3. bDescriptorType : 0x03 (String Descriptor)
  4. Language ID[0] : 0x0409 (English - United States)
  5. Data (HexDump) : 04 03 09 04 ....
  6. ------ String Descriptor 1 ------
  7. bLength : 0x12 (18 bytes)
  8. bDescriptorType : 0x03 (String Descriptor)
  9. Language 0x0409 : "DiskMFR"
  10. Data (HexDump) : 12 03 4B 00 69 00 6E 00 67 00 73 00 74 00 6F 00 ..D.i.s.k.M.F.R.
  11. 6E 00 n.
  12. ------ String Descriptor 2 ------
  13. bLength : 0x22 (34 bytes)
  14. bDescriptorType : 0x03 (String Descriptor)
  15. Language 0x0409 : "DiskMFR 2.0"
  16. Data (HexDump) : 22 03 44 00 61 00 74 00 61 00 54 00 72 00 61 00 ".D.i.s.k.M.F.R.
  17. 76 00 65 00 6C 00 65 00 72 00 20 00 32 00 2E 00 v.e.l.e.r. .2...
  18. 30 00 0.
  19. ------ String Descriptor 3 ------
  20. bLength : 0x32 (50 bytes)
  21. bDescriptorType : 0x03 (String Descriptor)
  22. Language 0x0409 : "1C6F654E48EB1FC1391B7D69"
  23. Data (HexDump) : 32 03 31 00 43 00 36 00 46 00 36 00 35 00 34 00 2.1.C.6.F.6.5.4.
  24. 45 00 34 00 38 00 45 00 42 00 31 00 46 00 43 00 E.4.8.E.B.1.F.C.
  25. 31 00 33 00 39 00 31 00 42 00 37 00 44 00 36 00 1.3.9.1.B.7.D.6.
  26. 39 00
DiskMFR Field Sales Manager - Leo

It’s Leo Zhi. He was born on August 1987. Major in Electronic Engineering & Business English, He is an Enthusiastic professional, a responsible person, and computer hardware & software literate. Proficient in NAND flash products for more than 10 years, critical thinking skills, outstanding leadership, excellent Teamwork, and interpersonal skills.  Understanding customer technical queries and issues, providing initial analysis and solutions. If you have any queries, Please feel free to let me know, Thanks

DiskMFR Free Sample Application
  • Still worried about storage product quality?
  • Current suppliers can’t provide perfect after-sales service

  • Get our free sample for testing now

Leave a Reply

Your email address will not be published. Required fields are marked *

twenty + 13 =

Please let us know what you require, and you will get our reply within 24 hours.

  • Our team will answer your inquiries within 24 hours.
  • Your information will be kept strictly confidential.

Let's Have A Chat

Learn How We Served 100+ Global Device Brands with our Products & Get Free Sample!!!

Email Popup Background 2