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