Updated: October 28, 2024 |
USB On-The-Go (OTG) server
io-usb-otg [-CcIVv] [-d dll [opts]]* [-E priority] [-e priority] [-n name] [-O string] [-o dll [opts]]* [-P priority] [-r num] [-T num] [-t memory=name] [-U priority]
QNX Neutrino
The -I option isn't supported on x86 and x86_64 platforms.
In the second form, the primary group is the one specified for user_name in /etc/passwd.
If the smmuman service is running, you can specify 1 or on to configure io-usb-otg to interface with smmuman to manage ("cage") access for non-CPU initiated reads and writes (i.e., DMA devices). If you specify 1 or on but smmuman isn't running, the io-usb-otg server fails to start.
The default setting is 0 or off. An invalid setting is treated as off.
The io-usb-otg server manages the USB bus and USB protocols through hardware controller drivers (which are DLLs). The -d and -o options let you load the DLLs when you start io-usb-otg; to load more than one DLL, use multiple -d or -o options.
The server provides USB On-The-Go (OTG) service because it supports both USB host mode and USB device mode. The name of the hardware controller driver passed to a -d or -o option determines whether it's a host-mode DLL (devu-hcd-*) or device-mode DLL (devu-dcd-*).
The -o option is useful for a dual-mode system, because it lets you load pairs of DLLs that perform operations that must be mutually exclusive. Typically, you use -o in conjunction with an external process such as the USB launcher service (usblauncher_otg), which can automatically start and stop the appropriate DLLs when the server switches between modes. See the USB launcher chapter in the Device Publishers Developer's Guide for more information about this service.
Note that mounting and unmounting DLLs isn't supported in this release. For information on host-mode DLLs and their syntax, see the devu-hcd-* entries. For information on device-mode DLLs and their syntax, see the devu-dcd-* information in your BSP documentation.
The io-usb-otg server handles all data transfers to and from devices connected to the USB bus. Drivers that are clients to the server are responsible for implementing class- or function-specific protocols (for instance, devb-ustor implements mass storage, and devnp-usbdnet.so implements a USB device network driver). To communicate with connected devices, class drivers use the host client library to talk to the server, which then talks to the device over the bus. Function drivers use the device client library to talk to the server.
When a binary mismatch is detected, a warning is logged to slogger2.
The server uses the loaded hardware controller (devu-*) drivers to do data transfers with USB hardware. If a driver is found to be incompatible with the server, the driver isn't started, a warning is logged to slogger2, and the hardware remains inaccessible.
You should use the -c option in conjunction with a launcher application such as usblauncher_otg, which chooses a device's configuration before launching the driver to manage a device's interfaces.
A launcher application must choose a default configuration for any device with more than one configuration, or the device won't function:
Start the server and USB drivers on a PCI-based system:
io-usb-otg -dehci -dohci -duhci -dxhci
Start the server and the EHCI (high speed) USB driver:
io-usb-otg -dehci ioport=0x02184000, irq=75