Linux Audio Drivers

From MobileRobots Research and Academic Customer Support

Jump to: navigation, search

Audio depends on your operating system sound drivers, and onboard computer. All robots shipped with sound accessories have sound devices integrated with the onboard computer motherboard, plus a separate amplifier (for both recording and playback). Ensure that the amplifier is powered on. (Usually the button labeled "AUX2", sometimes "RADIO".)

VSBC8-based computers have have an onboard Cirrus Logic 4281 and the OSS (Open Sound System) Linux driver is supplied by the 'cs4281' module.

EBX12 (Cobra) computers have Intel 810 AC97-based sound hardware. OSS Linux drivers are supplied by the i810_audio and ac97_codec modules; ALSA Linux drivers are supplied by the snd_intel8x0 and snd_ac97_codec modules (as well as other snd_ modules for various general sound features, such as snd_pcm, snd_timer, etc. These other modules should be loaded automatically if snd_intel8x0 and snd_ac97_codec are loaded).

The OSS drivers do not support full-duplex audio (read/write access to the sound device), but the ALSA drivers do (including using it's OSS emulation feature). ARIA libraries that deal with audio generally either automatically work around lack of full-duplex audio, or provide tools to let you set up callbacks that help avoid conflicts between classes each trying to use the audio device at the same time.

If you have installed a custom Linux system, make sure that the Linux kernel either has the old OSS sound system enabled, or if it has the newer ALSA sound system enabled, that ALSA includes OSS Emulation. If OSS or OSS Emulation are successfully enabled, then the device /dev/dsp should exist. (If it does not, but /dev/sound/dsp exists, then you can make a symbolic link from /dev/dsp.)

It has been observed that occasionally another device with audio capabilities ends up providing the default audio device and mixer (for example, a BTTV video capture card). Symptoms of this problem include no sound output on the normal audio hardware, even if there are no errors playing it, or unexpected mixer controls (e.g. no "Vol", "PCM", "Mic", but instead seeing just "Line1", "Line2", etc.). This can happen if the kernel module for the other device loads before the driver module for the real computer audio device. You can force the computer audio module to load before, e.g. bttv, by adding the following line to /etc/modules.conf for the i810_audio device on the Versalogic Cobra EBX-12:

 above bttv i810_audio

Or on the VSBC8:

 above bttv cs4281

This puts i810_audio or cs4281 "above" bttv in the list of modules loaded at boot.

See Also

Personal tools