emUSB-Device — High performance USB-Device software
emUSB-Device is a high performance USB device software 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.
- Cross platform works with Linux, Mac, Windows, and other hosts
- Easy to use API and documentation
- Compliant with USB v1.1, USB v2.0 and USB v3.0
- Supports all speeds including Full (12Mb/s), High (480Mb/s) and SuperSpeed (5Gb/s).
- Small memory footprint
- Direct support from the USB product developers
Versatile USB device software for embedded systems
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.
Application samples for emUSB-Device CCID
NFC card reader
RFID card reader
Application samples for emUSB-Device MIDI
Application samples for emUSB-Device HID
Keyboard & Mouse
Uninterruptible Power Supply
Media Transfer Protocol
The Media Transfer Protocol (MTP) is a USB class protocol which can be used to transfer files to and from storage devices. MTP is an official extension of the Picture Transfer Protocol (PTP) designed to allow digital cameras to exchange image files with a computer. MTP extends this by adding support for all types of files.
Application samples for emUSB-Device MTP
Application samples for emUSB-Device MSD
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, MIDI), Bulk communication component and VirtualMSD component can be combined in any way to suit the requirements of any target USB-Device.
|emUSB-Device IP|| Cross platform IP over USB communication|
(contains emUSB-RNDIS and emUSB-ECM)
|emUSB-Device RNDIS||Ethernet over USB communication using Remote NDIS protocol|
|emUSB-Device ECM|| Ethernet over USB communication using Communication Device Class|
/ Ethernet Control Model protocol (CDC-ECM)
|emUSB-Device NCM|| Ethernet over USB communication using Communication Device Class|
/ Network Control Model protocol (CDC-NCM)
|emUSB-Device VirtualMSD||Virtual mass storage device (contains emUSB-MSD)|
|emUSB-Device MSD||Mass Storage Device class|
|emUSB-Device MTP||Mass storage using Media Transfer Protocol (MTP)|
|emUSB-Device CDC|| Serial communication over USB using Communication Device Class /|
Abstract Control Model protocol (CDC-ACM), typically RS-232 emulation
|emUSB-Device HID|| Human Interface Device Class (HID) component|
(e.g. Mouse and Keyboard)
|emUSB-Device Printer||Printer protocol class|
|emUSB-Device Audio||Easily handle audio data.|
|emUSB-Device Video||USB Video Class implementation.|
|emUSB-Device MIDI||Musical Instrument Digital Interface class.|
|emUSB-Device Bulk||Easy and fast USB communication without any protocol overhead|
|emUSB-Device DFU||USB Device Firmware Upgrade class implementation|
|emUSB-Device CCID||USB Chip Card Interface Device class|
|emUSB-Device Core||The emUSB-Device core is the intrinsic USB stack.|
|Driver||USB controller driver.|
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.
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