PCH sound card trashed after kernel upgrade

Hi all,

After the latest kernel upgrade (4.6.0), I lost sound from my Intel PCH “card”, and it was no longer configured in YaST, nor was it selectable in pavucontrol (it is just completely missing here). When I try to auto-configure with YaST, I receive the following error message “The kernel module snd-hda-intel for sound support could not be loaded. This can be caused by incorrect module parameters, including invalid IQ or IRQ parameters”. Curiously, if I “delete” the HDMI sound card (listed as Xeon E3-1200 v3 HD Audio Controller), I can successfully configure the PCH “card” (listed as 8 Series/C220 Series Chipset HDA Controller), yet it still appears as HDMI sound and does nothing. The PCH “card” is not listed under /proc/asound/cards, nor aplay -l either! I have tried reinstalling alsa, pulseaudio and downgrading my kernel to 4.5.2-1, all to no avail. Interestingly, sound has also stopped working on the other side of my dual boot (that is never used), though I am fairly certain this is not a hardware issue (so presumably is some trashed firmware?).

Here are some possibly useful diagnostics:

asound/cards:


$ cat /proc/asound/cards
 0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                      HDA Intel HDMI at 0xf7a34000 irq 32

aplay:


$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

and from a working version (exact same laptop model, running an old ubuntu)


$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC292 Analog [ALC292 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

yet, here is the missing card under lspci:


$ lspci | grep Audio
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 04)

alsainfo link: http://www.alsa-project.org/db/?f=63831b67a3a31fbf9ec7f2c2a55f671f6fd216ea

EDIT: the most relevant lines of alsainfo are probably these dmesg’s:

 
   14.157843] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
   14.161161] snd_hda_intel 0000:00:1b.0: no codecs found!

Could anyone give me some advice regarding the next steps to take?

Thanks in advance.

Its clear Alsa only recognizes your HDMI device:


!!Soundcards recognised by ALSA
!!-----------------------------

 0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                      HDA Intel HDMI at 0xf7a34000 irq 32

the dmesg indicates problem finding the hardware audio codec for one of your sound devices (likely the analogue sound). According to your post on a Ubuntu setup the hardware audio codec is an alc292. The alc292 options for an earlier kernel version are:


ALC269/270/275/276/28x/29x
======
  laptop-amic        Laptops with analog-mic input
  laptop-dmic        Laptops with digital-mic input
  alc269-dmic        Enable ALC269(VA) digital mic workaround
  alc271-dmic        Enable ALC271X digital mic workaround
  inv-dmic        Inverted internal mic workaround
  headset-mic        Indicates a combined headset (headphone+mic) jack
  lenovo-dock       Enables docking station I/O for some Lenovos
  dell-headset-multi    Headset jack, which can also be used as mic-in
  dell-headset-dock    Headset jack (without mic-in), and also dock I/O

and if the below does not work, we could try to force a hardware audio codec one at a time. But first, lets try something else:

From the script, as you note, its clear your PC has two separate sound cards one analog and one the HDMI :


!!PCI Soundcards installed in the system
!!--------------------------------------

00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 04)

and further


!!Advanced information - PCI Vendor/Device/Subsystem ID's
!!-------------------------------------------------------

00:03.0 0403: 8086:0c0c (rev 06)
    Subsystem: 1028:05cc
--
00:1b.0 0403: 8086:8c20 (rev 04)
    Subsystem: 1028:05cc

Now you have stated the C220 Series Chipset is your analog sound card.

So based on that try the following for force the C220 to be sound card-0 … replace any existing /etc/modprobe.d/50-sound.conf file (or create a new one as appropriate) with the following:


options snd_hda_intel index=0 vid=8086 pid=8c20
options snd_hda_intel index=1 vid=8086 pid=0c0c

reboot and test.

The idea here is :

  1. I am speculating (and I could be wrong) that snd_hda_intel is the alsa driver for your PCH, and
  2. I am speculating it is conflicting with the HDMI snd_hda_intel instance upon loading, and
  3. I am trying to force the analog sound device to be card-0, where card-o is the default sound device.

The above may make it worse. In which case delete the 50-sound.conf you created, and reboot and you should be back to where you were at the start of this post.

If the above fails, let me know, and then I will give you syntax to use in the 50-sound.conf to force a hardware audio codec for an alc292.

Note - whether this works or does not work, you should write a bug report on the Tumbleweed kernel.

Thanks for the quick and detailed reply!

This did not work, the HDMI card is now set to index 1 as expected but still the PCH card is missing. Do you now mean adding model=foo to the 50-sound.conf?

Will do!

Yes.

Recall this from the HD-Audio-Models.txt in the /usr/src/your-kernel/Documentation/sound/alsa on your PC:


