Bug 208145

Summary: Thinkpad X1 Yoga gen 4: audio jack input source not working
Product: Drivers Reporter: Nate Graham (nate)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: RESOLVED CODE_FIX    
Severity: normal CC: cousinmarc, daniel-other+bugzillakernel
Priority: P1    
Hardware: All   
OS: Linux   
See Also: https://bugzilla.kernel.org/show_bug.cgi?id=208139
https://bugzilla.kernel.org/show_bug.cgi?id=208133
https://bugzilla.kernel.org/show_bug.cgi?id=208211
Kernel Version: 5.6.14 Subsystem:
Regression: No Bisected commit-id:
Attachments: Output of `pacmd list-cards`

Description Nate Graham 2020-06-12 00:19:40 UTC
Created attachment 289629 [details]
Output of `pacmd list-cards`

I have Kernel 5.6.14, sof-firmware, and PulseAudio 14 built from source.

When I plug a headset with a microphone into this machine's audio jack, the headset microphone is not used. PulseAudio says it's still inactive/unplugged, and the audio source continues to draw from the built-in microphone array instead.

ALSA info is available at http://alsa-project.org/db/?f=f8f00ab594ae7d998aa2a8002dd5202ab1137b4b

Apologies if I've filed this in the wrong place and it's actually a PulseAudio issue, or an issue at some other part of the audio stack.
Comment 1 Daniel 2020-06-16 14:37:29 UTC
With kernel 5.7.2 (arch), the latest sof-firmware and pulseaudio 13, the switch works correctly for me. It isn't possible however to switch the microfon ports (so that the builtin microfon is used, even when a headset is plugged in). 

So I think it's a pulseadio issue.
Comment 2 Nate Graham 2020-06-16 18:20:09 UTC
I found a way to make the audio jack microphone work!

1. Open/create the file /etc/modprobe.d/alsa.conf and add the following line to it:
> options snd_hda_intel index=0 model=dell-headset-multi
2. Reboot
3. Mute the microphone using the hardware mic mute button on the keyboard

Thereafter, plugging in a headset with a microphone will activate the audio jack's microphone input and you can record from it.

However due to Bug 208211, the two microphones are represented as multiple devices rather than multiple ports of the same device, so automatic switching only works if you have the PulseAudio switch-on-connect module in use.

Either way, whatever kernel behavior `options snd_hda_intel index=0 model=dell-headset-multi` enables maybe should be the default for this device.
Comment 3 Nate Graham 2020-06-16 18:22:50 UTC
*** Bug 208139 has been marked as a duplicate of this bug. ***
Comment 4 Daniel 2020-06-16 23:24:23 UTC
I can somehow reproduce on my Thinkpad X1 Yoga 4th, with Linux 5.7.2-arch1-1, sof-firmware, and pulseaudio-git from aur (which is version 13.99.1-36-g9315b)

However, it works fine if you:

Situation A:
1. start pulseaudio with headset plugged in
2. unplug the headset
3. replug it.

In this Situation, the profile gets correctly switched to "Stereo out+stereo input")

What I wrote earlier: 

> It isn't possible however to switch the microfon ports (so that the builtin
> microfon is used, even when a headset is plugged in).

still applies to situation A with pulseaudio-git for me.


I can preproduce the issue using the following:

Situation B:
1. Start with situation A.
2. In KDE, open the sound kcm, the tab where you can set the sound profile.
3. without changing anything, plug out and in the headset.

In this situation, the switch doesn't happen (the profile stays in "stereo output+multi channel input")

To get back to Situation A from Situation B, you have to kill pulseaudio.

Now I'm pretty confident, this is a pulseaudio/KDE bug.
Comment 5 Nate Graham 2020-10-12 00:31:09 UTC
This is fixed for me with no manual workarounds needed with kernel 5.8.12+ and sof-firmware. Great work everyone!