Getting rid of echo for callers.
Al Johnson
openmoko at mazikeen.demon.co.uk
Fri Aug 29 18:57:39 CEST 2008
On Friday 29 August 2008, Mikael Berthe wrote:
> * Mike Baroukh <mike at baroukh.com> [2008-08-29 09:36 +0200]:
> > What I don't understand is why the settings have to be phone dependant.
> > If I'm not wrong, this settings depends not of the phone but of the gsm
> > operator.
>
> I don't think so, I'm getting different results when I talk with people
> using the same operator...
All these settings are doing is changing the gain of the mic and the playback
volume in the earpiece. We have no control over the gain in either direction
between your GSM modem and the other party. There will be a variation in the
level of acoustic coupling between the earpiece and the mic of the Freerunner
too. Whether the other party hears any echo depends on the gain around the
whole loop, not just the bit we can control with alsamixer. This is before we
get into differences in sensitivity to echo, or whether the telco might
employ echo cancellation or suppression somewhere in the line. This is why
you will find differences between calls to different people.
Any static mixer setting like this will be a compromise. To reduce the echo
heard at the other end you can set the earpiece volume and mic gain to as low
as you can get away with. How low this is will depend on your hearing, the
background noise level, how loudly you speak, and how you hold the phone,
plus the bits that are out of your control. This is why there are several
gsmhandset.state files out there with different settings that people find
work for them.
There are other things that may work better though. The wolfson audio chip has
onboard active level control and noise gate functions which may be usable for
echo suppression. This would drop the mic gain when you aren't speaking,
cutting echo, but bring it up when you are speaking so that the other party
can hear you. There is also a suggestion that the GSM chipset can do echo
suppression. Finally we may be able to echo cancellation with the CPU.
If you want to try changing the settings I suggest you look at the wiki pages:
http://wiki.openmoko.org/wiki/Neo_1973_audio_subsystem
http://wiki.openmoko.org/wiki/WM8753
The mic level is controlled by "Mic2 Capture Volume" (control.48), "Mono
Sidetone Playback Volume" (control.12) and "Mono Playback Volume" (control.5)
while the earpiece volume is controlled by "Bypass Playback Volume"
(control.6) and "Speaker Playback Volume" (control.4)
I've not detailed my attempts at getting the wolfson noise gate working as so
far I've not found anything that's better than a compromise without the noise
gate, and changing the noise gate settings doesn't affect things as I would
expect. I guess I'm missing something about how it works. The first thing to
do is to set the signal routing to send the mic2 signal through the ALC Mux,
the left PGA then back down to the Mic Mux. This is the routing suggested for
voice on the audio subsystem wiki page, but it is not how it is set in the
supplied gsmhandset.state. Controls 59 through 62, the "ALC Mixer xxx Capture
Switch" settings, are already set correctlywith Mic2 (60) true and the others
false. "Mic Sidetone Mux" (63) should be set to 'Left PGA'. Now the fun
starts ;-) I think "Capture Left Mux" (65) should be 'PGA' and the ALC
controls are 28 through 37, but since playing with these doesn't give me the
results I expect from an AGC or noise gate I think I'm missing something,
probably in the capture settings to get the mic signal into the ALC. I hope
this helps someone make more progress than I have, but I'll keep trying.
The possible GSM chipset capability is discussed in this thread:
http://lists.openmoko.org/pipermail/hardware/2008-August/000451.html
More information about the community
mailing list