[PATCH] ALSA: hda/realtek: add more delay time before determine_headset_type
Hui Wang
hui.wang at canonical.com
Wed Mar 17 03:15:17 CET 2021
On 3/16/21 10:17 PM, Takashi Iwai wrote:
> On Tue, 16 Mar 2021 12:55:49 +0100,
> Hui Wang wrote:
>> We found a recording issue on the headset-mic recently, sometimes
>> users plug a headset and select headset-mic from UI, but can't record
>> any sound from headset-mic. The root cause is the
>> determine_headset_type() returns a wrong type, e.g. users plug a ctia
>> type headset, but that function returns omtp type.
>>
>> In the past, determine_headset_type() worked well because the internal
>> mic is connected to the codec, so the "Input Source" or
>> "Capture Source" is internal mic by default when users plug a headset,
>> the determine_headset_type() will not be called unless users select
>> headset-mic from UI, when users select headset-mic, the plugging
>> action already finished and the headset is completely plugged into the
>> jack, so determine_headset_type() could return a correct type.
>>
>> But more and more machines connect the internal mic to the PCH now,
>> and the "Input Source" is headset mic by default, when users plug a
>> headset, the determine_headset_type() will be called immediately, if
>> the headset is not completely plugged in, it will return a wrong type.
>>
>> Here add 2s delay before calling determine_headset_type(), and since
>> there is a pop-up dialogue when users do plugging action, to avoid
>> freezing the UI, use the deleyed_work to call that function.
> Hm, two seconds are quite long, IMHO. How is this delay determined?
>
>
> Takashi
Two seconds delay is for a latest Dell AIO machine, and this issue is
exposed on that machine. The audio jack is designed to the left side of
that AIO machine, users need to use left hand to plug a headset, and
since it is an AIO, it is similar to plug sth to the left side on a
monitor, users usually don't use the great force to plug otherwise they
could introduce the movement of monitor; sometimes they use left hand to
plug a headset, the headset is not 100% plugged in, meanwhile they need
to put the right hand to the right side of the monitor to fix the
monitor. All these actions make the plugging not finished as fast as on
laptops or normal desktops. Our QA tested different delays, it has a
pretty good chance to return the correct type after adding two seconds
delay on that AIO machine. And I guess all Dell AIO machines will face
the same issue since they all have multi-function audio jack.
And I did a test on some Dell laptops, on which the internal mic
connects to the PCH, if I plug the headset a bit slower than normal
speed on purpose, the determine_headset_type() has some chance to return
the wrong type and make the headset-mic can't record sound. Adding two
seconds delay could make them work more stable.
Thanks,
Hui.
More information about the Alsa-devel
mailing list