snd_hda_intel alsa have to modprobe remove install each restart. Why?

Since a Tumbleweed dup about a month ago I have had problems with sound.

I have removed all sound installs and configs and started again. Starting with alsa, and then adding pulseaudio thereafter.
However, I have been plagued by a problem I cannot resolve.
That is at each restart the sound requires reconfiguring.
Initially, with only alsa, I would use the Yast2 sound, disable the onboard sound card and then exit and then using yast2 sound config again, re-enable the card using the “normal” option.
Sound would work again but only for that session.
Using alsa store did not resolve.

Since then I have realised that it seems to be a module issue as I can resolve for that session by running as root:

# modprobe -r snd_hda_intel; modprobe snd_hda_intel; systemctl restart sound.target alsa-state.service

My HDMI unfortunately has the same module.
So this is quite possibly an underlying reason for the problem.

I need some help to resolve what is going on and why please so it can be fixed.

When it is failing (ie after a restart) I get:

# aplay -l
aplay: device_list:272: no soundcards found...

# cat /proc/asound/cards
  --- no soundcards ---

After the modprobe remove and install and alsa being restart I get:

#  aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: Generic Analog [Generic Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: Generic Digital [Generic Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: Generic Digital [Generic Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 11: HDMI 5 [HDMI 5]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

# cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xdf220000 irq 128
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI
                      HDA ATI HDMI at 0xdf160000 irq 126


For background I had an Xonar card in the machine but have removed this as I had even greater problems having Suse install this.
It is now removed. And because of that history I removed all configurations and conf files for sound that I could, incl alsa, pulseaudio and jack.
Only alsa, and then later pulseaudio have been reinstalled now.

I would like to work out how to permanently solve this problem and
how to also blacklist the Card 1 [HDMI ] “HDA-Intel - HDA ATI HDMI”

Can anyone please help with resolving this?

Thankyou

I realised I did not include the card pci info and some other install info may be useful. I cannot see an “edit” option for the post so here further info is as a comment:
(Also can forum administrator please remove my comment above that was only part completed and is contained in this comment. Thanks.)

Full alsa info from /usr/sbin/alsa-info.sh script is at http://alsa-project.org/db/?f=da228149489d2b65b71e2abfc24e255da8abc597

lspci | grep -ie snd -ie audio -ie sound

# lspci | grep -ie snd -ie audio -ie sound
00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller (rev 31)
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]

rpm -qa ‘alsa

# rpm -qa '*alsa*'
alsa-firmware-1.0.29-2.2.noarch
alsa-1.1.9-2.1.x86_64
alsa-utils-1.1.9-2.1.x86_64
alsa-plugins-pulse-32bit-1.1.9-1.3.x86_64
alsa-oss-1.1.8-1.4.x86_64
qemu-audio-alsa-4.0.0-5.1.x86_64
alsa-plugins-pulse-1.1.9-1.3.x86_64
alsa-plugins-1.1.9-1.3.x86_64

rpm -qa ‘pulse

#rpm -qa '*pulse*'
pulseaudio-module-zeroconf-12.2-6.1.x86_64
mpg123-pulse-1.25.10-2.4.x86_64
xfce4-panel-plugin-pulseaudio-0.4.1-1.5.x86_64
libpulse0-32bit-12.2-6.1.x86_64
alsa-plugins-pulse-32bit-1.1.9-1.3.x86_64
pulseaudio-lang-12.2-6.1.noarch
alsa-plugins-pulse-1.1.9-1.3.x86_64
xfce4-volumed-pulse-0.2.3-1.6.x86_64
pulseaudio-module-bluetooth-12.2-6.1.x86_64
libpulse0-12.2-6.1.x86_64
pulseaudio-12.2-6.1.x86_64
pulseaudio-bash-completion-12.2-6.1.x86_64
libpulse-mainloop-glib0-12.2-6.1.x86_64
pulseaudio-utils-12.2-6.1.x86_64
xfce4-panel-plugin-pulseaudio-lang-0.4.1-1.5.noarch

rpm -q libasound2

# rpm -q libasound2
libasound2-1.1.9-2.1.x86_64

