Skip navigation

emUSB-Device — High performance USB-Device software

  • Cross platform works with Linux, Mac, Windows, and other hosts
  • Direct support from the USB product developers
  • Uniform API for all supported controllers
  • Easy to use API and documentation
  • Small memory footprint

emUSB-Device is a high performance USB device stack specifically designed for embedded systems. The software is written in ANSI C and can run on any platform. A variety of target drivers are already available. Support for new platforms can usually be added at no extra charge. 

Versatile USB device stack

emUSB-Device enables easy integration of USB functionality into an embedded system. Multiple standard classes are provided that allow embedded systems to behave as standard USB devices and communicate with any host like Windows, Linux and Mac systems. Examples are mass storage device, keyboard, mouse, printer, speaker, modem, RS232 serial adapter or network adapter. Additionally proprietary protocols may be implemented using the BULK class provided by emUSB-Device.

Multiple classes may be combined in any way to form a Composite Device with multiple interfaces that can be used simultaneously.


Cross platform, driverless Ethernet via USB.


Ethernet via USB.


Ethernet via USB.


Bulk component.


Cross platform, driverless file transfer, virtual file system.


Mass Storage Device class.


Media Transfer Protocol.


Communications Device Class.


Human Interface Device class.


Printer class.


USB Audio Device class.

Target emUSB-Device Components

emUSB-Device Consists of Three Layers. These layers are a driver for hardware access, the emUSB-Device core, and at least one USB class driver or the bulk communication component. USB class drivers (MSD, CDC, HID, MTP, RNDIS, IP), Bulk communication component and SmartMSD component can be combined in any way to suit the requirements of any target USB-Device.

Component Description
Ethernet communication
emUSB-Device IPCross platform IP over USB communication
(contains emUSB-RNDIS and emUSB-ECM)
emUSB-Device RNDISEthernet over USB communication using Remote NDIS protocol
emUSB-Device ECMEthernet over USB communication using Communication Device Class
/ Ethernet Control Model protocol (CDC-ECM)
Mass storage
emUSB-Device SmartMSDVirtual mass storage device (contains emUSB-MSD)
emUSB-Device MSDMass Storage Device class
emUSB-Device MTPMass storage using Media Transfer Protocol (MTP)
Serial communication
emUSB-Device CDCSerial communication over USB using Communication Device Class /
Abstract Control Model protocol (CDC-ACM), typically RS-232 emulation
emUSB-Device HIDHuman Interface Device Class (HID) component
(e.g. Mouse and Keyboard)
emUSB-Device PrinterPrinter protocol class
Other communication
emUSB-Device BulkEasy and fast USB communication without any protocol overhead
emUSB-Device AudioEasily handle audio data.
Core layer
emUSB-Device CoreThe emUSB-Device core is the intrinsic USB stack.
Hardware layer
DriverUSB controller driver.

emUSB-Device Drivers

SEGGER provide support for an extensive range of MCUs with on-chip USB controllers. The driver interface has been designed in such a way that it should be possible to use the most common USB device controllers and easily add drivers for USB controllers that are not yet supported.

Buyer's Guide

USB class drivers and hardware drivers are separate packages, which can be combined and ordered individually to suit the requirements of any project. SEGGER recommends to purchase emUSB-Device as a complete package by selecting the emUSB-Device PRO package. It includes support for the most common use cases, such as human interface devices for user interaction, file storage and transfer and serial communication support. The following table shows, which modules are part of the PRO package and which are optionally available.


One item included