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, and sometimes a separate amplifier (for both recording and playback). Ensure that the amplifier is powered on. (Usually the button labeled "AUX2", sometimes "RADIO".)

There are two different audio driver systems used on different versions of Linux, OSS (Open Sound System) and ALSA. ALSA includes some compatibily tools to help run software that assumes OSS (see http://alsa.opensrc.org/Category:OSS for more information). ArSpeechSynth_Cepstral and some other sound software generally assumes the OSS interface on Linux. If your system only has ALSA support (recent versions of Linux, including Ubuntu 12.04 and later), then you can run programs in OSS compatability mode using the aoss tool. For example:

 aoss /usr/local/Aria/ArSpeechSynth_Cepstral/usingArCepstral

Contents

Operating Systems

Ubunutu 12.04 (precise), 16.04 (xenial) and later

A new system called PulseAudio is used to manage audio. See PulseAudio Notes (Audio Playback on Linux).

An optional OSS driver implementation (OSS 4) is available for Ubuntu 12 and later, but it will replace ALSA and PulseAudio and cannot be used at the same time as ALSA. To install OSS4, install oss4-base and oss4-dkms. oss4-dkms will compile and install OSS Linux kernel driver modules. To revert back to ALSA after installing OSS4, remove the oss4-base and oss4-dkms packages, and also delete the file oss4-base_noALSA.conf from the /etc/modprobe.d/ directory, and restart.

Debian 5

ALSA drivers are used for sound, with OSS compatability provided by the snd_pcm_oss driver module. The OSS interface for sound playback is /dev/dsp.

Debian 3

OSS is used. The interface for sound playback is /dev/dsp.

RedHat 7

OSS is used. The interface for sound playback is /dev/dsp.

Onboard Computers

VSBC8

VSBC8 computers have have an onboard Cirrus Logic 4281 and the OSS Linux driver is supplied by the 'cs4281' module.

EBX-12 (Cobra)

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.)

For important notes about what channels are used to adjust playback and input levels, see Audio levels, recording and playback on Cobra EBX-12 computer.

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.

EBX-37 (Mamba)

TODO

Pioneer LX Embedded Computer

The embedded computer in the Pioneer LX/MTX Core includes a TI/Burr-Brown USB audio device connected to the Pioneer LX's speakers.

On Ubuntu 12 Linux, the snd_usb_audio kernel driver module is used (with snd_hwdep, snd_hda_codec and other dependent modules.) This will be loaded automatically at boot and the USB audio device automatically detected.

See Also

Personal tools