Universal Serial Bus (USB) Subsystem

The USB device driver protocol stack for AIX® consists of several drivers that communicate with each other.

The following figure illustrates several drivers communicating with each other in a layered fashion.
Figure 1. Universal Serial Bus (USB) Subsystem
The top line of the image displays the USB interface APIs and the bottom line the host controller interface
The top layer consists of several client drivers that support various USB classes that include mass storage, human interface device, audio, hub, and other classes. The client drivers hides the class level function from the operating system and provide uniform file-oriented interface to the applications in accessing the corresponding class-level devices. The mid-layer consists of a USB bus driver that hides the host controller implementation details and the bus-level hardware complexity present in the system. It provides uniform interface to each top-level client driver in accessing the corresponding class-level devices regardless of which USB bus the device is on. The lower-layer consists of several host controller drivers that provide the software interface between the host-controller hardware and the USB System Driver (USBD). The details of each host controller driver depend on the host controller interface definition. These three layer drivers in the USB subsystem work together to support the attachment of a range of USB devices. The USB devices such as flash drive, tape, CD-ROM, keyboard, mouse, speaker, and other devices are supported.

The location code is in the [USB Host Controller Number]:[Port Number] format.

For a USB 3.0 controller, 8 logical ports correspond to 4 physical USB ports on the card. The ports are logically numbered based on whether the devices are connected to the port USB 2.0 or to the port USB 3.0. If all devices connected to the ports are USB 2.0 devices, the lsdev command displays 1, 2, 3, or 4 for the logical port number. If the devices connected to the port are USB 3.0 devices, the ports are logically numbered as 5, 6, 7, or 8.

The following table shows the logical port values for both USB 2.0 and USB 3.0 devices at various physical ports.
Physical port Logical port (if USB 2.0 device) Logical port (if USB 3.0 device)
T1 (top) 0.4 0.8
T2 0.2 0.6
T3 0.1 0.5
T4 0.3 0.7

Example

# lsdev -C | grep usbms
usbms0     Available   0.7         USB Mass Storage

As shown above, if a USB 3.0 device (usbms0) is showing logical port no = 0.7, then it is connected physically to port T4 of the usbhc0 controller.