Sound fix for 5.4 kernel on Apollo Lake
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