# Kernel 4 STILL broken...

## The_Great_Sephiroth

It has been ages since we got kernel 4 in Gentoo, and to this day the ALSA in kernel 4 breaks sound on my system. I get NOTHING unless I hook up external speakers. Since this is a laptop with built-in stereo speakers, this is an issue. I see no errors or ALSA-related output in my logs, and there are no new kernel options for my soundcard in the kernel configuration, so what gives? I have no clue how to troubleshoot this beyond masking all kernels >= 4.0, which is a bad solution. Where do I begin?

----------

## Buffoon

I'd boot with some fairly new Linux liveCD and see if sound works.

----------

## Hu

Sound works fine for me in kernel 4.1.x.  Whatever is broken is limited to select systems.  I suspect this is why no one has fixed it: no one who can fix it has been provided with an adequate bug report.  Try to identify the specific kernel commit that breaks sound for you.

----------

## The_Great_Sephiroth

Every version of kernel 4 kills my internal speakers. There is no specific commit. It is kernel 4, period. Here is some output.

```

00:00.0 Host bridge [0600]: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub [8086:2a40] (rev 07)

        Subsystem: Dell Mobile 4 Series Chipset Memory Controller Hub [1028:0233]

        Kernel driver in use: agpgart-intel

00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a42] (rev 07)

        Subsystem: Dell Mobile 4 Series Chipset Integrated Graphics Controller [1028:0233]

        Kernel driver in use: i915

00:02.1 Display controller [0380]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a43] (rev 07)

        Subsystem: Dell Mobile 4 Series Chipset Integrated Graphics Controller [1028:0233]

00:19.0 Ethernet controller [0200]: Intel Corporation 82567LM Gigabit Network Connection [8086:10f5] (rev 03)

        Subsystem: Dell 82567LM Gigabit Network Connection [1028:0233]

        Kernel driver in use: e1000e

00:1a.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB UHCI Controller [1028:0233]

        Kernel driver in use: uhci_hcd

00:1a.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB UHCI Controller [1028:0233]

        Kernel driver in use: uhci_hcd

00:1a.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB UHCI Controller [1028:0233]

        Kernel driver in use: uhci_hcd

00:1a.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 [8086:293c] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB2 EHCI Controller [1028:0233]

        Kernel driver in use: ehci-pci

00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) HD Audio Controller [1028:0233]

        Kernel driver in use: snd_hda_intel

00:1c.0 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 [8086:2940] (rev 03)

        Kernel driver in use: pcieport

00:1c.1 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 [8086:2942] (rev 03)

        Kernel driver in use: pcieport

00:1c.2 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 [8086:2944] (rev 03)

        Kernel driver in use: pcieport

00:1c.3 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 [8086:2946] (rev 03)

        Kernel driver in use: pcieport

00:1d.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB UHCI Controller [1028:0233]

        Kernel driver in use: uhci_hcd

00:1d.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB UHCI Controller [1028:0233]

        Kernel driver in use: uhci_hcd

00:1d.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB UHCI Controller [1028:0233]

        Kernel driver in use: uhci_hcd

00:1d.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 [8086:293a] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) USB2 EHCI Controller [1028:0233]

        Kernel driver in use: ehci-pci

00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev 93)

00:1f.0 ISA bridge [0601]: Intel Corporation ICH9M-E LPC Interface Controller [8086:2917] (rev 03)

        Subsystem: Dell ICH9M-E LPC Interface Controller [1028:0233]

        Kernel driver in use: lpc_ich

00:1f.2 SATA controller [0106]: Intel Corporation 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] [8086:2929] (rev 03)

        Subsystem: Dell 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] [1028:0233]

        Kernel driver in use: ahci

00:1f.3 SMBus [0c05]: Intel Corporation 82801I (ICH9 Family) SMBus Controller [8086:2930] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) SMBus Controller [1028:0233]

        Kernel driver in use: i801_smbus

03:01.0 FireWire (IEEE 1394) [0c00]: Ricoh Co Ltd R5C832 IEEE 1394 Controller [1180:0832] (rev 04)

        Subsystem: Dell R5C832 IEEE 1394 Controller [1028:0233]

        Kernel driver in use: firewire_ohci

03:01.1 SD Host controller [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter [1180:0822] (rev 21)

        Subsystem: Dell R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter [1028:0233]

        Kernel driver in use: sdhci-pci

03:01.2 System peripheral [0880]: Ricoh Co Ltd R5C843 MMC Host Controller [1180:0843] (rev 11)

        Subsystem: Dell R5C843 MMC Host Controller [1028:0233]

        Kernel driver in use: sdhci-pci

0c:00.0 Network controller [0280]: Intel Corporation WiFi Link 5100 [8086:4232]

        Subsystem: Intel Corporation WiFi Link 5100 AGN [8086:1321]

        Kernel driver in use: iwlwifi

```

