Express Logic – USBX Device, Host & OTG stacks using ThreadX

For more information:

Zvika Almog


USBX is Express Logic’s high-performance USB host, device, and On-The-Go (OTG) embedded stack. It is fully integrated with ThreadX and is available for all ThreadX supported processors. Like ThreadX, USBX is designed to have a small footprint and high-performance, making it ideal for today’s deeply embedded applications that require to interface with USB devices or be connected with a Windows/Apple/Linux desktop over USB.


  • Small-footprint (small as 10KB, automatic scaling)
  • Fast execution
  • Supports all popular processors and tools (see below)
  • Passed USB-IF USBCV Test
  • Passed OTG Protocol Test (OPT)
  • TraceX system analysis support
  • Host, Device, and OTG support
  • Extensive Device Class support: CDC, HID, PIMA, RNDIS, STORAGE
  • Extensive Host Class support: ASIX, AUDIO, CDC, HID, HUB, PIMA, PRINTER, PROLIFIC, STORAGE
  • Full Source Code
  • Royalty-Free

Small Footprint

USBX is implemented as a C library. Only the features used by the application are brought into the final image. The minimal footprint of USBX is under 2KB on Microcontrollers.

Easy To Use

USBX is very easy to use. The USB API is both intuitive and highly functional. In addition, the API names are made of real words and not the “alphabet soup” names that are common to other file system products. Building a USBX application is also easy. Simply include the UX_API.H fill in the application software and link the application objects with the USBX library. The resulting image is ready for execution – it’s that simple!

Major Features

  • Available for host, device, and OTG
  • USB low speed, full speed and high speed are supported
  • Supports all embedded CPUs
  • Supports many USB host/device controllers in discrete or IP form integrated with a SOC including Synopsis, Philips, Atmel, NEC…
  • Supports most of the standard USB class drivers including mass storage, printer, HID, Audio, Hub, RNDIS, Data Pump, PTP, PictBridge, …
  • Can be ported to different CPU and memory architecture.
  • Integrated with Express Logic components (FileX and NetX)

USBX Host mode

USBX in host mode is used when the application requires communication with certain USB devices such as a USB keyboard, a USB printer or USB Flash disk. UBX host is divided in 3 components :

  • The USBX core stack which is responsible for the detection of device insertion and removal as well as all the protocols available to USB (Control, Bulk, Interrupt and Isochronous). The core stack ensures that all device are properly detected and configured and its plug and play mechanism searches for a USB class driver responsible for this device.
  • The USB Controller driver which is specific to a USB host chip or USB host IP. USBX supports major USB standards like OHCI and EHCI in addition to proprietary discrete USB chips from Philips and other vendors. It is possible for a single host system to have multiple host controllers.
  • The USB Class Driver(s) which are responsible for driving each USB device once they have been enumerated. A USB class can either fall into the standard category (such as HID, printer, storage…) or be proprietary to a specific device. USBX host mode can support cascading hubs, multiple configuration devices, composite device…

USBX Device mode

USBX in device mode is used when the application requires communication with a windows/Apple/Linux desktop. In this case the embedded device is considered to be a USB device or slave.

The architecture for the device side is similar to the host although simplified

  • USBX device core stack which is responsible for handling the USB host enumeration requests.
  • The USB Device Controller driver which is specific to a USB device chip or USB device IP.
  • The USB Device driver Class which is responsible for driving the USB device once it has have been enumerated by the host.
  • USBX in device mode can support a complex device framework including multiple configurations, multiple interfaces, multiple alternate settings. In addition, the definition of the device string framework can support multiple languages.


USB supports On-The-Go (OTG) mode, whereby two OTG-equipped controllers can communicate with host/device arbitration performed automatically as each connection is made. This enables a unit to operate as Host or Device as needed to interface with another unit via USB.


  • ARC
  • ARM/Thumb
  • AVR32
  • Blackfin
  • ColdFire/68k
  • Hitachi H8/300H
  • M-CORE
  • MicroBlaze
  • MIPS
  • NEC V8xx
  • Power Architecture
  • Renesas RX
  • Renesas RZ
  • Renesas SH
  • ST Microelectronics STM32
  • StarCore
  • StrongARM
  • TMS320C54x
  • TMS320C6x
  • Win32
  • x86/x386
  • XScale
  • Xtensea/Diamond Family Support
  • ZSP
Compilers for C/C++Real Time Operating SystemsDebuggers & JTAG EmulatorsEmbedded Software Testing solutionsMiddleware & SW componentsHW Testing solutions – Boundary-Scan (JTAG) & FunctionalProtocol and Bus Analyzers & StimulatorsHome of CANopen, EtherCAT, PowerLink, ProfiNet– SW Protocols, devices & SolutionsIn-Circuit/Parallel Engineering & Production Device Programmers (Flash/EPROMs/CPLDs…)Video & Audio SW CODECs components

For more information: Zvika Almog 054-2101400