 |
|
| |
Manual Reference Pages - SOUND (4)
NAME
sound,
pcm,
snd
-
.Fx
PCM audio device infrastructure
CONTENTS
Synopsis
Description
Boot Variables
VCHANs
Runtime Configuration
Recording Channels
Statistics
IOCTL Support
Files
Diagnostics
See Also
History
Authors
Bugs
SYNOPSIS
To compile this driver into the kernel, place the following line in your
kernel configuration file:
.Cd device sound
Non-PnP sound cards require the following lines in
device.hints(5):
hint.pcm.0.at="isa"
hint.pcm.0.irq="5"
hint.pcm.0.drq="1"
hint.pcm.0.flags="0x0"
DESCRIPTION
.Bf -emphasis
Note: There exists some ambiguity in the naming at the moment
(sound, pcm, snd).
It will be resolved soon by renaming
.Cd device sound
to
.Cd device snd ,
and doing associated changes.
.Ef
The
sound
driver provides support for
PCM
audio play and capture.
This driver also supports various
PCI,
ISA,
WSS/MSS
compatible
sound cards, AC97 mixer and High Definition Audio.
Once the
sound
driver attaches, supported devices provide audio record and
playback channels.
The
.Fx
sound system provides dynamic mixing
"VCHAN"
and rate conversion
"soft formats".
True full duplex operation is available on most sound 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
channel, 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 actually easy
since they identify themselves.
For legacy
ISA
cards, the driver looks for
MSS
cards at addresses 0x530 and 0x604 (unless overridden
in
/boot/device.hints).
Boot Variables
In general, the module
snd_foo
corresponds to
.Cd 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 specified 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 SoundBlaster 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
playback will achieve this
IRQ
rate.
This value can be tuned to improve 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 conversion if it is
available transparently to the application 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 information per device including the channels
current format, speed, and pseudo device statistics such as
buffer overruns and buffer underruns.
|
| 3
|
File names and versions of the currently loaded sound modules.
|
|
| hw.snd.maxautovchans
| | |
Global
VCHAN
setting that only affects devices with only one playback channel available.
The sound system will dynamically create up this many
VCHANs.
Set to
"0"
if no
VCHANS
are desired.
|
| hw.snd.pcm%d.vchans
| | |
The current number of
VCHANs
allocated per device.
This can be set to preallocate a certain 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 memory mapped playback is
supported natively and in
Linux
emulation, memory 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
.In 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 number 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 accompanied with the sound card.
|
| unsupported subdevice XX
|
A device node is not created properly.
|
|
SEE ALSO
snd_ad1816(4),
snd_als4000(4),
snd_atiixp(4),
snd_audiocs(4),
snd_cmi(4),
snd_cs4281(4),
snd_csa(4),
snd_ds1(4),
snd_emu10k1(4),
snd_envy24(4),
snd_envy24ht(4),
snd_es137x(4),
snd_ess(4),
snd_fm801(4),
snd_gusc(4),
snd_hda(4),
snd_ich(4),
snd_maestro(4),
snd_maestro3(4),
snd_mss(4),
snd_neomagic(4),
snd_sbc(4),
snd_solo(4),
snd_spicds(4),
snd_t4dwave(4),
snd_uaudio(4),
snd_via8233(4),
snd_via82c686(4),
snd_vibes(4),
devfs(5),
device.hints(5),
loader.conf(5),
dmesg(8),
kldload(8),
sysctl(8)
.Rs
The OSS API
.Re
HISTORY
The
sound
device driver first appeared in
.Fx 2.2.6
as
pcm,
written by
.An Luigi Rizzo .
It was later
rewritten in
.Fx 4.0
by
.An Cameron Grant .
The API evolved from the VOXWARE
standard which later became OSS standard.
AUTHORS
.An -nosplit
.An Luigi Rizzo Aq luigi@iet.unipi.it
initially wrote the
pcm
device driver and this manual page.
.An Cameron Grant Aq gandalf@vilnya.demon.co.uk
later revised the device driver for
.Fx 4.0 .
.An Seigo Tanimura Aq tanimura@r.dl.itc.u-tokyo.ac.jp
revised this manual page.
It was then rewritten for
.Fx 5.2 .
BUGS
Some features of your sound card (e.g., global volume control) might not
be supported on all devices.
| November 26, 2006 | SOUND (4) | |
Visit the GSP FreeBSD Man Page Interface. Output converted with manServer 1.07.
|