ALC269/270/275/276/28x/29x
======
  laptop-amic        Laptops with analog-mic input
  laptop-dmic        Laptops with digital-mic input
  alc269-dmic        Enable ALC269(VA) digital mic workaround
  alc271-dmic        Enable ALC271X digital mic workaround
  inv-dmic        Inverted internal mic workaround
  headset-mic        Indicates a combined headset (headphone+mic) jack
  lenovo-dock       Enables docking station I/O for some Lenovos
  dell-headset-multi    Headset jack, which can also be used as mic-in
  dell-headset-dock    Headset jack (without mic-in), and also dock I/O

Try this for the 50-sound.conf:


options snd-hda-intel laptop-amic enable=1 index=0
options snd-hda-intel index=0 vid=8086 pid=8c20
options snd-hda-intel index=1 vid=8086 pid=0c0c

reboot and test.

Its possible I have the syntax wrong. Maybe instead of “snd-hda-intel” it should be “snd_hda_intel” . I don’t know if it matters.

If that hardware audio codec fails, try instead


options snd-hda-intel laptop-dmic enable=1 index=0
options snd_hda_intel index=0 vid=8086 pid=8c20
options snd_hda_intel index=1 vid=8086 pid=0c0c

try each and every one of the hardware audio codecs in the HD-Audio-Models.txt file. Even the ones for the alc269 and alc271. Test after each change.

I’m also curious to see the /usr/sbin/alsa-info.sh script output for one of the failures.
.

and maybe this will work better:


options snd-hda-intel index=0 vid=8086 pid=8c20 model=laptop-amic
options snd-hda-intel index=1 vid=8086 pid=0c0c

I’ve never tried to do this all in one line before.

If I leave in the vid’s and pid’s, dmesg tells me they are ignored as unrecognised options. Trying without them yields the same error as before:


   14.099422] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
   14.102276] snd_hda_intel 0000:00:1b.0: no codecs found!

I shall keep fiddling with various combinations from the wiki (SDB:Intel-HDA sound problems - openSUSE Wiki for anyone else reading this).

Do not leave a backup file in /etc/modprobe.d/ as that could be read and actioned (replacing what is in the 50-sound.conf) even though the name is different.

When you say “leave in the vid’s and pid’s, … they are ignored” I do not know what you mean by ‘they’ ? I know its obvious to you, but my english is not as good and I interpret an ambiguity in your answer. do you mean ‘they’ as in the pid/vid value ? or ‘they’ as in the option selection of the hardware-audio codec? What syntax did you try ? I gave you a couple to try.

Be careful with the examples in that link as you could end up totally wasting your time.

The list I provided is the correct list if your laptop is 100% identical to the one you noted that has Ubuntu working with an alc292, … and the combinations in list link you provided are not correct for an alc292.

Noted.

Sorry, I should have been clearer. When using this config:

options snd-hda-intel index=0 vid=8086 pid=8c20 model=laptop-amic
options snd-hda-intel index=1 vid=8086 pid=0c0c

I get these errors in dmesg:


   13.696640] snd_hda_intel: unknown parameter 'vid' ignored
   13.696644] snd_hda_intel: unknown parameter 'pid' ignored
   13.696647] snd_hda_intel: unknown parameter 'vid' ignored
   13.696648] snd_hda_intel: unknown parameter 'pid' ignored
   13.697157] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
   13.700538] snd_hda_intel 0000:00:1b.0: no codecs found!

Again, I should have been clearer! I just meant different models from the list for alc292, with various combinations of other parameters like index, single_cmd etc.

I’ve now tried all of the possible models in the list you gave so I’m really back at square one.

I don’t understand why the vid/pid are ignored. Try instead


options snd-hda-intel index=0,1 vid=8086,8086 pid=8c20,0c0c

rebooot and test.

If that gets rid of the vid/pid then try two different options :


options snd-hda-intel model=laptop-amic index=0,1 vid=8086,8086 pid=8c20,0c0c

or


options snd-hda-intel index=0,1 vid=8086,8086 pid=8c20,0c0c
options snd-hda-intel laptop-amic index=0

In each case you need to reboot and test.

I’m speculating here - trying to find a syntax that will be accepted. And when I start speculating like that, it tells me your best bet is to raise a bug report. There is guidance here: openSUSE:Submitting bug reports - openSUSE Wiki - you can use your openSUSE forum username and password when logging on to Bugzilla. The advantage of raising a bug report is it gets the attention of the openSUSE sound packager who is also a developer of the alsa sound driver. If anyone can tell you how to fix this, he can tell you.

.
.

None of those worked I’m afraid. I’ll have a read and raise a bug report when I get time.

Thanks for all your help! I’ll post back here with a solution if I get one.

Note by raising the bug report you obtain the attention of an individual who codes the alsa sound driver. They will work with to quickly address this. Hence there could be immediate benefit to get this working if you raise the bug report.

I have read of users claiming ‘snoop=0’ addition works for them with your hardware, albeit I am sceptical. Still you could try only the following line in the /etc/modprobe.d/50-sound.conf :


options snd-hda-intel index=0 model=laptop-amic vid=8086 pid=8c20 snoop=0 

and cycle through each of the model options (rebooting for each test). My own suspicion is that will not work - but its something you could try.

Again - a bug report could get you a very quick fix (in this particular case).