Freerunner's audio codec settings
I was unable to set my freerunner so that the one I'm calling to would have understood my words. It was very hard to make people tell me what exactly is the sound like. Finally I made a call to myself (desk phone at work) and find out that there is a strong distortion and echo. No GSM buzz problem, although my phone is A5 revision. I was trying to use NeoTool to set the sound codec properly, but no success. One day I dissasemble my phone to check R3004/R3005 issue (100nF caps in place where 0R resistors shall be) and decided to set the phone mixer using generator and scope.

Figure 1: Freerunner without covers
Freerunner is equipped with WM8753 audio codec from Wolfson. Phone's microphone is connected to MIC2N and MIC2 inputs - then signal goes thru the chip (some internal muxes/switches and amplifiers) - and exits the chip on MONO1 and MONO2 pins. Further it goes to the GSM module.
To see how is the signal affected by the chip I connected a signal generator to the MIC2 and MIC2N inputs and osciloscope to the MONO1 and MONO2 pins to see the output. Generator was set to 1 kHz sine wave with amplitude of cca 15 mV. (Similar to the amplitude of voice, being captured by microphone.) Following figures are showing what I got. Upper track is output (MONO1, MONO2), lower track is input (MIC2N, MIC2). Warning: My osciloscope is NOT showing the right amplitude of the measured signals. Probably due to some problems in the vertical amplifier switch. But timebase should be OK.

Figure 2: WD8753 set correctly
See Figure 2 for how the signals should probably look like. No visible distortion, oscilations etc. This is how my Freerunner is now set and I'm having no complains from people I call with. IF I open NeoControl (in my QtMoko v31) I can see:
  • Playback (control.5) set to: 112 - no effect on this
  • Sidetone (contorl.12) set to: 1
  • Mic2 (control.48) set to: 0
As noted above, playback control has no effect on the signal going from microphone to the GSM module. It sets volume of the signal going from GSM module to the Freerunners handset speaker.
Here is my gsmhandset.state file: gsmhandset.state
If I set microphone control to any higher value than 0, singal was likely to be distorted, like shown on Figure 2. Interesting is that Figure 3 shows signals for the same settings. Knocking at the table where the phone was lying or blowing into the microphone (of course still connected to the codec's input) made the change from Figure 2 to Figure 3 and/or back.

Figure 2: Sidetone:3 Mic:1

Figure 3: Sidetone:3 Mic:1
Phone was doing like described above when microphone control was set to 1 or sidetone control was set to more than 2. If microphone was set to 2 or 3, signal was always distorted. If the microphone control was set to 0 and sidetone control was set to 1 or 2 the signal was never distorted no matter how strong I was blowing into the microphone. The rest of pictures I took is here:
Microphone control: 0

Figure 12: Sidetone:0 Mic:0

Figure 13: Sidetone:1 Mic:0

Figure 14: Sidetone:2 Mic:0

Figure 15: Sidetone:3 Mic:0

Figure 16: Sidetone:4 Mic:0

Figure 17: Sidetone:5 Mic:0

Figure 18: Sidetone:5 Mic:0

Figure 19: Sidetone:5 Mic:0

Figure 20: Sidetone:7 Mic:0

Figure 21: Sidetone:7 Mic:0
Microphone control: 1

Figure 4: Sidetone:5 Mic:1

Figure 5: Sidetone:5 Mic:1

Figure 6: Sidetone:6 Mic:1

Figure 7: Sidetone:7 Mic:1

Figure 8: Sidetone:4 Mic:1

Figure 9: Sidetone:4 Mic:1

Figure 10: Sidetone:2 Mic:1

Figure 11: Sidetone:2 Mic:1
Microphone control: 2

Figure 22: Sidetone:5 Mic:2

Figure 23: Sidetone:4 Mic:2
Microphone control: 3

Figure 24: Sidetone:4 Mic:3

Figure 25: Sidetone:6 Mic:3
When I was using NeoTool to control the volume, I found out that:
  • The volume is updated immediatelly after you move the slider
  • If you click "Save", values are saved.
  • If you click Next, the sound settings is somehow changed. I don't know how, where nor why, but the setting you got after "Next" button has probably nothing to do with what you have set before or what is stored in your *.state file. I'd say that stored settigns are restored after you make a next call.
  • If you click "Exit" arrow, all settings remains