uname -a

# uname -a
Linux linux-h5nt.suse 5.1.16-1-default #1 SMP Wed Jul 3 12:37:47 UTC 2019 (2af8a22) x86_64 x86_64 x86_64 GNU/Linux

cat /etc/modprobe.d/50-sound.conf

#cat /etc/modprobe.d/50-sound.conf
options snd slots=snd-hda-intel index=0 model=generic
#options snd_hda_codec_hdmi id=HDMI index=1
# nS1_.aeKjouZo5Y7:100 Series/C230 Series Chipset Family HD Audio Controller
alias snd-card-0 snd-hda-intel
#alias snd-card-1 snd_hda_codec_hdmi

cat /etc/modprobe.d/alsa-base.conf

#cat /etc/modprobe.d/alsa-base.conf
options snd_hda_intel index=0 model=generic
#options snd_hda_codec_hdmi id=HDMI index=1

Looks similar to this problem: https://lists.opensuse.org/opensuse-factory/2019-07/msg00121.html
Please see if there is a useful hint there…

further to OrsoBruno’s suggestion … Takashi (who is an alsa developer) noted:

and I quote:

My wild guess is that you’ve put snd-hda-intel into initrd unnecessarily and incompletely. Maybe YaST did that incorrectly.
Check and remove the contents of /etc/module-load.d/yast.conf, and recreate initrd.

Thankyou OrsoBruno and oldcpu!

I will try these in the morning, starting first with oldcpu’s suggestion re Takashi as that file does indeed contain the unnecessary and incomplete snd-hda-intel.
So it sounds most likely that will be the reason.
Why yast would do this causing this problem is beyond me but the timestamp on that file goes back to April.
For a certainty I would not have made that change.

Also do you know if there is a way to blacklist the HDMI audio on the graphics card?

From my system:

# cat /etc/modules-load.d/yast.conf 
snd-hda-intel

# ls -laht /etc/modules-load.d/yast.conf 
-rw-r--r-- 1 root root 14 Apr 28 15:05 /etc/modules-load.d/yast.conf

Update:
Suggestions above did not work.
I would still like to resolve this to enable successful manual configure without yast, as yast seems to create too many problems for me with sound configuring.
However, after trying the above, there was a LOT (>3000) Tumbleweed updates for my system.
Since the update, sound works without a restart. Although zypper dup automatically installed modules I had removed, at least

lsa-plugins-pulse-32bit-1.1.9-1.4.x86_64
pulseaudio-module-bluetooth-12.2-6.2.x86_64
pulseaudio-module-zeroconf-12.2-6.2.x86_64
pulseaudio-utils-32bit-12.2-6.2.x86_64

Back to the manual configuration…
I tried first just clearing “/etc/modules-load.d/yast.conf” and rebuilding initrd with"grub2-mkconfig". That did not result in sound upon restart.
Next I tried as per the abovementioned thread of Bjoern Voigt.
The rmmod removed several dependency modules that required adding back.
So for me this is the resulting insmod’s stack required if someone is using insmod rather than modprobe (which calls insmod for also dependencies) for installation:

insmod /lib/modules/5.1.16-1-default/kernel/sound/soundcore.ko
insmod /lib/modules/5.1.16-1-default/kernel/sound/core/snd.ko
insmod /lib/modules/5.1.16-1-default/kernel/sound/core/snd-timer.ko
insmod /lib/modules/5.1.16-1-default/kernel/sound/core/snd-pcm.ko
insmod /lib/modules/5.1.16-1-default/kernel/sound/hda/snd-hda-core.ko
insmod /lib/modules/5.1.16-1-default/kernel/sound/core/snd-hwdep.ko
insmod /lib/modules/5.1.16-1-default/kernel/sound/pci/hda/snd-hda-codec.ko
insmod /lib/modules/5.1.16-1-default/kernel/sound/pci/hda/snd-hda-intel.ko

After installing the modules, removing the contents of “/etc/modules-load.d/yast.conf”, and rebuilding init via “grub2-mkconfig”, alsa still did not work after reboot with /proc/asound/cards showing “no soundcards”.

