site  contact  subhomenews

Sound fix for 5.4 kernel on Apollo Lake

December 10, 2019 — BarryK

I have posted about sound being broken on my Acer Aspire 1 laptop, model A114-31-C014. Booting EasyOS with the 5.4.1 or 5.4.2, the kernel reports no sound devices:

https://bkhome.org/news/201912/kernel-541-audio-broken-on-aspire1-laptop.html

There was a fix reported on an Arch Linux forum, however that was a different problem:

https://bkhome.org/news/201912/audio-fix-for-54x-kernel.html

Many days have been spent trying to fix this, but I got up this morning determined to give it another go. I examined the kernel modules loaded by the 5.2.21 kernel, compared with the 5.4.2 kernel, and began a process of elimination.

I found a module that is loading and breaking sound, 'snd_soc_skl':

# lspci -nnk
...
00:0e.0 Audio device [0403]: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster [8086:5a98] (rev 0b)
Subsystem: Acer Incorporated [ALI] Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster [1025:1195]
Kernel driver in use: snd_soc_skl
Kernel modules: snd_soc_skl, snd_hda_intel
...

'snd_soc_skl' is for the Sky Lake CPU, it should not be loading for my Apollo Lake N3450 CPU.

After removing that module, running 'depmod' and rebooting:

00:0e.0 Audio device [0403]: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster [8086:5a98] (rev 0b)
Subsystem: Acer Incorporated [ALI] Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster [1025:1195]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel

...and sound works. Now I need to find where to report this... 

EDIT 2019-12-17:
As you can see above, there are two contending modules to control sound, 'snd_soc_skl' and 'snd_hda_intel'. Running "lsmod" shows that the former loads first, so has precedence. The solution, for my laptop anyway, is to change order of loading. I created /etc/modprobe.d/intel-snd-fix.conf with this in it:

softdep snd_soc_skl pre: snd_hda_intel

I have also contacted some of the guys who do commits to Intel Sky Lake sound driver, and got this reply from Pierre:

This snd-soc-skl driver is only recommended on APL for Chromebooks.
The automatic detection we added in 5.4 should not select the snd-soc-skl driver, please provide a full dmesg log with dynamic debug enabled for all intel code.

I presume that "dynamic debug" will have to be enabled in the configuration when compile the kernel. Don't know if or when I will do that. It has fallen down on my priority list as I have a fix, for my laptop anyway. 

Tags: easy