Embedded USB

Host, Device, OTG & Extensive Class Support

USBX Host/Device embedded USB protocol stack is Express Logic’s Industrial Grade embedded USB solution designed specifically for deeply embedded, real-time, and IoT applications. USBX provides host, device, and OTG support, as well as extensive class support. USBX is fully integrated with THREADX Real-Time Operating System, FileX® embedded FAT-compatible file system, NetX™ and NetX Duo™ embedded TCP/IP stacks. All of this, combined with an extremely small footprint, fast execution and superior ease-of-use, make USBX the ideal choice for the most demanding embedded IoT applications requiring USB connectivity.


USBX has a remarkably small minimal footprint of 10.5KB of FLASH and 5.1KB RAM for USBX Device CDC/ACM support. USBX Host requires a minimum of 18KB of FLASH and 25KB of RAM for CDC/ACM support.

An additional 10KB to 13KB of instruction area memory is needed for TCP functionality. USBX RAM usage typically ranges from 2.6KB to 3.6KB plus the packet pool memory, which is defined by the application.

Like THREADX, the size of USBX automatically scales based on the services actually used by the application. This virtually eliminates the need for complicated configuration and build parameters, making things easier for the developer.

Fast execution

USBX is designed for speed and has minimal internal function call layering and support for cache and DMA utilization.

All of this and a general performance oriented design philosophy helps USBX achieve the fastest possible performance.

Simple, easy-to-use

USBX is very simple to use. The USBX API is both intuitive and highly functional. The API

names are made of real words and not the “alphabet soup” or highly abbreviated names that are so common in other file system products. All USBX APIs have a leading ux_ and follow a noun-verb naming convention. Furthermore, there is a functional consistency throughout the API. For example, all APIs that suspend have an optional timeout that functions in an identical manner for APIs.

USB Interoperability verification

USBX Device Stack has been rigorously tested with the USB IF standard testing tool USBCV to ensure full compliance with the USB specifications and interoperability with different host systems.

In addition, USBX OTG stack has been verified and certified by the independent test lab Allion in Taiwan.

USB Host controller support

USBX supports major USB standards like OHCI and EHCI. In addition, USBX supports proprietary discrete USB host controllers

from Atmel, Microchip, Philips, Renesas, ST, TI and other vendors. USBX also supports multiple host controllers in the same application.

USB Device controller support

USBX supports popular USB device controllers from Analog Devices, Atmel, Microchip, NXP, Philips,

Renesas, ST, TI and other vendors.

Extensive Host Class support

USBX Host provides support for most popular classes, including ASIX, AUDIO, CDC/ACM, CDC/ECM, GSER,

HID (keyboard, mouse, and remote control), HUB, PIMA (PTP/MTP), PRINTER, PROLIFIC, and STORAGE.

Extensive USB Device Class support

USBX Device provides support for most popular classes, including CDC/ACM, CDC/ECM, DFU, HID, PIMA (PTP/MTP)

(w/MTP), RNDIS, and STORAGE. Support for custom classes is also available.

Pictbridge support

USBX supports the full Pictbridge implementation both on the host and the device. Pictbridge sits on top

of USBX PIMA (PTP/MTP) class on both sides. The PictBridge standard allows the connection of a digital still camera or a smart phone directly to a printer without a PC, enabling direct printing to certain Pictbridge aware printers. When a camera or phone is connected to a printer, the printer is the USB host and the camera is the USB device. However, with Pictbridge, the camera will appear as being the host and commands are driven from the camera. The camera is the storage server, the printer the storage client. The camera is the print client and the printer is of course the print server. Pictbridge uses USB as a transport layer but relies on PTP (Picture Transfer Protocol) for the communication protocol.

Custom class support

USBX Host and Device support custom classes. An example custom class is provided in the USBX distribution.

This simple data pump class is called DPUMP and can be used as a model for custom application classes.

Advanced technology

USBX Host and Device support custom classes. An example custom class is provided in the USBX distribution.

USBX is advanced technology that includes:

  • Host, Device and OTG support
  • USB low, full, and high-speed support
  • Automatic scaling
  • Fully integrated with THREADX, FILEX, and NETX
  • Optional performance metrics
  • TRACEX system analysis support

Fastest time-to-market

USBX has a remarkably small footprint of 9KB to 15KB for basic IP and UDP support.

USBX is easy to install, learn, use, debug, verify, certify and maintain. As a result, USBX is one of the most popular USB solutions for embedded IoT devices.

Our consistent time-to-market advantage is built on:

  • quality documentation – please review our USBX Host and Device User Guides and see for yourself!
  • complete source code availability
  • easy-to-use API
  • comprehensive and advanced feature set

Royalty free

USBX is licensed royalty-free, for the lowest possible manufacturing cost. There are five basic types

of licenses as well as the option of creating a custom license for unique situations. Please see the licensing page for more information.

Full, highest quality source code

From the very beginning, USBX was designed to be an Industrial Grade USB Host/Device solution distributed with full C source code.

Throughout the years, USBX source code has set the bar in quality and ease of understanding. In addition, the convention of having one function per file provides for easy source navigation. The following is an example of the USBX Host ux_host_stack_class_get.c function:

Supports most popular architectures

USBX runs on most popular 32/64-bit microprocessors, out-of-the-box, fully tested and fully supported, including the following:
  • Analog Devices: SHARC, Blackfin, CM4xx
  • Andes Core: RISC-V
  • Ambiqmicro: Apollo MCUs
  • ARM: ARM7, ARM9, ARM11, Cortex-M0/M3/M4/M7/A15/A5/A7/A8/A9/A5x 64-bi/A7x 64-bit/R4/R5, TrustZone ARMv8-M
  • Cadence: Xtensa, Diamond
  • CEVA: PSoC, PSoC 4, PSoC 5, PSoC 6, FM0+, FM3, MF4, WICED WiFi
  • Cypress: RISC-V
  • EnSilica: eSi-RISC
  • Infineon: XMC1000, XMC4000, TriCore
  • Intel & Intel FPGA: x36/Pentium, XScale, NIOS II, Cyclone, Arria 10
  • Microchip: AVR32, ARM7, ARM9, Cortex-M3/M4/M7, SAM3/4/7/9/A/C/D/E/G/L/SV, PIC24/PIC32
  • Microsemi: RISC-V
  • NXP: LPC, ARM7, ARM9, PowerPC, 68K, i.MX, ColdFire, Kinetis Cortex-M3/M4
  • Renesas: SH, HS, V850, RX, RZ, Synergy
  • Silicon Labs: EFM32
  • Synopsys: ARC 600, 700, ARC EM, ARC HS
  • ST: STM32, ARM7, ARM9, Cortex-M3/M4/M7
  • Tl: C5xxx, C6xxx, Stellaris, Sitara, Tiva-C
  • Wave Computing: MIPS32 4K, 24K, 34K, 1004K, MIPS64 5K, microAptiv, interAptiv, proAptiv, M-Class
  • Xilinx: MicroBlaze, PowerPC 405, ZYNQ, ZYNQ UltraSCALE
** Please note that all timing and size figures listed are estimates and may be different on your development platform

Subscribe to our news