[Galaxy S II Q&A, Help & Troubleshooting] averjans:
UPDATE: Title changed to PARTLY SOLVED, because some users report this procedure is not working for them.

:mad: !WARNING! :mad:​

Before you enter the service menu and you go to experiment with one of these settings, keep in mind that some settings will NOT reset after a reboot or reflash and you can bring your phone in a state that it will not work as you expect.

KEEP YOUR HANDS OF THE SERVICE MENU IF YOU DO NOT KNOW WHAT YOU ARE DOING!​

At least I solved my phone audio problems as described below....

Exact problem: I paired my SGS2 with a Parrot MKi9200 car kit. Music is perfect, phonebook is synced, voice dialing perfect, calling number in display, DTMF tones and other calling notifications are well.....but no audio during phone call...I could not hear anything and the caller couldn't hear me neither......:confused:

After 7 days googling, analyzing, headaches, to less sleeping hours ( :( )....I finaly found the solution this afternoon...:D

.... It is (of course) a very simple solution....but due to lack of service mode documentation I had to find out how this works exactly.

I found out that the Bluetooth audio level to my earpiece (Jabra BT500v) could easily be adjusted AND it actually stays the way I adjusted it after a power down (including removing battery).

The next step was to look for the Bluetooth audio level on my car kit. This was not the same (Bluetooth) setting (:p).

Well, a long story short.... here we go...

These are the steps I did to solve the phone call audio problem:

First of all REBOOT your phone so most (not all) values in service mode will be set to default value.

Second adjust the correct volume for a Bluetooth earpiece:

1. Go into service mode by the known code *#*#197328640#*#*

2. Select [5] AUDIO

3. Select [1] NB (VOICE CALL)

4. Select [4] BLUETOOTH

5. Select [1] Volume

6. Select [5] Sidetone: ..... (Could be any value, don't care about this value)

7. Select "MENU" - "Key input" and type 8000 and hit OK

8. Select [6] Rx Gain: ..... (Could be any value, don't care about this value)

9. Select "MENU" - "Key input" and type 0 and hit OK

10. Select [7] Tx Gain: ..... (Could be any value, don't care about this value)

11. Select "MENU" - "Key input" and type 0 and hit OK

12. Hit "MENU" and "Back" after each other until you are left out of the service mode

This will write the values into the audio chip.

I can confirm that because I tested it with reloading (and wiping) another ROM and the sound stayed exactly the same.

Third adjust the correct volume for a car kit like the Parrot MKi9200:

1. Go into service mode by the known code *#*#197328640#*#*

2. Select [5] AUDIO

3. Select [1] NB (VOICE CALL)

4. Select [4] BLUETOOTH(NREC OFF)

5. Select [1] Volume

6. Select [5] Sidetone: ..... (Could be any value, don't care about this value)

7. Select "MENU" - "Key input" and type 8000 and hit OK

8. Select [6] Rx Gain: ..... (Could be any value, don't care about this value)

9. Select "MENU" - "Key input" and type 0 and hit OK

10. Select [7] Tx Gain: ..... (Could be any value, don't care about this value)

11. Select "MENU" - "Key input" and type 0 and hit OK

12. Hit "MENU" and "Back" after each other until you are left out of the service mode

This will write the values into the audio chip.

NOTE: It is very important to go out of the servicemode by MENU and Back. This is the only way the values are written. I checked this in the log file of my SGS2. (By Android System Info app).

I can confirm the writing to the audio chip because I tested it with reloading (and wiping) another ROM and the Bluetooth audio phone volumes stayed exactly the same.

The other volume values are restored after a reboot (I checked a few of them), so that is easy.

Well, give it a try and let me and other users know the results.

UPDATE 04-09-2011:

Important notes about I2S values ("Sidetone", "RX Gain" and "TX Gain") in ALL audio menus:

- They are ONLY used for audio levels during phone calls. They will NOT change the volume when you listen to music or recording audio.

- They are ONLY saved by pressing "MENU" and "Back" until you have left the servicemode. My advice is to change them group by group, not all together.

- They are WRITTEN into the Audio Codec module. Rebooting, flashing other ROM's, wipe caches, wipe data, the secret code for factory reset WILL NOT RESET these values.

So when you messed around with these values and your audio during a phone call isn't working anymore (or the levels are too soft or too loud) you have to go into servicemode and put the values back into the Audio Codec module.

If you want to convince yourself of not resetting these values after reboot then try this:

- Set the levels ("Sidetone", "RX Gain" and "TX Gain") for the SPEAKER on 1000 (yeah, very high, gives a very loud annoying tone) as described above.

- Make a call to any number and put the speaker on..... beware of the loud noise then.

- You can try to play some music, and you will notice that the music is ok through the speaker, so this setting has no effect on playing music.

- Now switch of the phone and remove the battery

- After 5 minutes put the battery back and switch on the phone.

- make a call again and put the call on the speaker.... very loud noisy tone again.

- OOPS now you messed up your settings in servicemode....

- NO WORRY... put back value 0x35 and your speaker is working again.

(You can also try to reflash or wipe your phone, but believe me these settings do not reset to default).

UPDATE 05-09-2011:

Some notes on setting and reviewing values:

- All values set at "Sidetone", "RX Gain" and "TX Gain" settings will NOT show up again if you re-enter servicemode and check them. Actually you will see other (mostly much larger) values.

- If you made a phone call and used a specific device, for instance the speaker, and you re-enter the servicemode afterwards, the value will always show up as 0xffff.

Important: If you re-enter the servicemode and enter a specific device to check the "Sidetone", "RX Gain" and "TX Gain" settings, do not leave the servicemode by multiple 'MENU" and "Back". This will reprogram the Audio Codec with incorrect values. If you still want to look in this menu, then always enter the correct value for these 3 settings before leaving servicemode. If you leave servicemode by END or hard Back key, then nothing happens to these settings.

UPDATE 10-09-2011:

Devices:

It seems that only one device can be set by the servicemode menu. The other devices will be set to some (unknown) values. (johho, Thanx for reporting this).

Echo during call:

If I enter another value for sidetone (8000), then the echo is completely gone on my BT car kit and (almost) gone on the phone itself. If I enter 0 for sidetone, then there is a loud echo.

Levels:

I now enter 0 for each device. This works for all devices I use (BT earpiece, BT car kit, Phone and wired earphone).

UPDATE 11-09-2011:

Sidetone and echo:

sidetone is the effect of sound that is picked up by the telephone's microphone and feedback into the earpiece. If the value is to high, you will hear an echo due too the combination of the sidetone level and latency. Here you will find more interesting info about sidetone and echo: http://www.voip-info.org/wiki/view/Echo+and+Sidetone

Final solution working for me:

:) I adjusted each device separately and now I got every device (wired earphone, handset, speaker, BT earpiece and BT car kit) working properly. All levels are OK and there is almost no echo anymore.

Because the BT car device resets to some defaults at which the car kit doesn't work anymore I adjust this device BLUETOOTH(NREC OFF) last.

I set 0x0 for TX and RX gain and 0x8000 for sidetone for all devices.

I adjusted the devices separately following this particular order:

[1] HANDSET

[2] HEADSET

[3] SPEAKER

[4] BLUETOOTH

[7] HANDSET(2MIC)

[6] HEADSET(3P5PI)

[5] BLUETOOTH(NREC OFF)