[alsa-devel] EeePC 1005PE microphone is "stereo only", silent in mono

Takashi Iwai tiwai at suse.de
Mon Aug 1 10:50:31 CEST 2011


At Sun, 31 Jul 2011 23:39:45 -0400,
Pavel Roskin wrote:
> 
> Hello!
> 
> I have discovered that the microphone on my ASUS EeePC 1005PE only  
> works in stereo.  If recording in mono, the result is inaudible.  When  
> I open the stereo recording in audacity, I see that the two channels  
> are in counterphase.  If I convert stereo to mono in audacity, I get a  
> straight line, and it's inaudible when played.
> 
> The driver itself requires stereo recording:
> 
> $ arecord --rate 44100 -D hw:0 -f S16_LE --channels 1 >test.wav
> Recording WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
> arecord: set_params:1065: Channels count non available
> 
> However, pulse audio doesn't enforce it.  So it's possible to record a  
> mono file through pulse audio, and it's inaudible.  Some programs  
> simply assume a mono microphone and thus get no sound.
> 
> I can work it around by setting the level on one of the channels to  
> 100% and to 0% on the other in alsamixer.  However, the GNOME volume  
> manager removes that imbalance when adjusting the input level.  I  
> would prefer to have a robust solution.  Perhaps one of the channels  
> should be inverted.  Or maybe the difference between the channels  
> should be reported as mono input.  I don't really care about stereo  
> input.
> 
> I'm using Linux 3.0 on Fedora 15.  I checked out and tested the master  
> branch of sound-2.6.git, and it has the same problem.
> 
> It looks like the problem is known.  I found this comment in alc882_quirks.c:
> 
> /* DMIC fix
>   * This laptop has a stereo digital microphone. The mics are only 1cm apart
>   * which makes the stereo useless. However, either the mic or the ALC889
>   * makes the signal become a difference/sum signal instead of standard
>   * stereo, which is annoying. So instead we flip this bit which makes the
>   * codec replicate the sum signal to both channels, turning it into a
>   * normal mono mic.
>   */
> 
> My laptop has ALC269, bit it also used the DMIC quirk:
> SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005HA", ALC269_DMIC),

It might be that ALC269 has a same or similar COEF like ALC271 or
ALC889.  For ALC271, the following verbs do the mono-mixing of d-mic,

	{0x20, AC_VERB_SET_COEF_INDEX, 0x0d},
	{0x20, AC_VERB_SET_PROC_COEF, 0x4000},

while for ALC889, the following do:

	{0x20, AC_VERB_SET_COEF_INDEX, 0x0b},
	{0x20, AC_VERB_SET_PROC_COEF, 0x0003},

Try the above via hda-verb once whether it has any effect on your
machine.



Takashi


More information about the Alsa-devel mailing list