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'', this
option loads
all 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 amount
of DMA
bufferspace available
for 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 re
sources.
1 The number of
playback, record,
virtual channels,
and flags per
device.
2 Channel informa
tion per device
including the
channel's current
format, speed, and
pseudo
device statistics
such as
buffer overruns
and buffer
underruns.
3 File names and
versions of the
currently sound
loaded 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
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout