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.
Overview
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.
Key features
- 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
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.
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.
Component | Description | emUSB-Device BASE | emUSB-Device PRO |
---|---|---|---|
Ethernet communication | |||
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) | ||
Mass storage | |||
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) | ||
Serial communication | |||
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 | ||
Multi media | |||
emUSB-Device Audio | Easily handle audio data. | ||
emUSB-Device Video | USB Video Class implementation. | ||
emUSB-Device MIDI | Musical Instrument Digital Interface class. | ||
Other | |||
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 | ||
Core layer | |||
emUSB-Device Core | The emUSB-Device core is the intrinsic USB stack. | ||
Hardware layer | |||
Driver | USB controller driver. |
Included One item included Optional
CCID
Application samples for emUSB-Device CCID

Card reader

NFC card reader

RFID card reader
MIDI
Application samples for emUSB-Device MIDI

Synthesizer

Controller

Effects Unit
HID
Application samples for emUSB-Device HID

Keyboard & Mouse

Barcode Scanner

Touch Screen

Joystick

Fingerprint Sensor

RFID Reader

3D Mouse

Trackball

Uninterruptible Power Supply

Weighing Scale
MTP
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

Smartphone

Camera

Mp3 player
MSD
Application samples for emUSB-Device MSD

Memory Stick

Camera

Mp3 player

DVD player
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.
Licensing
emUSB-Device is available under various Embedded Software License models and delivered in source code packages. With a wide range of licensing options, emUSB-Devic can fulfill commercial requirements as well as technical requirements. All licenses are one-time payments. emUSB-Devic is royalty-free and not subscription-based. This makes the software a part of the equipment expenses, keeping the costs static.
* Applies to second seat/product and all additional seats/products of the Single Product License and Single Developer License.