[pulseaudio-discuss] [PATCH] alsa: make headset-mic scanned earlier than headphone-mic

Hui Wang hui.wang at canonical.com
Tue May 16 03:21:57 UTC 2017


On some Dell machines with realtek codec, they have a headset audio
jack which supports headphone, headset and pure microphone, but this
audio jack can only detect something is plugged in but doesn't have
capabilites to distinguish what is plugged in. So we need to apply the
fixup similar to ALC298_FIXUP_DELL1_MIC_NO_PRESENCE to the kernel
driver. When something is plugged in, a pop-up dialogue shows up and
users can select what is plugged in.

On some Dell machines (especially desktop computers), they have no
internal microphone, if users plug a headphone and select the
headphone, the headphone is supposed to work, but there is no sound
can be played via headphone.

Through debugging, I found the root cause has something to do with
the active_port of pa-source, since there is no internal microphone,
and there is no other available input devices, the headphone-mic and
headset-mic will be the candidates to be the active_port, and they
have the same priority and headphone-mic is scanned earlier than
headset-mic, so the headphone-mic is set to be the active_port. After
users select the headphone, the function alc_update_headset_mode()
in the kernel driver will be called, in this function it will check
what is the default input device for that jack, if it is
headphone-mic, that means users want this jack to work as a pure
microphone jack, then it will configure the codec and the jack is
changed to be a mic-in jack. As a result even users plug and select
the headphone, but this jack can't work with headphone.

A simple fix for this issue is to exchange the position of
headphone-mic and headset-mic, then the headset-mic will be the
active_port of pa-source if there is no internal microphone and no
other available input devices.

Signed-off-by: Hui Wang <hui.wang at canonical.com>
---
 src/modules/alsa/mixer/profile-sets/default.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/alsa/mixer/profile-sets/default.conf b/src/modules/alsa/mixer/profile-sets/default.conf
index f412058..16ee567 100644
--- a/src/modules/alsa/mixer/profile-sets/default.conf
+++ b/src/modules/alsa/mixer/profile-sets/default.conf
@@ -112,7 +112,7 @@ priority = 2
 device-strings = front:%f
 channel-map = left,right
 paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
-paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
+paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headset-mic analog-input-headphone-mic
 priority = 10
 
 [Mapping analog-surround-21]
-- 
1.9.1



More information about the pulseaudio-discuss mailing list