USB mass storage device class
The USB mass storage device class is a set of computing communications protocols defined by the USB Implementers Forum that run on the Universal Serial Bus. The standard provides an interface to a variety of storage devices.
Some of the devices which are connected to computers via this standard are:
- external magnetic hard drives
- external optical drives, including CD and DVD reader and writer drives
- portable flash memory devices, particularly keydrives
- adapters bridging between standard flash memory cards and a USB connection
- digital cameras
- digital audio players (MP3 players)
- high-end media players (such as the iPod and Creative Nomad MuVO series)
Table of contents |
Operating system support
As of 2004, most current main-stream operating systems include support for USB mass storage devices, although support on older systems is patchier.
Microsoft's Windows 95 OSR2 and Windows 98 operating systems featured very limited support for USB in general, and no generic USB mass storage driver was produced. This meant that a device-specific driver was needed for each type of USB storage device the installation encountered. This situation was (almost) remediated with the later Windows Me and Windows 2000 products (where a specific driver was required only for very unusual mass storage devices) and essentially removed for the later Windows XP and Windows Server 2003 systems.
There is no support for USB in Windows NT, MS-DOS or earlier versions of Windows (which have MS-DOS as their bedrock), although some non-commercial projects are working toward adding it.
Apple Computer's Mac OS supports USB mass storage by means of optional drivers from version 8.6, and Version 9 and OS X support USB, and USB mass storage, natively.
Support in the Linux kernel began in kernel version 2.4, although 2.2 has been back-patched to support it.
NetBSD supports UMASS storage devices as well since the 1.5 release and up.
Complications of the mass-storage device class
The mass storage interface is an attractive option for many devices, such as cameras and media players, which are nonetheless capable of more functionality than being simple data repositories. By presenting themselves as simple datastores, these devices can leverage the high degree of support for the USB mass-storage device class in current operating systems' USB driver stacks and allow easy read and write access to their internal memories. The downside of doing so is that it prevents the device from easily presenting its actual functional behaviour across the USB interface too. For example, the makers of a digital still camera would also like it to implement the USB still-picture device class, allowing it to be controlled by image capture software.
In theory a given USB device can implement any number of USB device-class interfaces simultaneously, becoming what the USB specification calls a "compound device". Being a compound device necessitates the device implement the internal functionality of a USB hub as well as two (or more) specific device interfaces. In practice this has proven to be too much of an overhead for resource and cost constrained embedded device controllers. Some USB digital cameras feature a switch allowing them to appear either as a mass-storage device or as a still-picture device, but they cannot be both at the same time. It is likely that as development of USB controller chips advances this constraint will evaporate.
USB mass storage rationale
The USB mass storage rationale is an interpretation of how the USB mass storage device class should be properly implemented in devices and operating systems. This rationale was a merely verbal tradition first made available in writing and from a neutral point of view by Wikipedia, where Wikipedia was used as a sandbox by the developers of the rationale.
The heart of that discussion concerned the USB operation and speed characteristics for USB mass storage device class compliant devices. It turns out that different name spaces defined by the USB standard can be used to signify different transfer modes known as BBB, CBI and CB. The BBB, CBI, and CB acronyms refer to the USB "transfer types" chosen on the USB pipes (endpoints) to transport the command, data, and status that make up each mass storage transaction (read, write, or other). B is for bulk transfer, C is for control transfer and I is for interrupt transfer.
Specifically in practice, choosing BBB raised max theoretical thruput to 19 * 64 = 1216 bytes/ms, up maybe 5X from the floppy-like maximums seen with CBI/CB.
External links
- Mass Storage device class specification – on the site of the USB Implementers Forum.
- Bootability specification Mass Storage bootability specification – describes how bootable USB Mass Storage devices should work.
- "USB Mass Storage BOT" is a link that often rots, lately found buried at "USB" -> Developers -> Documents -> Class Specs -> Approved -> Mass Storage -> "Mass Storage Bulk Only 1.0".
- "MSFT USB Storage FAQ"
Categories: USB | Computer storage devices