SEGGER's emUSB-Host is a USB host stack specifically designed for embedded systems. It implements full USB host functionality, including external hub support and optionally provides device class drivers. It enables developers to easily add USB host functionality to embedded systems.

The emUSB-Host stack complies with the USB standard specifications as set by the USB Implementors Forum. It supports all transfer modes (control, bulk, interrupt, isochronous) at all speeds. USB pipe management and extended error recovery mechanisms required for reliable operation are implemented internally. Sophisticated test procedures ensure the reliability and quality of the USB host stack.

emUSB-Host's modular design enables applications to either access the USB host programming interface directly or to use APIs exposed by class drivers. 

emUSB-Host can handle multiple devices as well as hubs simultaneously and fully supports hot plugging of devices and hubs. The programming interface supports dynamic device enumeration and identification.


emPower-USB-Host is a low-cost board for applications that require two USB-Host ports in a simple and small design. SEGGER software including emUSB-Host, emLoad and embOS are ready to run on the board.

Accessing the board with a debug probe can be achieved via the 10-pin Cortex-M connector on the board.

  • Low cost: The USB connector and the corresponding components are normally cheaper than alternative communication interfaces.
  • Reliable: The USB protocol contains measures to ensure data integrity. Errors are detected by the sender and data can be retransmitted.
  • Versatile: USB host allows to connect with virtually any other technology. Using a USB host port network connectivity can be added by connecting an Ethernet-over-USB adapter. User input can be added by connecting an external USB display, USB keyboard and USB mouse. Storage capacity can be extended by connecting an MSD stick or hard drive.
  • Fast: Multiple speed modes are provided by the USB protocol to accommodate the application's needs.
  • Expandable: USB hubs can be used to connect multiple devices to a USB host.
  • Easy to use: The end user only has to connect a cable, a USB device is enumerated without the need for user configuration.

SEGGER's USB host stack designed to work on any embedded system with a USB host controller. Bulk communication along with all other transfer modes is supported. All commonly used standard device classes are supported. USB trees with multiple hubs are supported as well.

emUSB-Host consists of three layers. These layers are a driver for hardware access, the emUSB-Host core, and at least one USB protocol layer.

Component Description
USB protocol layer
CDC emUSB-Host Communication Device Class component.
HID emUSB-Host Human Interface Device Class component.
MSD emUSB-Host Mass Storage Device Class component.
Printer emUSB-Host Printer component.
FT232 emUSB-Host FTDI UART component.
MTP emUSB-Host Media Transfer Protocol component.
Vendor emUSB-Host Vendor class component.
LAN emUSB-Host LAN component.
CCID emUSB-Host CCID class component.
MIDI emUSB-Host MIDI class component.
CP210x emUSB-Host CP210x class component.
Core layer
emUSB Core The emUSB-Host core is the intrinsic USB stack
Hardware layer
Driver USB controller driver

• Professional USB-Host stack for embedded systems
• Direct support from the product developers
• Highly portable and uniform API for all supported controllers
• High performance, small memory footprint in RAM and ROM
• Simple to integrate into your embedded environment
• emPower-USB-Host Dual USB platform available