[alsa-devel] HDA intel, wired headset w/mic, jack mic detect
Raymond Yau
superquad.vortex2 at gmail.com
Fri Mar 2 02:22:51 CET 2012
2012/3/2, Kevin Hilman <khilman at ti.com>:
>> Does your headset/mic has a TRRS (Tip, ring, ring, sleeve) connector
>> instead of TRS (Tip, ring, sleeve) connector ?
> Yes. It's TRRS.
Does it mean that the headset/mic is a mono mic ?
Is the internal mic mono or stereo ?
>>>>
>>>> can you post the output of alsa-info.sh ?
>>>
>>> below is the output when the headset w/mic is plugged in
>>>
>>>> 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 ) ?
>>>
>>> I don't see any Mic at Ext, but I do see a 'Mic at Int' and it shows
>>> NO_PRESENCE.
>>>
>>> Should I be seeing a 2 different Mics? one for internal one for
>>> external?
the functions parse_input() and change_cur_input() in patch_cirrus.c
seem expect ext mic and int mic for auto mic detection
e.g.
/* check whether the automatic mic switch is available */
if (spec->num_inputs == 2 &&
cfg->inputs[0].type == AUTO_PIN_MIC &&
cfg->inputs[1].type == AUTO_PIN_MIC) {
so it won't switch mic automatically when there is one mic pin
if (spec->cur_adc && spec->cur_adc != spec->adc_nid[idx]) {
/* stream is running, let's swap the current ADC */
it swap the ADC if the external mic and internal mic are connected to
different ADCs
but there is no mic connected to other ADC
>>
>>> Node 0x09 [Pin Complex] wcaps 0x410581: Stereo
>>> Control: name="Headphone Jack", index=0, device=0
>>> Pincap 0x0000001c: OUT HP Detect
>>> Pin Default 0x012b4030: [Jack] HP Out at Ext Rear
>>> Conn = Comb, Color = Green
>>> DefAssociation = 0x3, Sequence = 0x0
>>> Pin-ctls: 0xc0: OUT HP
>>> Unsolicited: tag=01, enabled=1
>>> Power states: D0 D3 EPSS
>>> Power: setting=D0, actual=D0
>>> Delay: 1 samples
>>> Connection: 1
>>> 0x02
>>
>> Headphone Conn=Combo
>> but Pincap is OUTPUT only so it cannot be retasked as Input
>>
>> Does internal mic work or not ?
>
> Yes, it works fine.
>
arecord --vumeter=stereo -f CD -Dhw:0,0 foo.wav
does the vumeters change when you change the sliders of node 0x0d or
0x06 in hda-analyzer ?
>> It Int Mic is correct and 0x06 [Audio Input] is used ,
>>
>> ext mic may be at 0x0e
>>
>> you can use hda_analyzer to switch the connection at node 0x6 from 0x0d to
>> 0x0e
>> to test the external mic
>
> Here's what I tried:
>
> Selecting Node 0x6, I changed the connection from 0xd to 0xe.
> Selecting Node 0xe, I checked the 'IN' box under Widget control (which
> is what 0xd had enabled.), then changed the Val[0] and Val[1] sliders
> from 0 to 2 under Input Amplifier.
>
> Still no input detected from the headset mic.
>
> FWIW, I'm using the 'Input level' indicator in the Input tab of the
> Sound settings in the Ubuntu control panel to check if the input is
> working.
>
pulseaudio just sum the stereo input to mono , and you get silence if
the left/right channel is out of phase
>>
>>> Node 0x06 [Audio Input] wcaps 0x18051b: Stereo Amp-In
>>> Control: name="Capture Switch", index=0, device=0
>>> Control: name="Capture Volume", index=0, device=0
>>> Device: name="Cirrus Analog", type="Audio", device=0
>>> Amp-In caps: ofs=0x33, nsteps=0x3f, stepsize=0x03, mute=1
>>> Amp-In vals: [0x3f 0x3f] [0x3f 0x3f]
>>> Converter: stream=0, channel=0
>>> SDI-Select: 0
>>> PCM:
>>> rates [0x1f5]: 8000 16000 32000 44100 48000 88200 96000
>>> bits [0x1e]: 16 20 24 32
>>> formats [0x3]: PCM FLOAT
>>> Power states: D0 D3 EPSS
>>> Power: setting=D0, actual=D0
>>> Delay: 8 samples
>>> Connection: 2
>>> 0x0d* 0x0e
>>
>>>Node 0x0d [Pin Complex] wcaps 0x41048b: Stereo Amp-In
>>> Control: name="Mic Capture Volume", index=0, device=0
>>> ControlAmp: chs=3, dir=In, idx=0, ofs=0
>>> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
>>> Amp-In vals: [0x03 0x03]
>>> Pincap 0x00001764: IN Detect Balanced
>>> Vref caps: HIZ 50 GRD 80
>>> Pin Default 0x90a00110: [Fixed] Mic at Int N/A
>>> Conn = Unknown, Color = Unknown
>>> DefAssociation = 0x1, Sequence = 0x0
>>> Misc = NO_PRESENCE
>>> Pin-ctls: 0x24: IN VREF_80
>>> Unsolicited: tag=00, enabled=0
>>> Power states: D0 D3 EPSS
>>> Power: setting=D0, actual=D0
>>> Delay: 1 samples
>>> Node 0x0e [Pin Complex] wcaps 0x41000b: Stereo Amp-In
>>> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x27, mute=0
>>> Amp-In vals: [0x00 0x00]
>>> Pincap 0x00000020: IN
>>> Pin Default 0x400000f0: [N/A] Line Out at Ext N/A
>>> Conn = Unknown, Color = Unknown
>>> DefAssociation = 0xf, Sequence = 0x0
>>> Pin-ctls: 0x00:
>>> Delay: 1 samples
>>
>>
>> There are also other possibilities 0xc and 0x12 if 0x05 is used
>>
>>
>> Node 0x05 [Audio Input] wcaps 0x18051b: Stereo Amp-In
>> Amp-In caps: ofs=0x33, nsteps=0x3f, stepsize=0x03, mute=1
>> Amp-In vals: [0xb3 0xb3] [0xb3 0xb3]
>> Converter: stream=0, channel=0
>> SDI-Select: 0
>> PCM:
>> rates [0x1f5]: 8000 16000 32000 44100 48000 88200 96000
>> bits [0x1e]: 16 20 24 32
>> formats [0x3]: PCM FLOAT
>> Power states: D0 D3 EPSS
>> Power: setting=D0, actual=D0
>> Delay: 8 samples
>> Connection: 2
>> 0x0c* 0x12
>
> OK, I selected Node 0x5, and un-checked the mute box for the 4 sliders
> under Input amplifier, and increased the sliders to the max of 63.
> The 0xc connection was the default, so I started with that one.
> Selecting Node 0xc, I checked the 'IN' box under widget control and
> changed the 2 Val sliders under Input Amplifier from 0 to 3.
>
> Still nothing detected on headset mic.
>
http://git.alsa-project.org/?p=alsa-kernel.git;a=blob_plain;f=Documentation/sound/alsa/HD-Audio.txt
you need to use hda-jack-retask or early patching to change the pin
default of node 0xe, 0xc or 0x12 default to "ext mic"
either hda-reconfig or early patching if node 0x0e, 0x0c 0r 0x12 is ext mic
> Under 0x05, I then selected the 0x12 connection. Selecting Node 0x12, I
> again selected the 'IN' box under widget control and increased the 2 Val
> sliders from 0 to 3.
>
> Still nothing.
>
Only the pincap of node 0xc and 0xd support jack detect , and node
0x0e and 0x12
Node 0x0c [Pin Complex] wcaps 0x41048b: Stereo Amp-In
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00]
Pincap 0x00000024: IN Detect
Pin Default 0x400000f0: [N/A] Line Out at Ext N/A
Conn = Unknown, Color = Unknown
DefAssociation = 0xf, Sequence = 0x0
Pin-ctls: 0x00:
Unsolicited: tag=00, enabled=0
Power states: D0 D3 EPSS
Power: setting=D0, actual=D0
Delay: 1 samples
Node 0x12 [Pin Complex] wcaps 0x41000b: Stereo Amp-In
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00]
Pincap 0x00000020: IN
Pin Default 0x400000f0: [N/A] Line Out at Ext N/A
Conn = Unknown, Color = Unknown
DefAssociation = 0xf, Sequence = 0x0
Pin-ctls: 0x00:
Delay: 1 samples
the last resort is to use hda-verb to check jack detect of pin 0xd,
0xe, 0xc and 0x12
hda-verb /dev/snd/hwC0D0 0x0d GET_PIN_SENSE 0
More information about the Alsa-devel
mailing list