ADVENT #21 — thumb drive

A graphic with the names of the media featured in this series
Day 21: USB Thumb Drive

The media in this series haven’t been presented in chronological order, in part because the provenance and chronology can be hard to nail down. So it is with the thumb drive. It’s not that nobody claims to know who invented it but that so many do. The best inventions seem obvious in retrospect — this one always seemed obvious.

The claims for the earliest thumb drive mostly seem compressed into the 1999/2000 timeframe, probably because USB wasn’t widely supported by PCs until the release of Windows 98 SE. SE sounds like a low-frill trim level in a basic four-door family operating system but it stood for Second Edition. It was released late in the second edition of 1998, which we called 1999 at the time. This operating system supported USB in the sense that it furnished a driver for the most common USB Host Controller Interface, a couple of drivers for keyboards and mice, and a framework for OEMs to add their own drivers. So it supported hard drives in the sense that a manufacturer could have supplied a driver for a hard drive using the defined class for mass storage devices or any other protocol the manufacturer wished.

About a year after that, Microsoft released the third, and final, version of Windows 98. Millennium fever abounded and so Microsoft called it Windows ‘Millenium Edition’. This was a totally different product than Windows 2000. Windows ME included support out-of-the-box for devices implementing the mass storage protocol. This was the first time that it made sense to ship a low-cost device like a thumb drive without having to furnish a driver, especially important for a device used as a floppy replacement to move data between computers.

So what‘s so complicated about the USB mass storage protocol that it took Microsoft years to support it? Absolutely nothing. In many ways it’s simpler than the interface CompactFlash cards had already been using for drop-in PC compatibility.

In practice, USB thumb drives were implemented with a microcontroller that furnished a USB serial engine and enough I/O pins to connect to an off-the-shelf flash chip. Many early controllers were based on an 8051 and could be made to run other programs if gently poked. Oddly, thumb drives were sometimes the cheapest available development boards for those USB controllers. I used a Keyspan USB to serial converter as my USB prototyping board for several years.

The floodgates soon opened for devices that could expose an array of non-traditional interfaces through Microsoft’s new class drivers, just as the FlashPath smart media converters and QIC tape streamers had taken advantage of the standardization of the floppy disk interface years earlier. Many devices implemented little read-only thumb drives to supply a few files necessary to use the device.

Microsoft eventually let themselves into the joke and created the UF2 file format specification for file-based microcontroller firmware update. You may already own a usb device — a keyboard, printer, arduino, or even a thumb drive that accepts new firmware this way.

We joke about computer scientists layering abstraction upon abstraction to solve problems in an ever more general way but abstraction is usually the misdirection of a 3-card monte hustler. I mean, it could really be n-ary monte so long as n is greater than one because, no wait, how does he think he’s going to fool me with just one card? Ok, I’d put five bucks on that just to see it unfold and .. where’s my wallet?

Subscribe to Paper Tiger

Sign up now to get access to the library of members-only issues.
Jamie Larson
Subscribe