In my own quest of finding the root of the problem and scanning the web for a potential solution (not involving send my phone off), I decided to share my findings, very well aware of the shortcomings of my limited research. So please let me know of any current (or future) solution to this, or if I have missed anything important.
Internally there are 2 microphones and 2 speakers. Unfortunately the way these are situated, aligned and and isolated, together with the sound transmission throughout the phone chassis and the complicated sound and digital noise reduction (NR) settings, are the cause of these problems.
All this can best be seen in the iFixit's teardown guide:
or in the "S2 screen replacement photo tutorial":
or in the schematic blow-apart diagram in the official "Samsung-GT-i9100-service-manual". (Google that!)
After performing a limited number of tests, on my own, I have concluded that this problem should in ANY case be resolvable by a fix in the phone firmware/software. Obviously the phone is working without a case, and (usually) perfectly when turning off NR (noise reduction) and/or turning down the volume. Others report fiddling with the internal rubber enclosure of the microphones and/or speakers. In either case, it would be very interesting to know the details of your phone's SW and HW configuration as many reports differences in behavior after flashing new/old phone software. It is very likely the problem occurs as a combination of "PHONE/PDA" software, the lower USB charge-port HW and the upper speaker/microphone insulation. In other words the NR algorithm need to be changed or better tuned for various environments. We can only hope Samsung fixes this in their next updates... But very unlikely as they are much more interested in making new phones and selling more of them. And if they did fix it, they probably wouldn't tell anyone since if they ever did admit to any wrong doing, they'd have to replace/repair probably at least tens of thousands of phones!
Problem (Simple Description):
A number of small assembly line variations is causing the internal noise reduction software to misbehave. (Remember the "butterfly effect"!)
Problem (Technical Description):
The problem consists of (at least) 3 smaller problems working together.
1. The lower playback speaker is always on (!) and is causing feedback to the lower microphone when using a protective cover. Thus explaining the greater echo at higher volumes and less external noise, when using a rubber cover.
2. The SGS2 plastic casing transmits sound around the entire phone. Thus both speakers (lower and upper) are transmitting sound to both the lower normal microphone and the upper noise cancelling microphone. These need to be isolated.
So when covering the upper noise reduction microphone you are getting better feedback (more "noise") from both upper AND lower speakers, than from outside and thus (usually) improving call quality by reducing the echo effect, but when there is no case-cover and a noisy environment, you may end up increasing the echo, by covering it up!
3. BUT not all phones have echo, thus there is also a NR settings or algorithm problem that should or may be resolved by a firmware/phone/PDA update. In addition, and making things even more complicated, different phones have slightly different hardware on the PCB of the USB charge-port...
Who to Blame?
1. Samsung Hardware engineers who must have been sleeping in their "Acoustics and Wave Propagation" classes.
2. Samsung (?) Software engineers who never took a course in "Feedback and Control Theory".
3. Samsung HW design director(s) who
a) didn't make (1) and (2) work closely enough together on the SGS-2.4. Samsung Assembly line Quality Control manager(s) who didn't check for minor design flaws.
b) never though of putting a rubber case on the phone!
- check (open up) every 100 or so phones, if problem check ALL previous 100 and estimate problem!..
- stop assembly line and talk to the management about solution
oo. The casual SGS2 owner who just wanted to protect his new investment with a rubber/plastic cover.
Some Known Solutions:
Service Center Solutions:
1. Improperly placed internal speaker cushion:
2. Replace the UI Board; Part No: GH59-10949A
3. Attach layers of soft electrically and noise insulating tape (e.g. medical-tape) over the back-side of the upper speaker, earphone jack and microphone. On the inside of you phone. See instructions in Hebrew (!) below:
DIY Home Fixes (various success):
4. Put some tape over the top NR hole, which is next to the 3.5mm head-phone jack. (This fix messes up the speakerphone functionality!)
5. Put some tape over the hole just above volume-rocker
6. Lower volume
7. Manually disable NR during call: ("HOME" button)
8. Factory Reset (This will wipe your data/contacts and probably only lasts until next reboot!)
9. Try to flash a different phone ROM/Firmware/Kernel/Baseband etc. (Seem like it's mostly Gingerbread 2.3.4 phones being affected.)
10. Perhaps by changing some settings in the hidden "Service Mode" menus (???)
11. Open your phone and
a) make the bottom small microphone hole in the case bigger and12. Attempt the above Service Center operations by yourself!
b) cut some of the rubber from the lower microphone cover.
See: "Fix for low microphone volume":
NOTE: It's highly recommended to do only ONE AT THE TIME!
Currently Recommended Solution:
A) WITH stock phone/firmware AND warranty; ask for a new phone and test it!
B) WITHOUT stock phone/firmware OR WITHOUT warranty; Try 11b!
List of Firmwares WITHOUT echo: (PDA/Phone/CSC)
"Polish Stock ROM"
"Many Indian firmwares don't have DNR (KE8 or KF3) activated"
KI4/KI1/KH2 (XEU) Echo with DNR OFF (default) NO ech with DNR ON!
KD6/KE7/KD1 (XEU) 'same'
[ If you have/find other firmware solutions, please add them to this thread! ]
Service Mode Settings
Entering Service Mode: *#197328640# OR *#*#197328640#*#* [dial]
These settings are probably ending up in the various audio setting files in: /system/etc/audio (which are only accessible in a rooted phone.)
Potential (Rooted) System Hacks
Tweak/check the files present in: /system/etc/audio
OR perhaps write some Tasker script; see:
Some custom ROMs come with NR tweaks that allow you to permanently turn ON/OFF DNR:
[Could someone confirm & provide a links to these?]
Apparently there are other ways in which you can directly hack the Phone.apk package, under certain conditions. Thus at least in theory it should be possible to directly toggle NR in memory, which could indeed be useful. Here is one variation of the APK hack:
In the Phone.apk package, find the ../res/values/bools.xml file. Edit and recompile after changing the line: "<bool name="has_in_call_noise_suppression">true</bool>".
See: "[HOWTO] disable NoiseSuppression by default, to enlarge mic volume":
and start reading from this post:
Some additional info for hacking Phone.apk:
Do you have a contribution or solution?
So if you want to contribute to the solution and permanent fix of this (or any other comments), please post the following info, as well.
1. Baseband (aka. "Phone") version
2. Kernel version
3. Build number
4. The USB-charge-port PCB version (if known)
5. Your particulars when it works and when it doesn't
6. Details on how you fixed the problem, if you did!
To find info use these codes on the dial pad:
Firmware Version: *#1234#
Hardware Version: *#2222#
Both Versions: *#8999*8376263#
That way we may hope to find and fix the problem ourselves!
Some of this I already mentioned here:
Also try to search the "Samsung Galaxy S2 Q&A" forum for "Echo Noise Reduction".
Thanks and I hope this helps!