deva-ctrl-usb.so

Updated: May 06, 2022

Sound driver for USB audio devices

Syntax:

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/deva-ctrl-usb.so

Runs on:

QNX Neutrino

Options:

blacklist=filename
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.
busno=bus
The bus number of the USB controller.
config=num
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.
devno=dev
The USB address of the device.
did=did
The device ID of the device.
iface=iface
The audio control interface number.
ign_remove
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.
max_fragsize=num
The maximum fragsize (the default is 8 KB).
rx_voices=num
The number of RX voices.
tx_voices=num
The number of TX voices.
usb_path=path
The path to the io-usb-otg server.
vid=vid
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.

Description:

The deva-ctrl-usb.so 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 deva-ctrl-usb.so 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 deva-ctrl-usb.so). You have to slay io-audio if you want to terminate the manager itself.

Note:
  • 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.

Examples:

Invoke deva-ctrl-usb.so 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:

[global]
verbosity=3

[ctrl]
name=usb
input_splitter_enable=1
sw_mixer_ms=16

Invoke deva-ctrl-usb.so directly from io-audio:

io-audio -d usb

Mount deva-ctrl-usb.so (io-audio must be running):

mount -Tio-audio /lib/dll/deva-ctrl-usb.so

Errors:

When an error occurs, deva-ctrl-usb.so sends a description of the error to the system logger (see slogger2).