Works in 3.x, fails on all versions of 4.x. It has me stumped.

----------

## krinn

read https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt

many laptop have broken or weird implementation and need a special model pass to the driver.

----------

## The_Great_Sephiroth

I have not had to pass a model to the driver in 2.x or 3.x, but even so, how would I know which model to pass. None of the information in the file you linked says anything about a Latitude E6400 laptop. I am currently in 3.18.25 where sound works, but I build the codec into the kernel. I like having my laptop hardware in my kernel, and let pluggable hardware be built as modules.

*UPDATE*

The Dell website lists this as an IDT 92HDxxx, but it does not say which exact model.

*UPDATE*

Forgot I could do this.

```

~ $ head -1 /proc/asound/card0/codec#0

Codec: IDT 92HD71B7X

~ $ head -1 /proc/asound/card0/codec#1

Codec: Conexant ID 2c06

~ $ head -1 /proc/asound/card0/codec#2

Codec: Intel Cantiga HDMI

```

However, the STAC92HD71B* section in the file you linked has nothing about the laptop version of this card.

----------

## Hu

 *The_Great_Sephiroth wrote:*   

> Every version of kernel 4 kills my internal speakers. There is no specific commit. It is kernel 4, period.

 I assume you phrased it this way because you are frustrated and unwilling to answer the question accurately.  There is always a first-bad commit, whether or not you know its name.  A literal reading of your statement is that you believe v4.0-rc1, the first kernel to call itself 4.x, breaks your sound.  This is unlikely, since it was only a Makefile change; no code changes were included.  You could try reverting that commit to check whether it is the problem.  As usual, a git bisect run is your best bet.

----------

## The_Great_Sephiroth

Sorry, I wasn't frustrated, just not thinking like you are. I meant it as, since the very first version marked as stable in Gentoo, my sound has not worked. I do not remember the first version which showed up when I did "emerge --sync && emerge -avuND --with-bdeps=y @world", but whatever it was, that was when the sound issue cropped up. It still works flawlessly on 3.18.xx though.

As for git, I am NOT a git guy. I can do a few basics, that's it. If you can explain to me how to emerge the various versions, I can do that. I am thinking "emerge -av gentoo-sources-4.0-rc1", but am probably off here.

----------

## Hu

You cannot use emerge for this purpose.  The Gentoo developers package only specific milestones likely to be of interest to the general userbase.  You need to visit points between those milestones.  Git bisect will pick points for you to test, then you build those intermediate versions and tell Git whether the bug was present in that version.  Based on your feedback, Git will pick another version to test.  This iterates until it has found a specific commit that caused the problem.

----------

## Buffoon

Bisecting is fun of course (I bisected MythTV backend once, that was extra fun because the database version cannot be downgraded). However, make oldconfig can sometimes get things wrong, in particular if some option has been moved. Did you verify all options are still correct in version 4? My 2¢.

----------

## khayyam

 *The_Great_Sephiroth wrote:*   

> As for git, I am NOT a git guy. I can do a few basics, that's it. If you can explain to me how to emerge the various versions, I can do that. I am thinking "emerge -av gentoo-sources-4.0-rc1", but am probably off here.

 

The_Great_Sephiroth ... there is a guide to git-bisecting the kernel on the wiki, and Rob Landley's instructions might also be of help.

best ... khay

----------

## Yamakuzure

Your output says:

```
00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)

        Subsystem: Dell 82801I (ICH9 Family) HD Audio Controller [1028:0233]

        Kernel driver in use: snd_hda_intel
```

Google (Keywords: "Dell 82801I (ICH9 Family) HD Audio Controller [1028:0233]") leads to the Linux Hardware Database Entry saying the Model is "Latitude E6400". (check!)

Using google again (Keywords "linux kernel intel HD driver Latitude E6400") leads to the Arch Wiki Entry for your hardware stating in section "Audio" to use:

