On Wed, Oct 06, 2010 at 09:16:01AM +0530, Siju George wrote: > $ mixerctl -av > outputs.dig-dac-0:1_sou=hdaudio [ hdaudio adc-0:1 ] > inputs.dac-0:1_mute=off [ off on ] > inputs.dac-0:1=248,248 > inputs.dac-2:3_mute=off [ off on ] > inputs.dac-2:3=248,248 > inputs.dac-4:5_mute=off [ off on ] > inputs.dac-4:5=248,248 > inputs.mix_source=dac-0:1,mix3,sel8,cd,sel7 { dac-0:1 mix3 sel8 cd sel7 } > inputs.mix2_source=mix { mix } > outputs.mix3_mute=off [ off on ] > inputs.mix3_source=dac-2:3,dac-4:5 { dac-2:3 dac-4:5 } > inputs.hp_source=mix [ mix dac-2:3 dac-4:5 ] > inputs.line-grn_source=mix [ mix dac-2:3 ] > inputs.line-blu_source=dac-2:3 [ dac-2:3 mix ] > inputs.line-pnk_source=dac-4:5 [ dac-4:5 mix2 ] > inputs.sel6_source=mic [ mic line-in line-pnk line-pnk mix4 mix5 mix6 mix7 ] > outputs.sel6=255,255 > inputs.sel7_source=line-in [ line-in line-blu mic ] > inputs.sel8_source=sel6 [ sel6 mix8 ] > record.adc-0:1_source=sel8 [ sel8 cd sel7 mix mix2 ] > record.adc-0:1_mute=off [ off on ] > record.adc-0:1=255,255 > inputs.sel8_mute=off [ off on ] > inputs.sel8=248,248 > inputs.cd_mute=off [ off on ] > inputs.cd=248,248 > inputs.sel7_mute=off [ off on ] > inputs.sel7=248,248 > outputs.hp_mute=off [ off on ] > outputs.hp=248,248 > outputs.hp_boost=off [ off on ] > outputs.line-grn_mute=off [ off on ] > outputs.line-grn=248,248 > outputs.line-grn_boost=off [ off on ] > outputs.line-grn_eapd=on [ off on ] > outputs.line-blu_mute=off [ off on ] > outputs.line-blu=248,248 > outputs.line-blu_dir=output [ none output input ] > outputs.line-pnk_mute=off [ off on ] > outputs.line-pnk=248,248 > outputs.line-pnk_dir=output [ none output input input-vr0 input-vr50 > input-vr80 ] > outputs.mic_dir=input-vr80 [ none input input-vr0 input-vr50 input-vr80 ] > outputs.line-in_dir=input [ none input input-vr0 input-vr50 input-vr80 ] > outputs.SPDIF_source=dig-dac-0:1 [ dig-dac-0:1 ] > inputs.mix4_source=mic,line-pnk { mic line-pnk } > inputs.mix5_source=mic,line-in { mic line-in } > inputs.mix6_source=line-pnk,line-in { line-pnk line-in } > inputs.mix7_source=mic,line-pnk,line-in { mic line-pnk line-in } > inputs.mix8_source=sel6 { sel6 } > outputs.hp_sense=unplugged [ unplugged plugged ] > outputs.line-grn_sense=plugged [ unplugged plugged ] > outputs.line-blu_sense=plugged [ unplugged plugged ] > outputs.line-pnk_sense=unplugged [ unplugged plugged ] > outputs.mic_sense=unplugged [ unplugged plugged ] > outputs.line-in_sense=unplugged [ unplugged plugged ] > outputs.master=255,255 > outputs.master.mute=off [ off on ] > outputs.master.slaves=dac-0:1,hp,line-grn { dac-0:1 dac-2:3 dac-4:5 > mix3 sel6 sel8 cd sel7 hp line-grn line-blu line-pnk } > record.volume=255,255 > record.volume.mute=off [ off on ] > record.volume.slaves=adc-0:1 { adc-0:1 } > outputs.mode=analog [ analog digital ] > $
first, 'line-pnk' is almost certainly the rear mic input, and 'mic' is the front mic input. let's stick with the rear jacks for now. so you want this: > outputs.line-pnk_dir=output [ none output input input-vr0 input-vr50 > input-vr80 ] to get to this: > record.adc-0:1_source=sel8 [ sel8 cd sel7 mix mix2 ] first step, set line-pnk to be a mic input: $ mixerctl outputs.line-pnk=input-vr80 I bet that's what kills it for other OSes. shame on the BIOS vendor for naming it like that and shame on the board vendor for using such a silly codec. anyway ... now we want to see what line-pnk can feed into: $ mixerctl -v | grep '_source=.*line-pnk' inputs.sel6_source=mic [ mic line-in line-pnk line-pnk mix4 mix5 mix6 mix7 ] inputs.mix4_source=mic,line-pnk { mic line-pnk } inputs.mix6_source=line-pnk,line-in { line-pnk line-in } inputs.mix7_source=mic,line-pnk,line-in { mic line-pnk line-in } hmm, we're trying to get to > record.adc-0:1_source=sel8 [ sel8 cd sel7 mix mix2 ] but none of sel6, mix4, mix6 or mix7 are choices. let's see what sel6 can feed: $ mixerctl -v | grep '_source=.*sel6' inputs.sel8_source=sel6 [ sel6 mix8 ] inputs.mix8_source=sel6 { sel6 } aha, we can have line-pnk -> sel6 -> sel8 -> adc-0:1, and that appears to be the shortest routing (there are others, but ignore those for now). there's only one more thing to change: $ mixerctl inputs.sel6_source=line-pnk now, it's strange there are two line-pnk choices for sel6_source. that's really a bug in azalia(4). oh well. most likely, one is the jack itself and one is an amp. it's hard to tell, even with a datasheet, what's really going on, as nodes can be labeled by the BIOS. I'm guessing you don't have the code to the BIOS. you could build a kernel with AZALIA_DEBUG defined and get a better picture. anyway, I think that's all you should have to do to record from the rear mic jack: $ mixerctl outputs.line-pnk_dir=input-vr80 $ mixerctl inputs.sel6_source=line-pnk $ mixerctl inputs.sel8_source=sel6 $ mixerctl record.adc-0:1_source=sel8 alternatively, to get around the "double line-pnk choice" in sel6, route through mix4 instead: $ mixerctl outputs.line-pnk_dir=input-vr80 $ mixerctl inputs.mix4=line-pnk,mic $ mixerctl inputs.sel6_source=mix4 $ mixerctl inputs.sel8_source=sel6 $ mixerctl record.adc-0:1_source=sel8 that actually will record from both the front and rear mic jacks simultaneously, assuming the front panel is connected correctly. and, if the front panel is connected correctly, this might work for recording from the front mic: $ mixerctl inputs.sel7_source=mic $ mixerctl record.adc-0:1_source=sel7 all this assumes everything is labeled correctly by the BIOS. if neither of the above works, build a kernel with AZALIA_DEBUG defined and send the resulting dmesg, then we'll look at the datasheet and see what's going on. -- jake...@sdf.lonestar.org SDF Public Access UNIX System - http://sdf.lonestar.org