0

Pulseaudio murdered my last Audigy 2 soundcard, it did this because it kept turning the PCM to maximum volume on the sound card, and it kept changing the audio levels automatically every time i switched audio application - e.g. from a Firefox youtube video to Audacious. It was an old card anyway and the caps were getting dry but resetting the volume to high was the final nail in the coffin and eventually it started to sound like Eric Cartman flatulating into a trombone. Then the audio on one side of some of the line outs died and the sound quality started going on all the other outputs. I've got rid of pulseaudio so that this doesn't repeat and I'm not going to use pulseaudio again.

I've recently bought a Asus Strix Soar 7.1 sound card. It's detected by ALSA if and only if the Realtek onboard sound card is enabled. If the onboard sound is disabled in the system UEFI, then no sound cards are detected. Asus Strix Soar is a USB based soundcard that sits on a PCIe PCB. I've tested it, it works fine, and sounds reasonable when i tell Audacious to use the PCM from that card. But many applications are going to want to use the default soundcard which is inevitably going to be the 1st sound device.

If I blacklist all the kernel modules for the onboard sound, then Alsa stops detecting my Strix Soar and it reports "no mixer device" and will not open any sound controls. The same happens when I disable it in the BIOS; it's not detected by ALSA.

I also have an NVidia graphics card, and this wants to output sound through HDMI and this tries to be the default sound card.

I've stopped the HDMI output from being the default with the following config:

options snd_hda_intel index=3 model=auto

In /etc/modprobe.d/alsa-base.conf and this moves the hdmi output to card 3, so that it's at the back of the list and never becomes the default soundcard. Hurray!

But now the realtek sound card is listed as the first device. I don't know what the kernel module is for the realtek sound card is, so i can't move it.

When I do an lspci -k | grep -A2 Audio i get the following:

09:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
        Subsystem: ASUSTeK Computer Inc. GK208 HDMI/DP Audio Controller
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel
--
0b:00.3 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller
        Subsystem: ASUSTeK Computer Inc. Family 17h (Models 00h-0fh) HD Audio Controller
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel

When I do an lsmod | grep snd, I get:

snd_hda_codec_hdmi     61440  1
snd_hda_codec_generic    86016  1
snd_usb_audio         262144  1
snd_hda_intel          49152  1
snd_usbmidi_lib        36864  1 snd_usb_audio
snd_hda_codec         151552  3 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel
snd_rawmidi            40960  1 snd_usbmidi_lib
snd_seq_device         16384  1 snd_rawmidi
snd_hda_core           94208  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_hwdep              16384  2 snd_usb_audio,snd_hda_codec
snd_pcm               114688  5 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
snd_timer              36864  1 snd_pcm
snd                    94208  15 snd_hda_codec_generic,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_timer,snd_pcm,snd_rawmidi
soundcore              16384  1 snd
usbcore               294912  5 xhci_hcd,snd_usb_audio,usbhid,snd_usbmidi_lib,xhci_pci

The aplay -l output is:

**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 0: Generic Analog [Generic Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Generic [HD-Audio Generic], device 1: Generic Digital [Generic Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: CARD [STRIX SOUND CARD], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: CARD [STRIX SOUND CARD], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: CARD [STRIX SOUND CARD], device 2: USB Audio [USB Audio #2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

In summary:

  1. The onboard audio is currently detected as the first sound card.
  2. I can't disable the onboard sound without disabling my Strix Soar as well.
  3. I can't blacklist the onboard sound kernel modules without disabling my Strix Soar.
  4. I can't work out which kernel modules i need in alsa-base.conf to move the realtek soundcard away from default.

What I want to do:

What I am trying to do, is either disable the onboard audio or banish it from being the default sound device, so that my Strix Soar is the default sound card. But I don't know the kernel module for this.

Is there some way to find out what the kernel module is so that I can move it? Or some way to disable the onboard audio without disabling the Strix Soar?

I can't be the only person with this problem.

Edit thanks for Nik's accepted answer which put me on the right path, the solution was to change /etc/modprobe.d/alsa-base.conf to read:

options snd_usb_audio index=0 model=auto
options snd_hda_intel index=3 model=auto
options snd_hda_intel index=4 model=auto

And this fixed everything. Strix is now first.

2

The onboard Realtek and NVidia GPU both use module snd_hda_intel and the device you want as default uses module snd_usb_audio

The slots option can fix the card order so snd_usb_audio takes the first slot (card 0)

Edit /etc/modprobe.d/alsa-base.confand replace the options added in the question with this:

options snd slots=snd_usb_audio,snd_hda_intel

Advanced Linux Sound Architecture - Module Autoloading Support | The Linux Kernel documentation

1
  • You sir are a genius. Okay so the options snd slots=snd_usb_audio,snd_hda_intel didn't work, that just disabled all my sound cards so there was nothing in alsamixer. However, you did give me the snd_usb_audio module, so what i did was as follows: options snd_usb_audio index=0 model=auto options snd_hda_intel index=3 model=auto options snd_hda_intel index=4 model=auto and this solved the issue - the strix is now first, thank you soo much!!
    – Owl
    Mar 25 '21 at 13:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.