sound(4)
NAME
sound, pcm, snd - FreeBSD PCM audio device infrastructure
SYNOPSIS
For a card with bridge driver support, and a PnP card:
device sound
For a card without bridge driver support, and a non-PnP
card, the following lines may be required in /boot/device.hints:
hint.pcm.0.at="isa"
hint.pcm.0.irq="5"
hint.pcm.0.drq="1"
hint.pcm.0.flags="0x0"
DESCRIPTION
- Note: There exists some ambiguity in the naming at the
- moment (sound,
pcm, snd). It will be resolved soon by renaming device - sound to device
snd, and doing associated changes. - The sound driver provides support for PCM audio play and
- capture. This
driver also supports various PCI, WSS/MSS compatible, ISA - sound cards,
and AC97 mixer. Once the sound driver attaches, supported - devices provide audio record and playback channels. The FreeBSD sound
- system provides dynamic mixing ``VCHAN'' and rate conversion ``soft
- formats''.
True full duplex operation is available on most cards. - If the sound card is supported by a bridge driver, the sound
- driver works
in conjunction with the bridge driver. - Apart from the usual parameters, the flags field is used to
- specify the
secondary DMA channel (generally used for capture in full - duplex cards).
Flags are set to 0 for cards not using a secondary DMA chan - nel, or to
0x10 + C to specify channel C. - The driver does its best to recognize the installed hardware
- and drive it
correctly so the user is not required to add several lines - in
/boot/device.hints. For PCI and ISA PnP cards this is actu - ally easy
since they identify themselves. For legacy ISA cards, the - driver looks
for MSS cards at addresses 0x530 and 0x604 (unless overrid - den in
/boot/device.hints). - Boot Variables
- In general, the module snd_foo corresponds to device snd_foo
- and can be
loaded by the boot loader(8) via loader.conf(5) or from the - command line
using the kldload(8) utility. Options which can be speci - fied in
/boot/loader.conf include:
snd_driver_load (``NO'') If set to ``YES'', thisoption loadsall available drivers. - snd_emu10k1_load (``NO'') If set to ``YES'', only
- the Sound
- Blaster 5.1 driver and dependent
- modules will
be loaded. - snd_foo_load (``NO'') If set to ``YES'', load
- driver for
- card/chipset foo.
- To define default values for the different mixer channels,
- set the channel to the preferred value using hints, e.g.:
- hint.pcm.0.line="0". This
will mute the input channel per default. - VCHANs
- Each device can optionally support more playback channels
- than physical
hardware provides by using ``virtual channels'' or VCHANs. - VCHAN options
can be configured via the sysctl(8) interface but can only - be manipulated
while the device is inactive. - Runtime Configuration
- The following sysctl(8) variables are available:
hw.snd.pcm%d.buffersize Configure the amountof DMAbufferspace availablefor a device. - hw.snd.targetirqrate Set the default block
- size such
- that continuous play
- back will
achieve this IRQ rate. - This value
can be tuned to im - prove application
performance. Increase - this value
when the sound lags - and decrease it
if sound stutters or - breaks up.
- hw.snd.unit When using devfs(5),
- the default
- device for /dev/dsp.
- Equivalent to
a symlink from - /dev/dsp to
/dev/dsp${hw.snd.unit}. - hw.snd.report_soft_formats Controls the internal
- format con
- version if it is
- available transparently to the appli
- cation software. When disabled
- or not available, the application
- will only be
able to select formats - the device
natively supports. - hw.snd.verbose Level of verbosity for
- the
- /dev/sndstat device.
- Higher values
include more output - and the highest
level, three, should - be used when
reporting problems. - Other options
include: - 0 Installed devices
- and their
allocated bus resources.
- 1 The number of
- playback, record,
virtual channels,and flags per
device. - 2 Channel informa
- tion per device
including thechannel's current
format, speed, andpseudo
device statisticssuch as
buffer overrunsand buffer
underruns. - 3 File names and
- versions of the
currently soundloaded modules.
- hw.snd.maxautovchans Global VCHAN setting
- that only
- affects devices that
- have only one
playback channel. The - sound system
will dynamically cre - ate up this
many VCHANs. Set to - ``0'' if no
VCHANS are desired. - hw.snd.pcm%d.vchans The current number of
- VCHANs allo
- cated per device.
- This can be set
to preallocate a cer - tain number of
VCHANs. Setting this - value to
``0'' will disable - VCHANs for this
device. - Recording Channels
- On devices that have more than one recording source (ie: mic
- and line),
there is a corresponding /dev/dspr%d.%d device. - Statistics
- Channel statistics are only kept while the device is open.
- So with situations involving overruns and underruns, consider the output
- while the
errant application is open and running. - IOCTL Support
- The driver supports most of the OSS ioctl() functions, and
- most applications work unmodified. A few differences exist, while memo
- ry mapped
playback is supported natively and in Linux emulation, memo - ry mapped
recording is not due to VM system design. As a consequence, - some applications may need to be recompiled with a slightly modified
- audio module.
See #include <sys/soundcard.h> for a complete list of the supported ioctl() functions.
FILES
The sound drivers may create the following device nodes:
- /dev/audio%d.%d Sparc-compatible audio device.
/dev/dsp%d.%d Digitized voice device.
/dev/dspW%d.%d Like /dev/dsp, but 16 bits per sample. /dev/dspr%d.%d Should be connected to a record codec.
/dev/sndstat Current sound status, including all - channels and
- drivers.
- The first number in the device node represents the unit num
- ber of the
sound device. All sound devices are listed in /dev/sndstat. - Additional
messages are sometimes recorded when the device is probed - and attached,
these messages can be viewed with the dmesg(8) utility.
DIAGNOSTICS
- ac97: dac not ready AC97 codec is not likely to be accompa
- nied with the
sound card. - unsupported subdevice XX A device node is not created prop
- erly.
SEE ALSO
- snd_ad1816(4), snd_als4000(4), snd_atiixp(4), snd_au
- diocs(4), snd_cmi(4),
snd_cs4281(4), snd_csa(4), snd_ds1(4), snd_emu10k1(4), - snd_es137x(4),
snd_ess(4), snd_fm801(4), snd_gusc(4), snd_ich(4), snd_mae - stro(4),
snd_maestro3(4), snd_mss(4), snd_neomagic(4), snd_sbc(4), - snd_solo(4),
snd_t4dwave(4), snd_uaudio(4), snd_via8233(4), - snd_via82c686(4),
snd_vibes(4), devfs(5), loader.conf(5), dmesg(8), kld - load(8), sysctl(8)
- The OSS API, http://www.opensound.com/pguide/oss.pdf.
HISTORY
- The sound device driver first appeared in FreeBSD 2.2.6 as
- pcm, written
by Luigi Rizzo. It was later rewritten in FreeBSD 4.0 by - Cameron Grant.
The API evolved from the VOXWARE standard which later became - OSS standard.
AUTHORS
- Luigi Rizzo <luigi@iet.unipi.it> initially wrote the pcm de
- vice driver
and this manual page. Cameron Grant <gandalf@vilnya.de - mon.co.uk> later
revised the device driver for FreeBSD 4.0. Seigo Tanimura
<tanimura@r.dl.itc.u-tokyo.ac.jp> revised this manual page. - It was then
rewritten for FreeBSD 5.2.
BUGS
- Some features of your cards (e.g., global volume control)
- might not be
supported on all devices. - BSD November 28, 2005