When I built my previous Linux workstation in 2007, I equipped it with a M-Audio Audiophile 2496 professional audio card. I was very pleased with its quality – superb sound, excellent recording capabilities, S/PDIF and MIDI in/out, and proper RCA connectors instead of the standard crappy 3,5mm jack sockets. Even my untrained ear could hear the difference in sound quality between M2496 and the motherboard’s built-in sound card. It worked excellently with both ALSA and Jack-Audio-Connection-Kit, and as the system was using Gentoo Linux, I was able to keep the system Pulseaudio-free until the end of its lifespan.
I built my current AMD Ryzen-based workstation some 2,5 years ago, and I really wanted to continue using the M2496 card somehow. However, there were two issues: first, the card uses an older PCI bus connector, which isn’t supported on modern motherboards any more (unless you use a some kind of PCI-to-PCIe adapter; not applicable in my case anyway, the water cooling takes too much space).
My solution was to buy an used Intel Atom-based Mini-ITX motherboard with a spare PCI connector, and use it with the M2496 card as an Arch Linux-based sound server. Because you cannot really avoid Pulseaudio on modern Linux desktops any more, I decided to use Pulseaudio’s RTP-based streaming solution between the desktop and the sound server.
And that brings us to the second issue: M-Audio 2496 and other ICE1712-based cards does not work with Pulseaudio out of the box. No sound, period.
There’s an open, unresolved bug report on this from more than 10 years ago… quite incomprehensible. I know that Lennart Poettering hates ICE1712-based sound cards, but this is still too much… Well, it just means that M-Audio users need to do everything the hard way, manually editing and creating configuration files.
- Make sure that M-Audio is set as the default sound card (usually it is set as a secondary card, check with
aplay -l
.): create/edit the file /etc/modprobe.d/alsa-base.conf
and reboot:
options snd_ice1712 index=0
options snd_hda_intel index=1
- Add a new rule to
/lib/udev/rules.d/90-pulseaudio.rules
(this will be overwritten by an update, so make a backup):
LABEL="pulseaudio_check_pci"
+ # M-Audio Audiophile 2496
+ # ICE1712
+ ATTRS(vendor)=="0x1412", ATTRS(device)=="0x1712", ENV(PULSE_PROFILE_SET)="via-ice1712.conf"
The vendor
-string may be different on other ICE1712 cards, please check with lspci -nn
.
- Finally, create a profile definition in
/usr/share/pulseaudio/alsa-mixer/profile-sets/via-ice1712.conf
; Via ICE1712 multi-channel audio chipset
;
; This chipset has up to four stereo pairs of input and four stereo pairs of
; output, named channels 1 to 8. Also available are separate S/PDIF stereo
; channels (input and output), and a separate "system-out" stereo jack that
; supports 6-channel hardware mixing.
;
; The S/PDIF stereo channels can be controlled via the mixer for hw:0, and
; additionally, the 8 main outputs can be loop-routed to a separate stereo
; input pair, available as channels 11 and 12.
;
; Many cards available from vendors do not expose all channels from this chip
; to an external port, which effectively reduces the number of channels that
; are useful to the user. However, the ALSA driver still exposes all channels
; even if they are not connected.
;
; We knowingly only define a subset of the theoretically possible
; mapping combinations as profiles here.
;
; See default.conf for an explanation on the directives used here.
[General]
auto-profiles = no
[Mapping analog-mch-in]
description = Analog Multi-Channel Main Input
device-strings = hw:%f,0
channel-map = aux0,aux1,front-left,front-right,aux2,aux3,aux4,aux5,aux6,aux7,aux8,aux9
direction = input
[Mapping analog-mch-out]
description = Analog Multi-Channel Main Output
device-strings = hw:%f,0
channel-map = front-left,front-right,aux0,aux1,aux2,aux3,aux4,aux5,aux6,aux7
direction = output
[Mapping digital-stereo]
description = Digital Stereo Input/Output
device-strings = iec958:%f
channel-map = left,right
direction = any
[Mapping analog-system-out]
description = Analog Stereo System-Out
device-strings = hw:%f,2
channel-map = left,right
direction = output
[Profile output:mch]
description = Multi-Channel Output Active (Digital Disabled)
output-mappings = analog-mch-out analog-system-out
input-mappings =
priority = 90
skip-probe = yes
[Profile output:mch+input:mch]
description = Multi-Channel Input/Output (Digital Disabled)
output-mappings = analog-mch-out analog-system-out
input-mappings = analog-mch-in
priority = 100
skip-probe = yes
[Profile output:spdif]
description = Digital Output (Multi-Channel Disabled)
output-mappings = digital-stereo analog-system-out
input-mappings =
priority = 80
skip-probe = yes
[Profile output:spdif+input:spdif]
description = Digital Input/Output (Multi-Channel Disabled)
output-mappings = digital-stereo analog-system-out
input-mappings = digital-stereo
priority = 90
skip-probe = yes
[Profile output:system]
description = System Output Only
output-mappings = analog-system-out
input-mappings =
priority = 60
skip-probe = yes
- Restart Pulseaudio:
pulseaudio -k
pulseaudio --start
The original source for the Pulseaudio fix can be found here.