[HOWTO] Finally! a REAL solution to disable noise reduction

Search This thread

tarobun

Member
Dec 17, 2011
41
33
In some (most?) roms, you can turn on and off the noise reduction during a phone call by using the menu button - menu option is called "Noise Reduction On/Off". With the noise reduction "on" the icon is shown, when it is "off" the icon disappears.

The reason I said "some roms" is because I couldn't see that option in the CheckROM RevoHD™ V6.

You can only change the noise reduction during a phone call, not while dialling or ringing. Although you can turn it on/off during the call, it will not remember the state... it will always start "off" (the original Phone.apk will always start "on").

And no, I didn't delete anything. Just changed a 1 ("on") to a 0 ("off"). The smaller apk size is due to the compression of the classes.dex.

I used the hex editor 0xED for Mac OSX.
 
  • Like
Reactions: croperas

alf69mi

Senior Member
Feb 22, 2009
175
23
Milan
Hello tarobun,
just installed stock ICS XXLPQ , and in new Phone.odex i'm unable to find string 32 84 2F 00 12 13 .

Would it be possible to fix ICS Phone.odex?
Thanks
 

diavolo_78

Member
Apr 14, 2009
23
6
Most ROM have a slightly different version of Phone.apk so it's best to modify the one that came with your ROM.

Having said that, the fix is very simple (just changing a 1 to a 0) so you could hex-edit the apk/odex directly... how good is your hex editing skills?

To make the changes via hex editing, do the following:

For odex ROMs:
  1. Download the Phone.odex file
  2. Open in hex editor
  3. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  4. Change the last byte to 03
  5. Save and upload Phone.odex to /system/app
  6. Reboot

For dexodex ROMs:
  1. Download the Phone.apk file
  2. Extract the classes.dex file (unzip Phone.apk classes.dex)
  3. Open in hex editor
  4. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  5. Change the last byte to 03
  6. Save and add classes.dex back to apk (zip Phone.apk classes.dex)
  7. Upload Phone.apk to /system/app
  8. Reboot

Otherwise upload your Phone.apk and I'll make the change for u.

Hello and thank you for your edit . I would also change the file phone will ask you some info I have is phone.odex the file , the file phone.apk with the green phone icon ... which of these files should I change ? Ginger is the rom 2.3.6 . KK2 poland .

Once changed just plug it in / system / app and overwrite the original after backing up ?
 
Last edited:

firero

Member
Dec 12, 2009
8
8
update for ics 4.0.3

Most ROM have a slightly different version of Phone.apk so it's best to modify the one that came with your ROM.

Having said that, the fix is very simple (just changing a 1 to a 0) so you could hex-edit the apk/odex directly... how good is your hex editing skills?

To make the changes via hex editing, do the following:

For odex ROMs:
  1. Download the Phone.odex file
  2. Open in hex editor
  3. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  4. Change the last byte to 03
  5. Save and upload Phone.odex to /system/app
  6. Reboot

For dexodex ROMs:
  1. Download the Phone.apk file
  2. Extract the classes.dex file (unzip Phone.apk classes.dex)
  3. Open in hex editor
  4. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  5. Change the last byte to 03
  6. Save and add classes.dex back to apk (zip Phone.apk classes.dex)
  7. Upload Phone.apk to /system/app
  8. Reboot

Otherwise upload your Phone.apk and I'll make the change for u.

for ICS 4.0.3 you will have to search for 10 01 22 00 D6 and replace 10 with 20

smali :

