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
VirtualMSD
The Mass Storage Device class (MSD) is used to get access to external storage media such as USB-sticks, external hard disk drives and memory card readers.
Cross platform, driverless file transfer, virtual file system
Application samples for emUSB-Device VirtualMSD
Smart watch
J-Link OB
CDC-NCM
Ethernet via USB
emUSB-Device CDC-NCM enables a USB device to act as a virtual network adapter. This can be used to run TCP/IP-based applications over USB.
Application samples for emUSB-Device CDC-NCM
USB to Ethernet Adapter
Router/Gateway
IP-over-USB
Cross platform, driverless Ethernet via USB
Easily run any IP-based protocol over USB. Simple and driverless! Plug-and-play on any operating system. Use a web browser to look into and configure the USB device.
Application samples for emUSB-Device IP-over-USB
Printer
Headphone
CCID
CCID class
SEGGER's emUSB-Device Chip Card Interface Device (CCID) Class allows to create any CCID compatible USB device, including smart card readers (either contact based or contactless) or authentication tokens (Dongles).
Application samples for emUSB-Device CCID
Card reader
NFC card reader
RFID card reader
MIDI
Musical Instrument Digital Interface
The USB class protocol for MIDI is used to interact with music devices and studio equipment, such as MIDI controllers, sequencers, drum machines, samplers, effects units, synthesizers, instruments, lighting and recording equipment.
Application samples for emUSB-Device MIDI
Synthesizer
Controller
Effects Unit
DFU
Device Firmware Upgrade
Easily upgrade the firmware of your devices via a standard USB protocol.
Application samples for emUSB-Device DFU
Fax
Camera
Router/Gateway
Smart watch
Printer
CDC-ECM
Ethernet via USB
emUSB-Device CDC-ECM enables a USB device to act as a virtual network adapter. This can be used to run TCP/IP-based applications over USB.
Application samples for emUSB-Device CDC-ECM
USB to Ethernet Adapter
Router/Gateway
RNDIS
Ethernet via USB
emUSB-Device RNDIS allows a USB device to act as a virtual network adapter. This can be used to run any TCP/IP based application via USB. The most noteworthy application is a USB based webserver.
Application samples for emUSB-Device RNDIS
USB to Ethernet Adapter
Router/Gateway
Video
USB Video Device class
UVC 1.1 support. Transmit video data to any host. Expand your embedded device with video capabilities.
Application samples for emUSB-Device Video
Camera
Webcam
Audio
USB Audio Device class
Easily transmit audio via USB. Record or replay audio received from the host, send recorded audio to the host. Simple and driverless! Plug-and-play on any operating system.
Application samples for emUSB-Device Audio
Conference speakerphone
Headset
USB sound card
Printer
Printer class
The USB class protocol for printers is used for the handling of output devices, like printers and plotters.
Application samples for emUSB-Device Printer class
Printer
HID
Human Interface Device class.
The Human Interface Device class (HID) is an abstract USB class protocol defined by the USB Implementers Forum.
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
CDC
Communication Device Class
The USB Communications Device Class (CDC) allows to convert the USB device into a serial communication device.
Application samples for emUSB-Device CDC
Modem
Fax
Measurement Device
POS-Terminal
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
Mass Storage Device class
emUSB-Device MSD enables the use of an embedded target device as a USB mass storage device. The target device can be simply plugged-in and used like an ordinary disk drive, without the need to develop a driver for the host operating system.
Application samples for emUSB-Device MSD
Memory Stick
Camera
Mp3 player
DVD player
Bulk
Bulk component
The emUSB-Device Bulk component allows developers to quickly and painlessly develop software for an embedded device that communicates with a PC via USB.
Application samples for emUSB-Device Bulk
SEGGER Debug Probe J-Link
Temperature Logger
Software Protection Dongle
Media gallery
emUSB-Device — Intro | 6:13 min
emUSB-Device Audio — Intro | 4:06 min
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.