Skip navigation
 180125-stamp-free-for-white.svg

emUSB-Device—The World Leading USB-Device Stack

  • 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
  • No hardware dependencies

emUSB-Device—High Performance USB Device Stack

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 does not contain any hardware dependencies. These are encapsulated through a hardware abstraction layer, which consists of interface functions. All of these functions for a particular USB controller are typically located in a single file, the USB driver. Multiple standard classes are supported.

IP-over-USB

Cross platform, driverless Ethernet via USB.

CDC-ECM

Ethernet via USB.

RNDIS

Ethernet via USB.

Bulk

Bulk component.

SmartMSD

Cross platform, driverless file transfer, virtual file system.

MSD

Mass Storage Device class.

MTP

Media Transfer Protocol.

CDC-ACM

Communications Device Class.

HID

Human Interface Device class.

Printer

Printer class.

Target emUSB-Device Components

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
Simple communication
emUSB-Device BulkEasy and fast USB communication without any protocol overhead
Core layer
emUSB-Device CoreThe emUSB-Device core is the intrinsic USB stack.
Hardware layer
DriverUSB controller driver.

emUSB-Device Layers

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), Bulk communication component, SmartMSD component and hardware drivers are separate packages, which can be combined and ordered individually to suit the requirements of any project.

Included

One item included

Optional

Supported Devices

The interface has been designed in such a way that it should be possible to use the most common USB device controllers. This includes USB 1.1 controllers and USB 2.0 controllers, both as external chips and as part of microcontrollers.

The following device drivers are available for emUSB-Device

Driver (Device) Part #
Atmel
AT91CAP9 9.10.19
AT91RM9200 9.10.06
AT91SAM3S 9.10.64
AT91SAM3U 9.10.30
AT91SAM3X 9.10.62
AT91SAM4S 9.10.64
AT91SAM7A3 9.10.07
AT91SAM7S 9.10.08
AT91SAM7SE 9.10.09
AT91SAM7X 9.10.10
AT91SAM9260 9.10.22
AT91SAM9261 9.10.11
AT91SAM9263 9.10.25
AT91SAM9G20 9.10.31
AT91SAM9G45 9.10.41
AT91SAM9Rx64 9.10.18
AT91SAM9x25 9.10.75
AT91SAM9XE 9.10.32
AVR32UC 9.10.40
SAMA5D2x
SAMA5D3x
SAMA5D4x
9.10.70
SAMV7x 9.10.83
Cypress Semiconductor
MB9BF5xx,MB9BF6xx 9.10.49
Infineon
XMC45xx 9.10.82
Maxim
MAX32590 9.10.74
Microchip
PIC32MX 9.10.79
NXP
LPC13xx
(LPC1342, LPC1343)
9.10.33
LPC17xx 9.10.29
LPC18xx 9.10.60
LPC214x 9.10.02
LPC23xx 9.10.03
LPC24xx 9.10.14
LPC288x 9.10.51
LPC318x 9.10.04
LPC313x 9.10.38
LPC3250 9.10.04
LPC43xx (except LPC431x) 9.10.61
Kinetis KHCI 9.10.42
Kinetis K60/K70 Highspeed 9.10.58
iMX25x 9.10.44
iMX28x 9.10.45
MCF227x 9.10.46
MCF225x 9.10.47
MCF51JMx 9.10.48
P1020 9.10.66
Vybrid 9.10.65
OKI
69Q62 9.10.05
Renesas
H8S2472 9.10.20
H8SX1668R 9.10.21
K78F102x 9.10.50
R7FS7G2x 9.10.39
RX111 9.10.39
RX62N 9.10.39
RX621 9.10.39
RX63N 9.10.39
RX631 9.10.39
RX64M 9.10.39
RX65 9.10.39
RX71M (USB FS Controller) 9.10.39
RZ 9.10.73
SH7203 9.10.28
SH7216 9.10.53
SH7268/9 9.10.59
SH726A 9.10.78
SH7286 9.10.54
uPD720150 9.10.23
V850ES/JG3-E/U/H 9.10.26
V850ES/JH3-E/U/H 9.10.26
Synergy USB FS Controller (S1, S3, S7) 9.10.39
Synergy USB HS Controller (S3, S7) 9.10.73
Sharp
LH79524/5 9.10.01
LH7A40x 9.10.24
SiLabs
EFM32GGxxx 9.10.63
ST
STM32F0xx 9.10.16
STM32F103 9.10.16
STM32F105/107 9.10.34
STM32F2xx 9.10.56

STM32F3xxx:
STM32F302x6, STM32F302x8,
STM32F302xB, STM32F302xC,
STM32F302xD, STM32F302xE

STM32F303x6, STM32F303x8,
STM32F303xB, STM32F303xC,
STM32F303xD, STM32F303xE

STM32F373x8,
STM32F373xB, STM32F373xC

9.10.16
STM32F4xx
(STM32F401, STM32F405,
 STM32F407,
 STM32F415, STM32F417
 STM32F427, STM32F429,
 STM32F437, STM32F439)
9.10.56
STM32F7xx,
STM32H7xx
9.10.56
STM32L1xx 9.10.16
STR71x 9.10.12
STR750 9.10.13
STR91x 9.10.15
TI
LM3S9B9x 9.10.37
MSP430 9.10.36
OMAP-L138 9.10.68
AM335x 9.10.69
TM4Cxx 9.10.71
Toshiba
TMPA900 9.10.35
TMPA910 9.10.17
TMPM369 9.10.57
Xilinx
Zynq 7007S
Zynq 7012S
Zynq 7014S
Zynq 7010
Zynq 7015
Zynq 7020
Zynq 7030
Zynq 7035
Zynq 7045
Zynq 7100
9.10.72