[alsa-devel] Headphone Mic and PA

Raymond Yau superquad.vortex2 at gmail.com
Mon Oct 19 18:37:51 CEST 2015


2015-10-19 下午7:20於 "David Henningsson" <david.henningsson at canonical.com>寫道:
>
>
>
> On 2015-10-19 11:53, Takashi Iwai wrote:
>>
>> Hi David,
>>
>> I'm currently checking the bug report regarding PA, and this looks
>> like an issue with "Headphone Mic" jack control.
>>
>> The reported problem is that PA doesn't react properly when both HP
>> and dock line-out jacks are plugged and line-out is unplugged.  The
>> machine in question is Dell E7250, and I see that it has only
>> "Headphone Mic Jack" kctl without "Headphone Jack" kctl.  Is this the
>> intentional behavior?
>
>
> Yes. The "Headphone Mic Jack" indicates that the jack can be used to
indicate either "Headphone" or "Mic". The additional "Headset Mic Phantom
Jack" indicates that headset is a third usage for the jack and there is no
hardware that can detect which one of them it is. So it looks correct to me.
>
> Also the Dell E7250 is Ubuntu certified, but I don't think docking
stations are part of that certification suite (at least not for Dell E7250).
>
> I skimmed through the opensuse bug as well. Two notes:
>
>  1) Here's a guide of how to generate a PA log, avoiding the autospawn
problem: https://wiki.ubuntu.com/PulseAudio/Log
>
>  2) There is a patch series in the pipeline [2] that Tanu has promised to
review, that makes module-switch-on-port-available more aggressive w r t
being able to reroute away from unavailable things. I suspect it would help
here, but I'm not completely sure.

control.13 {
iface MIXER
name 'Capture Source'
value 'Internal Mic'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'Headphone Mic'
item.1 'Dock Mic'
item.2 'Headset Mic'
item.3 'Internal Mic'
}
}

Do alc_headset mode still work when there is dock mic ?

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda?id=73bdd597823e2231dc882577dbbaf8df92fe1775

hda_nid_t mux_pin = spec->gen.imux_pins[spec->gen.cur_mux[0]];
hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];

int new_headset_mode;

if (!snd_hda_jack_detect(codec, hp_pin))
new_headset_mode = ALC_HEADSET_MODE_UNPLUGGED;
else if (mux_pin == spec->headset_mic_pin)
new_headset_mode = ALC_HEADSET_MODE_HEADSET;
else if (mux_pin == spec->headphone_mic_pin)
new_headset_mode = ALC_HEADSET_MODE_MIC;
else
new_headset_mode = ALC_HEADSET_MODE_HEADPHONE;

https://bugzilla.kernel.org/show_bug.cgi?id=104901

The other examples are Dell Alienware 18 which have mic jack, headphone
jack and headset jack :


More information about the Alsa-devel mailing list