NAME¶
snd_emu10kx
—
Creative SoundBlaster Live! and Audigy sound cards
device driver
SYNOPSIS¶
To compile this driver into the kernel, place the following lines in your kernel
configuration file:
device sound
device snd_emu10kx
Alternatively, to load the driver as a module at boot time, place the following
line in
loader.conf(5):
DESCRIPTION¶
The
snd_emu10kx
bridge driver allows the
generic audio driver
sound(4) to attach to
Creative sound cards based on the EMU10K1, CA0100, CA0101, CA0102 and CA0108
DSPs.
The
snd_emu10kx
sound cards have a PCM part,
which is accessible through one to five
pcm(4)
devices (see
MULTICHANNEL
PLAYBACK for details), and MPU401-compatible MIDI I/O controller, which is
accessible through the midi device. Wave table synthesizer support is not
available.
HARDWARE¶
The
snd_emu10kx
driver supports the following
sound cards:
- Creative Sound Blaster Live! (EMU10K1 Chipset). Both PCM and MIDI
interfaces are available.
- Creative Sound Blaster Audigy (CA0100 and CA0101 Chipset). PCM and two
MIDI interfaces available.
- Creative Sound Blaster Audigy 2 and Creative Sound Blaster Audigy 4
(CA0102 Chipset). PCM support is limited to 48kHz/16 bit stereo (192kHz/24
bit part of this chipset is not supported).
- Creative Sound Blaster Audigy 2 Value (CA0108 Chipset). PCM support is
limited to 48kHz/16 bit stereo (192kHz/24 bit part of this chipset is not
supported). There is no MIDI support for this card.
The
snd_emu10kx
driver does
not support the following sound cards (although
they have names similar to some supported ones):
- Creative Sound Blaster Live! 24-Bit, identified by
FreeBSD as “
emu10k1x
Soundblaster Live! 5.1
”.
- Creative Sound Blaster Audigy LS / ES, identified by
FreeBSD as “
CA0106-DAT
Audigy LS
”.
- All other Creative sound cards with -DAT chipsets.
- All Creative X-Fi series sound cards.
MULTICHANNEL PLAYBACK¶
By default the
snd_emu10kx
driver is loaded
with multichannel playback capabilities enabled. If you do not set the
hint.emu10kx.0.multichannel_disabled
option
in your
loader.conf(5) configuration file you
will get up to five DSP devices, one for each sound card output. You can use
additional software (like
audio/pulseaudio from
The Ports Collection) to do sound stream
demultiplexing. Only “FRONT” output can play and record sound
from external sources (like line or S/PDIF inputs).
MULTICHANNEL RECORDING¶
By default multichannel recording capabilities are not enabled when you load the
snd_emu10kx
driver. If you enable the
hint.emu10kx.0.multichannel_recording
option in
loader.conf(5) you will get one more
DSP device that is rate-locked to 48kHz/16bit/mono. This is actually
48kHz/16bit/32 channels on SB Live! cards and 48kHz/16bit/64channels on Audigy
cards, but the current implementation of the sound subsystem does not support
such an amount of PCM channels. This device can not be opened for read, thus
confusing many applications.
Within a multichannel stream, the first half (0-15 or 0-31) is a copy of all DSP
outputs, the second half (15-30 or 32-63) is a copy of some DSP inputs. On
Live! cards the last substream (31) is used as a sync stream and is always set
to 0xc0de. Audigy cards do not need such sync data, because a stream always
starts with substream 0.
SB Live! substream map (in byte offsets, each substream is 2 bytes LE)¶
Offset
- Substream
- +0x00..+0x1E
- PCM streams 0..15
- +0x20, +0x22
- Empty
- +0x24..+0x2A
- PCM inputs: front left, front right, rear left, rear right, center,
sub
- +0x2C..+0x3C
- DSP inputs 0..8:
- +0x3E
- sync substream (0xc0de)
Audigy substream map (in byte offsets, each substream is 2 bytes LE)¶
Offset
- Substream
- +0x00..+0x3E
- PCM streams 0..31
- +0x40..+0x5E
- PCM inputs: front LR, rear LR, center, sub, ...
- +0x60..+0x7E
- DSP inputs 0..16
OSS MIXER CONTROLS¶
These are the controls available through the standard OSS programming interface.
You can use
mixer(8) to change them.
On EMU10K1-based cards the OSS mixer directly controls the AC97 codec. On newer
cards the OSS mixer controls some parameters of the AC97 codec and some
DSP-based mixer controls.
- “vol”
- mixer control for the overall sound volume.
- “pcm”
- mixer control for the PCM playback volume. It controls only front output
volume in multichannel mode and all output volume in single channel
mode.
- “rec”
- mixer control acts very differently on EMU10K1 and other cards. On EMU10K1
cards it controls the AC97 codec recording level. On non-EMU10K1 cards it
controls the amount of AC97 “stereo mix”
entering the DSP. AC97 recording level and AC97 recording source are fixed
on CA0100, CA0101, CA0102 and CA0108 cards. The AC97 recording levels are
always set to maximum and recording source is always
“stereo mix
”.
- “dig1”
- is a CD S/PDIF (on-card) volume control
- “dig2”
- is an AudigyDrive S/PDIF (Audigy series) or TOSLink (SB Live! series)
volume control
- “dig3”
- is an on-card S/PDIF volume control
- “line2”
- is AudigyDrive "Line In 2" volume control
- “line3”
- is AudigyDrive "AUX In 2" volume control
Other OSS mixer controls control the inputs of the AC97 codec.
PRIVATE DEVICE CONTROLS¶
You can control some of EMU10Kx's operation and configuration parameters through
dev.emu10kx.⟨
X⟩
sysctls. These
sysctl(8) values are temporary and
should not be relied upon.
DRIVER CONFIGURATION¶
Loader tunables are used to set driver configuration. Tunables can be set at the
loader(8) prompt before booting the kernel or
they can be stored in
/boot/loader.conf.
These tunables cannot be changed from a machine
sysctl(8) entry after boot, but you can change
them using
kenv(1) before loading the
snd_emu10kx
driver.
- hint.emu10kx.⟨X⟩.disabled
- Disables loading a driver instance.
- hint.emu10kx.⟨X⟩.multichannel_disabled
- Disables multichannel playback support, when one card is represented as
several PCM devices.
- hint.emu10kx.⟨X⟩.multichannel_recording
- Enables experimental multichannel recording support.
- hint.emu10kx.⟨X⟩.debug
- Set debug output level.
- 0
- No additional debug options enabled
- 1
- Enables all DSP outputs to be connected, even those that are known to
be unused on a particular card.
- 2
- Additional debug messages about in-driver events will be printed.
- 2
- Additional debug messages will be printed when memory allocation
fails.
FILES¶
- /dev/emu10kx?
snd_emu10kx
management interface
SEE ALSO¶
sound(4)
HISTORY¶
The
snd_emu10kx
device driver first appeared
in
FreeBSD 7.0.
AUTHORS¶
The PCM part of the driver is based on the
snd_emu10k1(4) SB Live! driver by
Cameron Grant
⟨cg@FreeBSD.org⟩. The MIDI interface is based on the
snd_emu10k1(4) MIDI interface code by
Mathew Kanner
⟨matk@FreeBSD.org⟩. The
snd_emu10kx
device driver and this manual
page were written by
Yuriy Tsibizov.
BUGS¶
The driver does not detect lost S/PDIF signals and produces noise when S/PDIF is
not connected and S/PDIF volume is not zero.
The PCM driver cannot detect the presence of Live!Drive or AudigyDrive breakout
boxes and tries to use them (and list their connectors in the mixer).
The MIDI driver cannot detect the presence of Live!Drive or AudigyDrive breakout
boxes and tries to enable the IR receiver on them anyway.