Multiple Sound Cards under Linux

End of last year, I decided it was time for a hardware update of my desktop computer. I exchanged the Gigabyte GA-P35-DS3 motherboard and the Core2 E6350 processor with an ASROCK Fatal1ty H87 motherboard and an Intel i5-4670 quad core processor.

The reason, why I choose this particular motherboard, are the on-board sound components. ASROCK put a little more effort into the design and the selection of the audio circuitry to achieve a better signal to noise ratio. I can’t compare with other H87 board designs, but compared to my old Gigabyte board this effort has definitely paid off. I’m hearing significantly less noise for instance when the mouse is moved. I guess that’s the best they can do considering that frequencies well into the giga hertz range are at work on a motherboard. The next step up is the use of an external USB sound card. My old Edirol UA1EX USB sound card is once again noticeably quieter than the motherboard sound.

Anyway, the hardware update went with minimal fuss and soon after installing everything the system was up and running again.

The only problem left was a reliable order of all available audio devices (two motherboard devices for standard and HDMI audio, a Webcam with microphone and the Edirol UA1EX). Searching on the internet didn’t supply an immediate solution applicable to my setup.

In the end this article provided the right hints in that the suggestions for the USB sound cards basically also need to be applied to the Intel HD audio driver.

This is my configuration for the ALSA sound system:

% cat /etc/modprobe.d/alsa.conf
options snd-hda-intel index=0,1 id=PCH,HDMI
alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-hda-intel

options snd-usb-audio index=2,3 vid=0x0582,0x046d pid=0x0096,0x081d
alias snd-card-2 snd-usb-audio
alias snd-card-3 snd-usb-audio
alias sound-slot-0 snd-hda-intel
alias sound-slot-1 snd-hda-intel
alias sound-slot-2 snd-usb-audio
alias sound-slot-3 snd-usb-audio
# Set this to the correct number of cards.

options snd cards_limit=4

This leads to the following reliable order of sound devices:

% cat /proc/asound/cards                                                               
 0 [PCH            ]: HDA-Intel - HDA Intel HDMI
                      HDA Intel HDMI at 0xf0534000 irq 45
 1 [HDMI           ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf0530000 irq 46
 2 [UA1EX          ]: USB-Audio - UA-1EX
                      EDIROL UA-1EX at usb-0000:00:14.0-8, full speed
 3 [U0x46d0x81d    ]: USB-Audio - USB Device 0x46d:0x81d
                      USB Device 0x46d:0x81d at usb-0000:00:1a.0-1.6.2, high speed

There is a Linux dependency with the above. Before Linux 3.11 or 3.12 the HDMI sound device was actually called MCH if I remember correctly.