Comment 564 for bug 1958019

Revision history for this message
In , info (info-linux-kernel-bugs) wrote :

(In reply to darnellkeithj from comment #375)
> Thought i'd reinstall linux to see if there were any changes with this Yoga
> Duet 7i. Still no sound with the newer kernels but 5.4.88-1-lts with Arch
> "Arco"linux does works every time. Microphone does not work. Why it works in
> 5.488-1-lts and not newer is beyond me. Why devs haven't compared the two
> and fixed it is also puzzling.

Hi all,

New Lenovo Yoga Duet 7 13IML05 (2020) user here. The Duet 7 is a really nice, light and compact 13-inch tablet, ideal for triple-booting Windows, Linux and macOS. The only issue currently with this device is getting the ALC287 sound chip to work in Linux and macOS.

I confirm darnellkeithj's findings that the sound output (speakers and headphones) works out of the box with the Arch kernel up to and including 5.4.88-1-lts. I'm actually using Manjaro Linux for testing, which allows installing several kernels and switching easily between them. Older Arch kernels may be downloaded from the Arch Linux Archive at https://archive.archlinux.org/packages/l/linux-lts/ and https://archive.archlinux.org/packages/l/linux/.

Kernel 5.4.89 breaks sound output on the Yoga Duet 7 because of the following commit:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/diff/releases/5.4.89/alsa-hda-realtek-fix-speaker-volume-control-on-lenovo-c940.patch?id=1889f9ac9f9eb7f91ffc22e607a2e3db3db2e72e
For some odd reason, the Lenovo Yoga C940 seems to be using the same audio subsystem ID 0x17aa, 0x3818 as the Yoga Duet 7, so any quirk applied to the C940 will apply to the Duet 7 as well, even if it is not required. Reverting this commit fixes the sound output for kernels up to and including 5.4.98-1-lts. Kernels 5.x break sound output again, even with this commit reverted... So this is not an optimal approach.

However, I found an easy way for fixing the sound output (speakers and headphones) on the Yoga Duet 7. The cool thing is that it doesn't require compiling a custom kernel. Sadly, the fix works only for kernels up to and including 5.10.1.
Simply disable the snd-sof-pci driver and force the use of the legacy snd-hda-intel driver by adding the following two lines to /etc/modprobe.d/alsa-base.conf
"blacklist snd-sof-pci"
"options snd-intel-dspcfg dsp_driver=1"

With both solutions, the digital microphone won't work at all, as it requires the SOF firmware.
The mic is detected and works perfectly on newer kernels (> 5.9.x) when using the SOF firmware. The headphones work as well, only the speakers won't emit any sound.

Basically, you have to choose between having a mic or having a speaker.
No microphone is fine for me and kernel 5.10.1 is quite modern, so I could live with the situation for the time being.

I'll play around with the Realtek verbs in the next few days to find a real solution, as the above fixes are dead ends.

I'd be very glad to receive some input from the other Yoga Duet 7 owners.

Cheers for now!