Maybe I have missed some required step?

So I am not really sure what else the zypper dup did that has it now working, but would like to know so I can destroy the sound files and modules and rebuild them by hand rather than rely on yast.

Any ideas on this?

Also I would still like to blacklist the radeon graphics HDMI audio that uses the same snd_hda_intel module as the mainboard audio, the later of which is the only one I am using.
Any ideas on how to blacklist by card/pci/vendor:device etc rather than module name?

Thanks again

motiv8d

I’ve always used mkinitrd to rebuild intrd. I don’t know, maybe that will work for you, too. Worth a try, right?

Thanks Kerijan2003. I had presumed grub2-mkconfig would also use dracut to mkinitrd.
grub2-mkconfig not doing it would fit with my experience as part of the updates was a new kernel, which would have been built with snd-hda-intel removed already from the yast.conf file.
I will look at testing it directly.

The same on my machine:

erlangen:~ #  lspci | grep -ie snd -ie audio -ie sound
00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller (rev 31)
erlangen:~ # 

The other device may interfere with built in Intel. As a test turn off AMD using “yast sound”:

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│Sunrise Point-H HD Audio │
│ │
│ * Configured as sound card number 0 │
│ * Driver snd-hda-intel

That is my point karlmistelberger.
I DON’T WANT to be using yast for sound. Yast has caused too many problems with sound for me.
So I would like to determine the processes required for sound set up and control on OpenSuse without Yast.

Yast seems to have been confused by multiple cards that use the same snd_hda_intel module.

If I was going to use Yast, thus I would like to know how to blacklist by PCI etc rather than module, because of course blacklisting by module is going to stop all sound.

Yes I read that you don’t want to use YaST. However I suggest that you use YaST for the single purpose of testing your hypothesis:

Yast seems to have been confused by multiple cards that use the same snd_hda_intel module.
Use YaST to turn off all but one sound card and tel the result.

The Radeon is already “off” in the sense it has not been configured.
It is Yast that seems to get it confused.
I currently have sound working.
It breaks periodically when Yast becomes involved, but I cannot isolate exactly why yast breaks it and how.
The inclusion of snd_hda_intel in yast.conf file by yast seems certainly to be a likely part of it though as per comments above.
Your test suggestion serves no purpose I can see as the 2nd card is detected but not configured.

I simply doubt the claims made above.

Try the following (it works perfectly on my machine):

erlangen:~ # cat /etc/modprobe.d/50-sound.conf
**options snd slots=snd-hda-intel**
**alias snd-card-0 snd-hda-intel**
erlangen:~ # 

I have already provided the file /etc/modprobe.d/50-sound.conf in the thread above.
What SPECIFIC claims made above do you “doubt”?

Sure, but your version of /etc/modprobe.d/50-sound.conf diifers.

I doubt the claims regarding YaST. One of my machines easily deals with two sound cards. I managed them with YaST.

What is yours?

erlangen:~ # journalctl -b -o short-monotonic |grep snd
    3.717640] erlangen kernel: snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002)
    3.717813] erlangen kernel: snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
    3.742517] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC892: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:line
    3.742519] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
    3.742520] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
    3.742521] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
    3.742522] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0:    inputs:
    3.742523] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0:      Front Mic=0x19
    3.742524] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0:      Rear Mic=0x18
    3.742525] erlangen kernel: snd_hda_codec_realtek hdaudioC0D0:      Line=0x1a
erlangen:~ # 
erlangen:~ # lsmod|grep snd
snd_hda_codec_hdmi     65536  1
snd_hda_codec_realtek   126976  1
snd_hda_codec_generic    90112  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_intel          53248  7
snd_hda_codec         151552  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core          102400  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               143360  5 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
snd_timer              40960  1 snd_pcm
snd                   102400  21 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm
soundcore              16384  1 snd
erlangen:~ # 

I have not kept up to date on this, but I do recall in earlier openSUSE versions (pre-LEAP) that YaST did not handle 2 sound cards well if BOTH used the snd_hda_intel sound module.

