Device object

USB device objects have names in the form: usb-bus_number.device_number. If usblauncher is called with the -S option, the object name also includes the stack number in front of the bus number. For instance, for a USB device with a stack number of 0, a bus number of 1, and a device number of 3, the device control object would be named usb-0.1.3.

Note: We recommend learning about the PPS objects used by usblauncher by examining their contents, not their filenames because these filenames could change in the future.

Each device object that usblauncher writes to PPS contains the following fields:

Name Description Type Example
bus Bus type String USB
busno Bus number Integer 0x00
configuration Selected configuration Integer 1
configurations Number of configurations Integer 1
device_class Device class ID Integer 0xff
device_protocol Device protocol (present only if device_class is nonzero) Integer 0xff
device_subclass Device subclass ID (present only if device_class is nonzero) Integer 0x00
devno Device number Integer 0x04
drivers_matched Number of drivers matching the device based on the configuration file rules. A value of 0 means the device is unsupported. Integer 1
drivers_running Number of drivers launched for the device. This value can be less than drivers_matched if some drivers haven't been started yet or if some have terminated (possibly in error). Integer 0
iap Outcome of probe for the device's iAP2 support. This field is present only if the USB stack is running in host mode and after the device was probed for iAP2 support. Integer with one of the following values: -1 (when the device doesn't support iAP2 or the probe failed) or 2 (when the device supports iAP2) 2
manufacturer Manufacturer name String Kingston
max_packet_size0 Maximum packet size Integer 64
product Product name String DataTraveler G3
product_id OEM product ID Integer 0x1624
role_swap Reason for latest role swap of USB stack. This field is present only after switching the stack from host to device mode to support a third-party application. String with one of the following values: AppleDevice (for iAP2 in client mode) or DigitaliPodOut (for CarPlay) AppleDevice
serial_number Product serial number String 0019E0014A16 A931953F004E
stack_no

USB stack number specified with -S command-line option for usblauncher.

This field differentiates devices when they have the same bus number (busno) and device number (devno) but are managed by different io-usb stacks.

Integer 0
status

Device status. Normally, this field is present only when the device is being reset; the field is deleted when the reset completes.

Integer followed by string, in the format: status (message) When the device is being reset, this field contains: -1 (Device reset).
topology Duplicates upstream device and port numbers (devno, upstream_port) and provides upstream information for hub chain. String containing integers in ordered pairs (2,1),(0,2)

This value indicates a USB device is attached to hub device 2, port 1, and this hub is connected to the root device, port 2.

upstream_device_address USB address where the device is connected. When the device is connected to a host controller, this field is 0. When the device is connected to a USB hub, this field contains the hub's device address. Integer 1
upstream_host_controller Host controller number. This field is 0 unless you have multiple USB controllers, in which case it contains the number of the controller that detected the device. Integer 0
upstream_port Port number. When the device is connected to a hub, this field contains the port number on the hub. When the device is connected to the host controller, this field is 0. Integer 4
upstream_port_speed Port speed. String with one of the following values: High, Low, or Full High
vendor_id Manufacturer ID Integer 0x0951

Overcurrent condition

When an overcurrent is detected, usblauncher publishes a special type of device object that represents the USB hub that's reporting the overcurrent condition. The object doesn't provide information on the device causing the condition; in fact, this device is taken off the USB bus and its device, driver, and mount PPS objects are deleted.

The filename of the object is in this format: usb-overcurrent-stackno.busno.devno.portno. The stack number (stackno) is present only if you started usblauncher with the -S option.

The complete object looks like this:

status::-1 (Overcurrent)
bus::USB
stackno::0
busno::0x00
devno::0x01
portno::3

Once the overcurrent condition is cleared, the overcurrent object is deleted.

Bad devices

When io-usb can't assign a device number to a USB device, usblauncher publishes a device object with fewer attributes than normal to describe the "bad" device. Also, the object's filename is in a different format: usb-overcurrent-stackno.busno.upstream_device_address.upstream_port. The stack number (stackno) is present only if you started usblauncher with the -S option.

The complete object looks like this:

status::48 (Not supported)
bus::USB
stackno::0
upstream_device_address::3
upstream_host_controller::0
upstream_port::7
upstream_port_speed::High