2012/3/1, Kevin Hilman khilman@ti.com:
Raymond Yau superquad.vortex2@gmail.com writes:
Does your headset/mic has a TRRS (Tip, ring, ring, sleeve) connector instead of TRS (Tip, ring, sleeve) connector ?
Yes. It's TRRS.
But below, I tried with a normal stero headset (no mic) which has a TRS connector too.
You can use David's hda-jack-sense-test to find out any jack sense at the node of External mic when you plug the headset , if not , you may need to modify unsol event of headphone to select the external mic , internal mic.
Here are the results of hda-jack-sense-test
Nothing plugged in:
# hda-jack-sense-test -a Pin 0x09 (Green HP Out): present = No Pin 0x0a (Not connected): present = No Pin 0x0b (Internal Speaker): present = No Pin 0x0c (Not connected): present = No Pin 0x0d (Internal Mic): present = No Pin 0x0e (Not connected): present = No Pin 0x0f (Not connected): present = No Pin 0x10 (Not connected): present = No Pin 0x12 (Not connected): present = No Pin 0x15 (Not connected): present = No
With regular stereo headphones with (*no* mic, TRS):
# hda-jack-sense-test -a Pin 0x09 (Green HP Out): present = Yes Pin 0x0a (Not connected): present = No Pin 0x0b (Internal Speaker): present = No Pin 0x0c (Not connected): present = No Pin 0x0d (Internal Mic): present = No Pin 0x0e (Not connected): present = No Pin 0x0f (Not connected): present = No Pin 0x10 (Not connected): present = No Pin 0x12 (Not connected): present = No Pin 0x15 (Not connected): present = No
Finally, plugging the headset w/mic (TRRS):
root@eze:~# hda-jack-sense-test -a Pin 0x09 (Green HP Out): present = Yes Pin 0x0a (Not connected): present = No Pin 0x0b (Internal Speaker): present = No Pin 0x0c (Not connected): present = No Pin 0x0d (Internal Mic): present = No Pin 0x0e (Not connected): present = No Pin 0x0f (Not connected): present = No Pin 0x10 (Not connected): present = No Pin 0x12 (Not connected): present = No Pin 0x15 (Not connected): present = No
As you can see, there's no detected difference between the TRS and TRRS headsets, which is the root of the problem.
can you post the output of alsa-info.sh ?
In the codec info, do you find Misc bit of pin defaults of the node [jack] Mic at Ext is set ? (i.e. Misc = NO_PRESENCE ) ?
you need to add the mic select code to the unsolicited event of hp automute speaker
present = snd_hda_jack_detect(codec, 0x9) ; if (present) select ext mic else select int mic
Since this is a MacBookAir, it dual-boots OSX, and the detection works just fine using the same headset under OSX.