.method private onPhoneStateChanged(Landroid/os/AsyncResult;)V
...
invoke-static {v0, v1, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V

second parameter has to be modified to v2:

invoke-static {v0, v2, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V
 
Last edited:

bazzag

Senior Member
Jul 6, 2011
191
95
Amman
FYI...If you want an echo-free ROM go for CM9, as it doesn't have NR implemented yet, hopefully never.
 

ctomgee

Senior Member
Dec 21, 2010
3,558
899
FYI...If you want an echo-free ROM go for CM9, as it doesn't have NR implemented yet, hopefully never.

Or, you could follow these directions (http://xdaforums.com/showthread.php?t=1441510). If it works, then you can use whatever ROM you want, with or without NR.

I did this, and now with NR defaulted on and a case on the phone, no echo.

I used to have a modded phone with NR defaulted off, but I decided that one of the features of this phone that I paid for was NR, so I wanted it working.
 

x625

Senior Member
Oct 2, 2011
73
8
Most ROM have a slightly different version of Phone.apk so it's best to modify the one that came with your ROM.

Having said that, the fix is very simple (just changing a 1 to a 0) so you could hex-edit the apk/odex directly... how good is your hex editing skills?

To make the changes via hex editing, do the following:

For odex ROMs:
  1. Download the Phone.odex file
  2. Open in hex editor
  3. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  4. Change the last byte to 03
  5. Save and upload Phone.odex to /system/app
  6. Reboot

For dexodex ROMs:
  1. Download the Phone.apk file
  2. Extract the classes.dex file (unzip Phone.apk classes.dex)
  3. Open in hex editor
  4. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  5. Change the last byte to 03
  6. Save and add classes.dex back to apk (zip Phone.apk classes.dex)
  7. Upload Phone.apk to /system/app
  8. Reboot

Otherwise upload your Phone.apk and I'll make the change for u.

hello tarobun
I really appreciate you if you can update your string value for ICS odex roms because after I updated to ICS again suffer from this problem and don't want to use some physical way to open my phone and the code don't exist on official ICS roms

thank you so much
 

tarobun

Member
Dec 17, 2011
41
33
hello tarobun
I really appreciate you if you can update your string value for ICS odex roms because after I updated to ICS again suffer from this problem and don't want to use some physical way to open my phone and the code don't exist on official ICS roms

thank you so much

The answer has already been provided by firero :)

for ICS 4.0.3 you will have to search for 10 01 22 00 D6 and replace 10 with 20

smali :

.method private onPhoneStateChanged(Landroid/os/AsyncResult; )V
...
invoke-static {v0, v1, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V


second parameter has to be modified to v2:

invoke-static {v0, v2, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V

But search for just 10 01 22 00 and change first byte from 10 to 20.
 
  • Like
Reactions: leon0602 and x625

x625

Senior Member
Oct 2, 2011
73
8
Worked finally ICS !!!

The answer has already been provided by firero :)



But search for just 10 01 22 00 and change first byte from 10 to 20.

excellent work! outstanding!!

thank you so much !
according to firero post I searched 10 01 22 00 D6 before and found nothing .
but after I search only 10 01 22 00 I finally found It .and I found there is a D5 in end of string not D6.
thank you again man. you are my savior!
 
Last edited:

diavolo_78

Member
Apr 14, 2009
23
6
for ICS 4.0.3 you will have to search for 10 01 22 00 D6 and replace 10 with 20

smali :

.method private onPhoneStateChanged(Landroid/os/AsyncResult;)V
...
invoke-static {v0, v1, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V

second parameter has to be modified to v2:

invoke-static {v0, v2, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V

Hello , I too would like to make the change ... but I did not understand the steps to do .
you describe step by step ?

---------- Post added at 11:32 PM ---------- Previous post was at 11:30 PM ----------

excellent work! outstanding!!

thank you so much !
according to firero post I searched 10 01 22 00 D6 before and found nothing .
but after I search only 10 01 22 00 I finally found It .and I found there is a D5 in end of string not D6.
thank you again man. you are my savior!

Hello , I too would like to make the change ... but I did not understand the steps to do .
you describe step by step ? Then I wanted to ask in this way, the noise reduction is disabled by default , but you can activate the menu ?
 

diavolo_78

Member
Apr 14, 2009
23
6
hello,
someone could make a guide to make this change ?
I can not do that I did not understand the steps to do .
I installed everything on the pc , sdk , jdk , apktool and I downloaded apk file manager, notepad + + ... now I have to do ?

please help me ...............
 

x625

Senior Member
Oct 2, 2011
73
8
Most ROM have a slightly different version of Phone.apk so it's best to modify the one that came with your ROM.

Having said that, the fix is very simple (just changing a 1 to a 0) so you could hex-edit the apk/odex directly... how good is your hex editing skills?

To make the changes via hex editing, do the following:

For odex ROMs:
  1. Download the Phone.odex file
  2. Open in hex editor
  3. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  4. Change the last byte to 03
  5. Save and upload Phone.odex to /system/app
  6. Reboot

For dexodex ROMs:
  1. Download the Phone.apk file
  2. Extract the classes.dex file (unzip Phone.apk classes.dex)
  3. Open in hex editor
  4. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
  5. Change the last byte to 03
  6. Save and add classes.dex back to apk (zip Phone.apk classes.dex)
  7. Upload Phone.apk to /system/app
  8. Reboot

Otherwise upload your Phone.apk and I'll make the change for u.

for ICS rom:

The answer has already been provided by firero :)



But search for just 10 01 22 00 and change first byte from 10 to 20.

hello,
someone could make a guide to make this change ?
I can not do that I did not understand the steps to do .
I installed everything on the pc , sdk , jdk , apktool and I downloaded apk file manager, notepad + + ... now I have to do ?

please help me ...............

hello diavolo
this is the steps already mentioned in this topic to how set default noise reductions OFF in phone calls. dont need to disable it each time in each phone calls. you can use http://www.mediafire.com/?dbwgi2dded8bt7a for Hex editing and take attention to always backup your original files . read this topic from beginning and you will get it. if didn't get it then say what is your exact problem
 
Last edited:

diavolo_78

Member
Apr 14, 2009
23
6
for ICS rom:





hello diavolo
this is the steps already mentioned in this topic to how set default noise reductions OFF in phone calls. dont need to disable it each time in each phone calls. you can use http://www.w.mul.ir/me|di|af|ir|e.|com/?dbwgi2dded8bt7a for Hex editing and take attention to always backup your original files . read this topic from beginning and you will get it. if didn't get it then say what is your exact problem
my problem is that I do not know where to find the bytes 10 01 22 00 to change, and where is smali
 

x625

Senior Member
Oct 2, 2011
73
8
my problem is that I do not know where to find the bytes 10 01 22 00 to change, and where is smali

steps mentioned in this topic dont need to work with smali. you dont need it .

just in Hex editor search menu set the database type to hex-value and serch for the 10 01 22 00 in all directions for the phone.odex file of ICS roms.
 

x625

Senior Member
Oct 2, 2011
73
8
hello again,
I used the way in post 74 for GB stock rom and post 131 for official ICS rom it worked good.
but for some reason I came back again to latest GB 2.3.6 UHLB2 but deodexed by wanam(stock rom). Again have trouble:
1. the string 32 84 2F 00 12 13 not exist in classes.dex (extracted from phone.apk)
2. I extracted classes.dex with winrar from phone.apk but dont know how to Save and add classes.dex back to phone.apk?? (I mean how to repack new phone.apk with new classes.dex with winrar??)
please guide me how could it be done
thanks in advance
 

paradoxsm

New member
Mar 7, 2005
2
0
Sorry to Hijack an old thread but I've been trying to solve this horrible issue since getting the phone. It's ether open it up and remove the second mic (killing the speakerphone) or just giving up and getting another phone.

Tarobun your posts have been of great help to at least TRY to fix this!

I tried hex editing the phone.apk (and following the java checksum) on my deodexed rom but it seems to have done nothing. Testing by simple means of calling another number, playing speech through the bottom mic and any sound at the top mic still affects it horribly.

Android 2.3.6, BB I9100XXKI4, Siyah 2.6.35.14-DarkKnight v2.3+

I never had the option on mine when in call to turn the noise suppression off, a friend has a stock device with carrier branded firmware and has both an in-call option and the squiggly icon present.

I have two phone.apk's that are supposed to work with this rom, neither give me the in-call option. One has "record", the other has "add call"

I did also try to copy across the Phone.apk, Phone_Util.apk, PhoneCrashNotifier.apk, PhoneErrService.apk from a RomKitchen rom that DID have the option to no avail.

What I did find curious was when I DID install the RomKitchen ROM (which drank battery) and subsequently ODIN'd the official carrier branded firmware that my device came with back on it, the noise suppression option was still present. Once I'd done a full hardware reset however, it was once again gone so there must be some other hidden setting that enables the presence of the selectable noise cancelling user interface.


I would attach the files but I can see only valid extensions but no upload button, might be because I'm "new" even though I registered when this site was dedicated to my HTC Wallaby (Qtek 1010)
 
Dec 9, 2009
31
2
Odense
Hi... i read all posts here, but really i'm not developer and don't understad very well the steps, i put my phone.apk from a Deodexed Custom Rom (GOATRIP) for galaxy note, can fix noise reduction off and send me back plz? :D:D:D

i wish write this post in galaxy note forum, that have the same error of noise reduction off, but in note really cant find the problem, only a mod for stock rom in gingebread :(, can anybody help me with this problem?
 

Attachments

  • Phone.apk
    3.2 MB · Views: 60
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 21
    I searched a solution to disable NR in the beginning of the call. I had an echo problem in my phone, and the only way to fix it was to disable the NR.

    The problem - each time you place or answer a call we need to go to menu and disable it.

    All the codes that posted here didn't disable the NR. they only disabled the menu.

    After digging for a few days in the smali of the Phone.apk I found the solution -

    You need to edit CallNotifier.smali -

    Search for - turnOnNoiseSuppression and rem the line

    In my case it looks like this.

    Code:
    .line 957
        .local v3, noise_reduction:Z
        iget-object v8, p0, Lcom/android/phone/CallNotifier;->mApplication:Lcom/android/phone/PhoneApp;
    
        const/4 v9, 0x1
    
        [COLOR="Red"]# [/COLOR]invoke-static {v8, v3, v9}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V


    And in PhoneApp$PhoneAppBroadcastReceiver.smali (not all APk's needs it)-

    Code:
    .line 1930
        sget-object v1, Lcom/android/phone/PhoneUtils$AMRState;->WB:Lcom/android/phone/PhoneUtils$AMRState;
    
        invoke-static {v1}, Lcom/android/phone/PhoneUtils;->setAMRCodec(Lcom/android/phone/PhoneUtils$AMRState;)V
    
        .line 1940
        :goto_9
        iget-object v1, p0, Lcom/android/phone/PhoneApp$PhoneAppBroadcastReceiver;->this$0:Lcom/android/phone/PhoneApp;
    
        invoke-virtual {v1}, Lcom/android/phone/PhoneApp;->getApplicationContext()Landroid/content/Context;
    
        move-result-object v1
    
        invoke-static {v1}, Lcom/android/phone/PhoneUtils;->isSupportedNoiseReductionInWBMode(Landroid/content/Context;)Z
    
        move-result v1
    
        if-nez v1, :cond_21
    
        if-ne v0, v5, :cond_21
    
        iget-object v0, p0, Lcom/android/phone/PhoneApp$PhoneAppBroadcastReceiver;->this$0:Lcom/android/phone/PhoneApp;
    
        invoke-virtual {v0}, Lcom/android/phone/PhoneApp;->getApplicationContext()Landroid/content/Context;
    
        move-result-object v0
    
        invoke-static {v0}, Lcom/android/phone/PhoneUtils;->isNoiseSuppressionOn(Landroid/content/Context;)Z
    
        move-result v0
    
        if-ne v0, v5, :cond_21
    
        .line 1943
        iget-object v0, p0, Lcom/android/phone/PhoneApp$PhoneAppBroadcastReceiver;->this$0:Lcom/android/phone/PhoneApp;
    
        invoke-virtual {v0}, Lcom/android/phone/PhoneApp;->getApplicationContext()Landroid/content/Context;
    
        move-result-object v0
    
        [COLOR="Red"]# [/COLOR]invoke-static {v0, v4, v4}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V

    Different apk's versions may have different line number and variables numbers.

    This change will make the phone starts calls with NR off. (may not work in the first call after the phone boots up - looking for a fix)
    you can still turn it on if you want, during the call

    Enjoy!
    5
    Most ROM have a slightly different version of Phone.apk so it's best to modify the one that came with your ROM.

    Having said that, the fix is very simple (just changing a 1 to a 0) so you could hex-edit the apk/odex directly... how good is your hex editing skills?

    To make the changes via hex editing, do the following:

    For odex ROMs:
    1. Download the Phone.odex file
    2. Open in hex editor
    3. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
    4. Change the last byte to 03
    5. Save and upload Phone.odex to /system/app
    6. Reboot

    For dexodex ROMs:
    1. Download the Phone.apk file
    2. Extract the classes.dex file (unzip Phone.apk classes.dex)
    3. Open in hex editor
    4. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
    5. Change the last byte to 03
    6. Save and add classes.dex back to apk (zip Phone.apk classes.dex)
    7. Upload Phone.apk to /system/app
    8. Reboot

    Otherwise upload your Phone.apk and I'll make the change for u.
    3
    update for ics 4.0.3

    Most ROM have a slightly different version of Phone.apk so it's best to modify the one that came with your ROM.

    Having said that, the fix is very simple (just changing a 1 to a 0) so you could hex-edit the apk/odex directly... how good is your hex editing skills?

    To make the changes via hex editing, do the following:

    For odex ROMs:
    1. Download the Phone.odex file
    2. Open in hex editor
    3. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
    4. Change the last byte to 03
    5. Save and upload Phone.odex to /system/app
    6. Reboot

    For dexodex ROMs:
    1. Download the Phone.apk file
    2. Extract the classes.dex file (unzip Phone.apk classes.dex)
    3. Open in hex editor
    4. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
    5. Change the last byte to 03
    6. Save and add classes.dex back to apk (zip Phone.apk classes.dex)
    7. Upload Phone.apk to /system/app
    8. Reboot

    Otherwise upload your Phone.apk and I'll make the change for u.

    for ICS 4.0.3 you will have to search for 10 01 22 00 D6 and replace 10 with 20

    smali :

    .method private onPhoneStateChanged(Landroid/os/AsyncResult;)V
    ...
    invoke-static {v0, v1, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V

    second parameter has to be modified to v2:

    invoke-static {v0, v2, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V
    3
    Most ROM have a slightly different version of Phone.apk so it's best to modify the one that came with your ROM.

    Having said that, the fix is very simple (just changing a 1 to a 0) so you could hex-edit the apk/odex directly... how good is your hex editing skills?

    To make the changes via hex editing, do the following:

    For odex ROMs:
    1. Download the Phone.odex file
    2. Open in hex editor
    3. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
    4. Change the last byte to 03
    5. Save and upload Phone.odex to /system/app
    6. Reboot

    For dexodex ROMs:
    1. Download the Phone.apk file
    2. Extract the classes.dex file (unzip Phone.apk classes.dex)
    3. Open in hex editor
    4. Search for the bytes: 32 84 2F 00 12 13 (there should be only 1 match)
    5. Change the last byte to 03
    6. Update checksum (java -jar FixDEXChecksum.jar classes.dex)
    7. Save and add classes.dex back to apk (zip Phone.apk classes.dex)
    8. Upload Phone.apk to /system/app
    9. Reboot

    * thanks to Lula for FixDEXChecksum

    Guys, there's too many versions of Phone.apk for me to fix them all. :)

    I've updated the instructions so that they will work correctly for you now so try to do them yourself. If you don't know how to use Apkmanager or apktool then I'd suggest you need to do some searching. :)
    2
    hello tarobun
    I really appreciate you if you can update your string value for ICS odex roms because after I updated to ICS again suffer from this problem and don't want to use some physical way to open my phone and the code don't exist on official ICS roms

    thank you so much

    The answer has already been provided by firero :)

    for ICS 4.0.3 you will have to search for 10 01 22 00 D6 and replace 10 with 20

    smali :

    .method private onPhoneStateChanged(Landroid/os/AsyncResult; )V
    ...
    invoke-static {v0, v1, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V


    second parameter has to be modified to v2:

    invoke-static {v0, v2, v1}, Lcom/android/phone/PhoneUtils;->turnOnNoiseSuppression(Landroid/content/Context;ZZ)V

    But search for just 10 01 22 00 and change first byte from 10 to 20.