But if that is all one’s issue is, then that was easy to fix with an appropriately edited /etc/modprobe.d/50-sound.conf file. I suspect the same may be true with LEAP.

Take a look at post#9 here: https://forums.opensuse.org/showthread.php/505170-SOUND-ALSA-two-sound-cards-using-the-same-module

or take a look at post#7 here: https://forums.opensuse.org/showthread.php/465666-How-to-order-multiple-sound-cards-with-ALSA-when-some-are-using-the-same-module

I suspect thou, your issue could be more than just having multiple sound devices that use the snd_hda_intel sound.

But if reading the above two links does not sufficiently explain to you how to create a file (outside of yast) to ensure sound devices appropriately assigned, then post here, and I can walk you though this. Its 4.5+ years since I last helped someone do this, but I am confident I can do so again.
.

Thanks for confirming it a problem, and your earlier advice which helped resolve the restart problem. It is working subsequent to removing snd_hda_intel from yast.conf file as you directed in the link you provided earlier, and subsequent to new kernel / initrd.
When yast created the yast.conf file, the 50-sound.conf file was correct, and still is.

But overall, affter negative experiences with Yast sound with this setup and a previous setup which used an Xonar DG card, my preference is to do sound without yast.

Indeed back in the year 2012 (?) timeframe, when I had a PC with two devices that used snd_hda_intel module, sometimes when I rebooted the PC, the device that was sound card-0 would switch to be sound card-1 and the device that was sound card-1 would switch to be sound-card-0. Now I had no speakers connected to one of these two devices so on occasion I would lose sound.

This would mean that an application that was setup with a saved configuration to send sound to sound card-0, would suddenly stop working … until I went to YaST to restart the sound.

The solution was to manually modify the 50-sound.conf file created by YaST, specifying the ‘vid’ and ‘pid’. After the modification, the sound cards never swapped upon a reboot. I used that knowledge to help others.

Note that once one custom edits the 50-sound.conf file with a text editor, one should NOT go to YaST sound as YaST will over write that file with its own settings, and one will lose their custom “vid” and “pid” settings.

Have you tried setting the “vid” and “pid” in your 50-sound.conf file? or do you believe that is not necessary for the problem with sound that you still have (?).

I just dealt with what appears to be the same problem. You can find my shorter thread on it here:

https://forums.opensuse.org/showthread.php/538015-Audio-devices-not-detected-on-boot

Perhaps try getting rid of /etc/modules-load.d/yast.cfg by temporarily moving it to another location. That’s what instantly solved the issue for me.

Hi
Is the alsa-restore.service systemd service enables and running?


systemctl status alsa-restore.service

● alsa-restore.service - Save/Restore Sound Card State
   Loaded: loaded (/usr/lib/systemd/system/alsa-restore.service; static; vendor preset: disabled)
   Active: active (exited) since Mon 2019-10-28 17:06:17 CDT; 50min ago
  Process: 918 ExecStart=/usr/sbin/alsactl restore (code=exited, status=0/SUCCESS)
 Main PID: 918 (code=exited, status=0/SUCCESS)

Oct 28 17:06:17 grover systemd[1]: Starting Save/Restore Sound Card State...
Oct 28 17:06:17 grover systemd[1]: Started Save/Restore Sound Card State.

pinxi -Axx

Audio:     Device-1: Intel 7 Series/C216 Family High Definition Audio driver: snd_hda_intel v: kernel bus ID: 00:1b.0 
           chip ID: 8086:1e20 
           Device-2: NVIDIA GK208 HDMI/DP Audio vendor: ZOTAC driver: snd_hda_intel v: kernel bus ID: 02:00.1 
           chip ID: 10de:0e0f 
           Device-3: NVIDIA GK208 HDMI/DP Audio vendor: ZOTAC driver: vfio-pci v: 0.2 bus ID: 03:00.1 chip ID: 10de:0e0f 
           Sound Server: ALSA v: k5.3.7-1-default 

I did add a HDMI option so it defaults to this via the Display port from the Intel GPU/Sound card.


cat /etc/pulse/default.pa |grep set-default-sink

set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo