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.
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.
All of this and a general performance oriented design philosophy helps USBX achieve the fastest possible performance.
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
In addition, USBX OTG stack has been verified and certified by the independent test lab Allion in Taiwan.
USB Host controller support
from Atmel, Microchip, Philips, Renesas, ST, TI and other vendors. USBX also supports multiple host controllers in the same application.
USB Device controller support
Renesas, ST, TI and other vendors.
Extensive Host Class support
HID (keyboard, mouse, and remote control), HUB, PIMA, PRINTER, PROLIFIC, and STORAGE.
Extensive USB Device Class support
(w/MTP), RNDIS, and STORAGE. Support for custom classes is also available.
of USBX PIMA 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
This simple data pump class is called DPUMP and can be used as a model for custom application classes.
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
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
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
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
- 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