Updated: April 19, 2023

Sound driver for USB audio devices


Direct invocation (also causes a new io-audio process to start):

io-audio -c config_file

io-audio -d usb [opt[,opt...]]

Mounting (requires that io-audio already be running):

mount -Tio-audio [-oopt[,opt...]] /lib/dll/

Runs on:

QNX Neutrino


Specify the full path to the USB audio device blacklist file. The driver's insertion callback will ignore detection of devices with the vendor IDs and device IDs specified in that file.
The bus number of the USB controller.
The configuration number. If you don't provide this option, the audio driver lets the USB manager select the configuration, which in this case will be the device's first configuration.
The USB address of the device.
The device ID of the device.
The audio control interface number.
Prevent a removal callback from being attached. If ign_remove is set, it's expected that a USB driver-launching service will unmount the audio driver DLL from io-audio on detection of device removal.
The maximum fragsize (the default is 8 KB).
The number of RX voices.
The number of TX voices.
The path to the io-usb-otg server.
The vendor ID of the device.

For io-audio options, including card options that apply to all sound drivers, see the entry for io-audio.


The shared object is a device driver DLL used by the io-audio manager. It uses the API described in the Audio Developer's Guide.

While is running, you can use applications with sound, and those that control the sound system.

If you provide the vid and did arguments, then the driver's insertion callback enumerates only devices that match the provided vendor and device IDs and that are not in the blacklist file (if blacklist is defined). The syntax of each file line is:
<venderid>:<deviceid> #any comment
For example:
0x47f:0xc007    #PLANTRONICS AUDIO 476 DSP
0xd8c:0x13c     #test usb device

If you provide the busno and devno arguments, then the audio driver doesn't attach an insertion callback to detect newly inserted devices. The driver only attaches to the already inserted device corresponding to these two arguments. When the device is removed, the driver DLL will be unmounted from io-audio, unless ign_remove is also specified.

If you're starting the driver to target a particular audio function, you must provide the vid, did, busno, devno, and iface options. The USB device must be inserted before you start or mount the driver.

When the device is removed, the audio driver DLL is unmounted from io-audio, but the io-audio manager continues to run (after you re-insert the device, you can run mount -Tio-audio You have to slay io-audio if you want to terminate the manager itself.

  • Some USB Host controllers are restricted in the number of transfer descriptors available, so adjustments to either the audio driver's max_fragsize or the USB Host controller driver's TD pools (num_td=xx) may be required for successful isoch transfers.
  • Typically, graphics drivers run at a higher priority than applications, but if their priority is higher than the audio driver, it can cause breaks in audio playback and capture. To avoid this problem, use data_thread_prio and intr_thread_prio in the audio configuration file to increase the priority of the audio drivers.


Invoke directly from io-audio, using a configuration file:

io-audio -c /etc/system/config/audio/io_audio.conf

The following sample audio configuration file sections start this driver:



Invoke directly from io-audio:

io-audio -d usb

Mount (io-audio must be running):

mount -Tio-audio /lib/dll/


When an error occurs, sends a description of the error to the system logger (see slogger2).