SND_EMU10KX(4)
π SND_EMU10KX π
okay bestie, sit down, we're learning snd_emu10kx(4) β the Kernel Interfaces Manual page for the Creative SoundBlaster Live! and Audigy sound cards device driver. yes it's a mouthful. no you don't have to say it out loud. let's go π
β¨ NAME β¨
snd_emu10kx β the device driver for Creative SoundBlaster Live! and Audigy sound cards. that's the whole name. iconic, brief, to the point. π
β¨ SYNOPSIS β¨
so you wanna build this driver into the kernel? then you're gonna drop these exact lines into your kernel configuration file:
device sound
device snd_emu10kx
orrrrr, if you'd rather be a module girlie and load the driver at boot time as a module, you put this one line into loader.conf(5):
snd_emu10kx_load="YES"
pick your fighter. both slay. π«Ά
β¨ DESCRIPTION β¨
the snd_emu10kx bridge driver is what lets the generic audio driver sound(4) attach to Creative sound cards built on the EMU10K1, CA0100, CA0101, CA0102 and CA0108 DSPs.
your snd_emu10kx cards have a PCM part, which you reach through one to five pcm(4) devices (the deets live in "MULTICHANNEL PLAYBACK", scroll down bestie), plus an MPU401-compatible MIDI I/O controller, which you reach through the midi device. and the wave table synthesizer support? yeah no, not available. not invited to the party. π
β¨ HARDWARE β¨
here's the roster of sound cards that snd_emu10kx actually supports:
- Creative Sound Blaster Live! (
EMU10K1Chipset). both PCM and MIDI interfaces are available. the full package π - Creative Sound Blaster Audigy (
CA0100andCA0101Chipset). PCM plus two MIDI interfaces available. double the MIDI, double the fun. - Creative Sound Blaster Audigy 2 and Creative Sound Blaster Audigy 4 (
CA0102Chipset). PCM support is limited to48kHz/16 bit stereo(the192kHz/24 bitpart of this chipset is not supported). - Creative Sound Blaster Audigy 2 Value (
CA0108Chipset). PCM support is limited to48kHz/16 bit stereo(again, the192kHz/24 bitpart of this chipset is not supported). and there is no MIDI support for this card. at all. sorry babe.
and now the not-invited list β these cards the snd_emu10kx driver does not support, even though their names look suspiciously similar to the supported ones (catfishing, honestly):
- Creative Sound Blaster Live! 24-Bit, which FreeBSD identifies as
"emu10k1x Soundblaster Live! 5.1". - Creative Sound Blaster Audigy LS / ES, which FreeBSD identifies as
"CA0106-DAT Audigy LS". - All other Creative sound cards with
-DATchipsets. - All Creative X-Fi series sound cards.
read the names twice bestie. they are not the same cards. the resemblance is a trap π
β¨ MULTICHANNEL PLAYBACK β¨
by default, the snd_emu10kx driver loads with multichannel playback capabilities enabled. so if you don't set the hint.emu10kx.0.multichannel_disabled option in your loader.conf(5) configuration file, you'll get up to five DSP devices, one for each sound card output. then you can bring in extra software (like audio/pulseaudio from The Ports Collection) to do your sound stream demultiplexing. and heads up: only the "FRONT" output can play and record sound from external sources (like line or S/PDIF inputs). that's the main character output, lowkey. π
β¨ MULTICHANNEL RECORDING β¨
by default, multichannel recording capabilities are not enabled when you load the snd_emu10kx driver. but if you enable the hint.emu10kx.0.multichannel_recording option in loader.conf(5), you'll get one more DSP device β and that one is rate-locked to 48kHz/16bit/mono.
okay so plot twist: it's actually 48kHz/16bit/32 channels on SB Live! cards and 48kHz/16bit/64channels on Audigy cards, but the current implementation of the sound subsystem just does not support that many PCM channels. the device can not be opened for read, which, and I quote the energy here, confuses many applications. it's giving chaos. π
within a multichannel stream, the first half (0-15 or 0-31) is a copy of all DSP outputs, and 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 don't need that sync data, because a stream always starts with substream 0. no cap. π
πΈ SB Live! substream map (in byte offsets, each substream is 2 bytes LE)
+0x00..+0x1Eβ PCM streams0..15+0x20, +0x22β Empty+0x24..+0x2Aβ PCM inputs: front left, front right, rear left, rear right, center, sub+0x2C..+0x3Cβ DSP inputs0..8:+0x3Eβ sync substream (0xc0de)
πΈ Audigy substream map (in byte offsets, each substream is 2 bytes LE)
+0x00..+0x3Eβ PCM streams0..31+0x40..+0x5Eβ PCM inputs: front LR, rear LR, center, sub, ...+0x60..+0x7Eβ DSP inputs0..16
β¨ OSS MIXER CONTROLS β¨
these are the controls you can reach through the standard OSS programming interface. and yes, you can use mixer(8) to change them. cute, right? π
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. mix and match energy.
- "vol" mixer control for the overall sound volume.
- "pcm" mixer control for the PCM playback volume. it controls only the front output volume in multichannel mode and all output volume in single channel mode.
- "rec" mixer control acts very differently on
EMU10K1and other cards. onEMU10K1cards it controls the AC97 codec recording level. on non-EMU10K1cards it controls the amount of AC97 "stereo mix" entering the DSP. AC97 recording level and AC97 recording source are fixed onCA0100,CA0101,CA0102andCA0108cards β the AC97 recording levels are always set to maximum and the recording source is always "stereo mix". no takebacks. - "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.
and the other OSS mixer controls? they control the inputs of the AC97 codec. the rest of the squad π«Ά
β¨ PRIVATE DEVICE CONTROLS β¨
you can control some of EMU10Kx's operation and configuration parameters through dev.emu10kx.β¨Xβ© sysctls. but listen: these sysctl(8) values are temporary and should not be relied upon. they're giving situationship, not relationship. π
β¨ DRIVER CONFIGURATION β¨
Loader tunables are what you use to set driver configuration. you can set tunables at the loader(8) prompt before booting the kernel, or you can store them in /boot/loader.conf.
okay important: these tunables cannot be changed from a machinesysctl(8)entry after boot. but you can change them usingkenv(1)before loading thesnd_emu10kxdriver. so plan ahead bestie. π
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 enabled1β 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.
not me pointing out that there are literally two 2s in that list. that's what the page says, so that's what you get. no shade, just accuracy. π
β¨ FILES β¨
/dev/emu10kx?β snd_emu10kx management interface
β¨ SEE ALSO β¨
β¨ HISTORY β¨
the snd_emu10kx device driver first appeared in FreeBSD 7.0. a legend was born, honestly. β
β¨ 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>. and the snd_emu10kx device driver and this manual page were written by Yuriy Tsibizov. kings, all of them π
β¨ BUGS β¨
okay the not-so-cute part, but we tell the truth here:
- the driver does not detect lost S/PDIF signals and produces noise when S/PDIF is not connected and the S/PDIF volume is not zero. so yeah. turn that volume down or plug it in. π
- the PCM driver cannot detect the presence of Live!Drive or AudigyDrive breakout boxes and tries to use them anyway (and lists their connectors in the mixer). it's manifesting them. they are not there. π
- the MIDI driver cannot detect the presence of Live!Drive or AudigyDrive breakout boxes and tries to enable the IR receiver on them anyway. same delulu, different subsystem. π
and that's the whole page bestie, we ate and left no crumbs π this was the Debian version of SND_EMU10KX(4), dated May 28, 2008 β so if you're reading this in the future, hi, the vibes are timeless, periodt πβ¨ππ¦
π¦ where this page comes from
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- Copyright (c) 2003-2007 Yuriy Tsibizov
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms