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),
That's the detailed lspci output:
$ lspci -vvnn -s 00:1b.0 00:1b.0 Audio device [0403]: Intel Corporation N10/ICH 7 Family High Definition Audio Controller [8086:27d8] (rev 02) Subsystem: ASUSTeK Computer Inc. Device [1043:83ce] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 45 Region 0: Memory at f7cf8000 (64-bit, non-prefetchable) [size=16K] Capabilities: <access denied> Kernel driver in use: HDA Intel
I'm not using any module parameters. No external devices are connected to the laptop.