```
$ cat /etc/modprobe.d/modprobe.conf 

options snd-hda-intel model=dell-m4-1
```

That one is listed under "STAC92HD71B*" in the already linked HD-Audio-Models.txt.

But the Arch Wiki only goes up to kernel 3.18.

So looking into the kernel-4.3.5 menuconfig there is:

```
Device Drivers ->

    Sound Card Support ->

        Advanced Linux Sound Architecture ->

            HD Audio ->

                Build IDT/Sigmatel HD-audio codec support
```

Which has "STAC9200" as an example what to drive with it.

So if you have the correct model set up (see above) and the IDT driver build (as a module) it should work.

If not, the output of "alsamixer" might be illuminating, because it lists the exact chips for each sound cards detected.

----------

## The_Great_Sephiroth

Yamakuzure, I did not realize that the m4-1 model applied to my system. I have never had to specify it before. Things always just worked. I had searched various combinations before, but never came up with that result. I'll try it now and post the results.

----------

## Yamakuzure

I hope it helped! I keep my fingers crossed for you!

But there is one thing I forgot: When sound did not want to work on my DELL (Precision M4800) I found out that the sound system did not like me to just enable all the codecs and let the driver chose the right one. My system needs the REALTEK codec, but whenever I built SIGMATEL or CMEDIA, too, the sound card just went silent.

So if it does not work, make sure you only have the codecs enabled you need.

On my machine it looks like this, and I guess you just need SIGMATEL and CONEXANT instead of REALTEK

```
 /usr/src/linux # grep -P "SND_HDA_(INTEL|CODEC)" .config

CONFIG_SND_HDA_INTEL=m

CONFIG_SND_HDA_CODEC_REALTEK=m

CONFIG_SND_HDA_CODEC_ANALOG=m

# CONFIG_SND_HDA_CODEC_SIGMATEL is not set

# CONFIG_SND_HDA_CODEC_VIA is not set

CONFIG_SND_HDA_CODEC_HDMI=m

# CONFIG_SND_HDA_CODEC_CIRRUS is not set

# CONFIG_SND_HDA_CODEC_CONEXANT is not set

# CONFIG_SND_HDA_CODEC_CA0110 is not set

# CONFIG_SND_HDA_CODEC_CA0132 is not set

# CONFIG_SND_HDA_CODEC_CMEDIA is not set

# CONFIG_SND_HDA_CODEC_SI3054 is not set
```

And apart from that, I do not think you really *must* specify the model.

What if you hit another issue, that your sound devices are detected in the wrong order?

I had that and the solution was to switch the ordering by hand: (I have HDMI and PCH. You have HDMI, PCH, and what is the Conexant device?)Tell the kernel in which order your sound devices should be:

```
 $ grep snd /etc/conf.d/modules

module_snd_hda_intel="id=HDMI,PCH index=1,0 enable_msi=1"
```

"id" lists the devices as they are detected. "index" assigns new index values.Tell ALSA that exact ordering and the correct number of sound cards:

```
 $ grep option /etc/modprobe.d/alsa.conf

options snd-hda-intel id=HDMI,PCH index=1,0 enable_msi=1

options snd cards_limit=2
```

The same here with "id" and "index". The goal is to have PCH as device 0 (the default) and HDMI as device 1.But I do not know how the Conexant device fits into this.

So how did I found out how the "id" list above must look? With dmesg:

```
 $ dmesg | grep HDA

[    7.098771] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card1/input10

[    7.098814] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card1/input11

[    7.098853] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card1/input12

[    7.104557] input: HDA Intel PCH Line Out as /devices/pci0000:00/0000:00:1b.0/sound/card0/input13

[    7.104598] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input14
```

So the first card detected is HDMI. And before I changed the ordering above, it got assigned to card0.

The second was PCH, assigned to card1. For a mobile laptop that was just wrong.

To really confirm, that the ordering is correct, you can use asound:

```
 # LC_ALL=C aplay -l

**** List of PLAYBACK Hardware Devices ****

card 0: PCH [HDA Intel PCH], device 0: ALC3226 Analog [ALC3226 Analog]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 1: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 1: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 1: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]

  Subdevices: 1/1

  Subdevice #0: subdevice #0
```

On your system there should be a third device listed. With the options above, you can order them exactly like you need them.

----------

