EmbeddedRelated.com
Books
The 2026 Embedded Online Conference

USB: The Universal Serial Bus

Lunt, Benjamin David 2018

Have you ever wondered how to use the USB hardware to send and receive data from an attached device? Wondered how to detect and initialize the controller, retrieve the device's descriptors, configure the device, and then communicate with it to send or retrieve its data? This book explains the ins and outs of the four major controllers, starting with the UHCI, OHCI, EHCI, and then the new Super Speed xHCI Controller. It explains in detail how to communicate with the various devices such as HID mice and keyboards, mass storage devices, including UASP devices, printers, and other USB devices. If you are interested in working with bare hardware to communicate with the USB, with no operating system to get in the way, you don't need to look any further. This book does not need to be on the shelf every USB enthusiast, it needs to be right on the desk. Third Edition -- 20180420


Why Read This Book

You will get a hands‑on, controller‑level tour of USB that teaches you how to detect, initialize, and drive real UHCI/OHCI/EHCI/xHCI controllers and the devices attached to them. The book's strength is its low‑level, bare‑metal focus — you learn how enumeration, descriptors, endpoints, transfers, and class protocols actually map to registers and bus transactions so you can implement or debug firmware with no OS in the way.

Who Will Benefit

Embedded firmware engineers and systems programmers with some hardware and C experience who need to implement or debug USB host/device support on bare metal or tight RTOS environments.

Level: Advanced — Prerequisites: Solid C programming skills, basic digital electronics, familiarity with microcontroller/SoC bus concepts (PCI/AMBA), and comfort reading hardware datasheets and register maps.

Get This Book

Key Takeaways

  • Initialize and program UHCI, OHCI, EHCI, and xHCI host controllers at the register level to enumerate and manage USB devices.
  • Parse and use USB descriptors to configure devices and set up control, bulk, interrupt, and isochronous transfers.
  • Implement class‑level communication for HID, mass storage (including UASP), printers, and other common USB device types on bare metal.
  • Design endpoint handling, transfer scheduling, and error/recovery strategies for reliable USB communication without an OS.
  • Use hardware and software tools (logic analyzers, USB protocol analyzers, linux usbmon/libusb) to trace, debug, and validate USB transactions.

Topics Covered

  1. 1. USB Overview and History
  2. 2. Physical Layer, Signaling, and Electrical Considerations
  3. 3. USB Protocol Basics: Packets, Frames, and Transfer Types
  4. 4. Descriptors, Enumeration, and Configuration
  5. 5. UHCI and OHCI Host Controller Architectures
  6. 6. EHCI: High Speed USB 2.0 Host Controller
  7. 7. xHCI: SuperSpeed and Unified Controller Model
  8. 8. USB Device Classes: HID, Mass Storage (UASP), Printers, CDC, etc.
  9. 9. Endpoint, Transfer Scheduling, and Bandwidth Management
  10. 10. Power, Suspend/Resume, and Hot‑Plug Considerations
  11. 11. Bare‑Metal Implementation Strategies and Examples
  12. 12. Debugging, Test Tools, and Compliance Tips
  13. Appendices: Register Maps, Timing Diagrams, Sample Descriptor Dumps

Languages, Platforms & Tools

CAssemblyx86/PCI host controllersARM Cortex‑M / ARM SoCsGeneric microcontrollers (bare‑metal)SoC host controllers (EHCI/xHCI variants)libusb / linux usbmon / lsusbWireshark (USBPcap)Hardware USB protocol analyzers (Total Phase, Ellisys)Logic analyzers and oscilloscopesGCC toolchain, vendor toolchains (Keil/IAR) for firmware

How It Compares

Compared to Jan Axelson's "USB Complete," this title goes deeper into host controller internals (UHCI/OHCI/EHCI/xHCI) and bare‑metal register programming rather than high‑level device examples.

Related Books

Bryant, Randal, O'Hallaron,...
The 2026 Embedded Online Conference