USBX is a full-featured USB stack for deeply embedded applications. This chapter introduces USBX, describing its applications and benefits
USBX supports the three existing USB specifications: 1.1, 2.0 and OTG. It is designed to be scalable and will accommodate simple USB topologies with only one connected device as well as complex topologies with multiple devices and cascading hubs. USBX supports all the data transfer types of the USB protocols: control, bulk, interrupt, and isochronous.
USBX supports both the host side and the device side. Each side is composed of three layers.
The relationship between the USB layers is as follows:

USBX can support the most demanding USB devices, including multiple configurations, multiple interfaces, and multiple alternate settings.
USBX provides the best deeply embedded USB stack in a manner that is easy to understand and use. The USBX API makes the services intuitive and consistent. By using the provided USBX class APIs, the user application does not need to understand the complexity of the USB protocols.