Monday 22 October 2012

[At Your Own Risk] How to disable Fast Dormancy on the Galaxy S III and Galaxy Note II

UPDATE October 2012 - Confirmed working with the Galaxy Note II N7100 as well!

Now easier than ever before!

Welcome to the guide to disabling Fast Dormancy on the Samsung Galaxy SIII (And Galaxy Note II).

Naturally as this one comes with the [At Your Own Risk] moniker, Root privileges are required. If you haven't Rooted your Galaxy SIII yet, it's super-easy, and we even have a wonderfully easy to follow guide right here (Or for the Note II, you're going to want to hit up our friend Chainfire's Auto-Root in this XDA thread). Before you do that however, be sure to familiarise yourself with our standard weasel-words disclaimer at the beginning of this piece. If you can't be bothered reading the disclaimer, and want to foolishly plow into things without understanding what you're up to, be aware that our disclaimer is fairly dire, and we mean every word of it (even the bit about pointing and laughing at you, Nelson styles). That said we don't publish any guides requiring Root privileges here at AndroidNZ that we haven't personally road tested, so there is that.

If you happen to be making your first steps in the world of Rooting, modding, hacking and generally making your Android device truly yours, you should probably also check out our guide to backing up your shiny toy before getting any further.

Anyways, make the jump and join us after the break where we explore what Fast Dormancy is, why you might want to disable it and a full-on guide on how to do just that on your Samsung Galaxy S3! Or Note II!

Let's talk about Fast Dormancy

Well first off I'd like to answer two fundamental questions when it comes to Fast Dormancy (FD):

What is Fast Dormancy?

Fast Dormancy is a relatively recent technology that is aimed at saving battery life on your phone as well as reducing congestion on mobile networks. Essentially when your phone stops submitting data, it waits for a message from the mobile network telling it to close the connection. On some phones you might notice this is when the H or H+ symbol becomes a 3 or 3G symbol. Essentially its a fast way of making the mobile data connection become dormant, thus saving battery. Many recent devices, including the Samsung Galaxy SIII support Fast Dormancy and in general that is a good thing. 


Why on earth would I want to disable it then?

Even though Fast Dormancy sounds like a brilliant idea (and it is) some mobile networks choose not to implement it citing reasons such as cost and network congestion (I call bs on this one though). Unfortunately if Fast Dormancy is not supported by your network and it is enabled on your phone it can cause problems. This is because your phone is sitting around waiting for a message from the mobile carrier telling it to make the data connection go to sleep.

Here's an easy way to tell when Fast Dormancy is effective:



Carrier has FD Enabled
Carrier has FD Disabled
Phone has FD Enabled
Good
Bad
Phone has FD Disabled
Bad
OK


The main issue with this is it causes a lot more battery drain in standby. That's because your phone isn't going to sleep properly. If you get BetterBatteryStats you can even see the Kernel Wakelock caused by a phone with Fast Dormancy enabled on a network that doesn't support it. This will be shown as secril_fd-interface and can cause your phone to be 'awake' for a much longer period than required - thus draining the battery.


Puzzling out the Fast Dormancy Problem

I spent a huge amount of time trying to work out why this secril_fd-interface wakelock was causing me battery drain. Eventually I worked out that this was due to Fast Dormancy not being supported by Telecom NZ, my network of choice.This was the first clue to puzzling out this enigma of a problem.

While the Galaxy SII models I9100 and I9100T both have the ability to disable Fast Dormancy from a secret menu accessible from the dialer (*#9900#*) this is no longer supported in the SIII or Note II. This was the first of many frustrating attempts to disable FD.

After more research I found some people saying to add the following line to the build.prop:
ro.ril.fast.dormancy.rule=0
I found that this was completely ineffective, I continued to get secril_fd-interface wakelocks.

Where was the solution to the Fast Dormancy problem?

The next clue lay in the fact that I didn't purchase my handset from Telecom NZ. so this led me to believe that perhaps the clue lay in the Telecom supplied GS3 unit the I9300T and it's supplied CSC files. Fortunately a friend of mine had purchased the Telecom model and was able to provide me with the aforementioned CSC files. 

I then tried to modify the CSC files on my existing ROM. To put it bluntly, this did not work. I assume that the CSC files affect the configuration of the phone only during the initial setup of the phone. This meant I would need to perform at least a factory reset, and I was unsure if even this would work.

My next attempt was to modify a custom rom's CSC file to contain the Telecom NZ CSC entries and then flash this ROM to my phone. I downloaded the Omega V5.1 XXALF2 based ROM, modified the CSC files using Winrar and then flashed it to my phone. 

To my great surprise it worked! I was no longer getting secril_fd-interface wakelock. After this revelation I realised that not everyone is going to want to flash a custom ROM to disable FD. This  this led me to my final solution and took even more research. Fortunately I was able to find some other people on XDA who wanted to enable FD, and the process is very similar. The solution lies in modifying the nwkinfo.db configuration database files to add/modify records pertaining to the carrier without having to flash another ROM. 

I'd like to give credit to the following sources which helped me to figure this out:

  • This post by uskr on the Galaxy SII Forums
  • This post by cmd512 from the Galaxy SIII Forums
  • ChroNZ and his FiancĂ©e who provided the Telecom NZ CSC files

Now on to the guide itself!

Updated Method as of 2 July 2012

The complicated part of disabling Fast Dormancy detailed in this guide has been superseded by a new app by the recognised developer of the Siyah kernel - Gokhanmoral

You can find the app here: FastDormancy Toggle for i9300

It's confirmed to work in the Galaxy Note II (N7100) as well.

This app allows you to click to add or remove the records required to disable fast dormancy. You may still read the rest of the guide to get an idea of what the app is doing, as well as adding in the APN records for your carrier. Also if you wish to modify the timing of FD then the guide may still be useful, until Gokhanmoral adds this functionality in a future release


DEPRECATED GUIDE BELOW
Read this if you want to know the specifics of how disabling fast dormancy works.

Install the following free apps before you begin:
Android Terminal Emulator- for finding out your operator's numeric identifier
aSQLiteManager - for editing the SQLite database entries
aShell - for opening the SQLite database files in the system location


Finding out your mobile carrier's PLMN number

In Android Terminal Emulator perform the following:
  1. Type su then press enter
  2. (Grant root access when Superuser or SuperSU asks for it)
  3. Type cd /data/data/com.android.providers.telephony/databases/ then press enter
  4. Type # getprop gsm.operator.numeric then press enter
  5. Write down the number given, for me it was 53005 which is Telecom NZ 



Note that the above steps can also be performed using your SIII connected to a PC using ADB if preferred.

Modifying the network info

Now since you've installed aShell open it and follow the steps below:
Click root and press File Explorer (If it asks for Root access then grant it)


Browse to /Data/Data/com.android.providers.telephony/databases so that the path is showing as follows


Select nwk_info.db and click Yes to the warning. You will be asked which application to open with. Select aSQLiteManager.


 Select Open database with aSQLiteManager


Now here's the fun/dangerous part: modifying or adding the database entries for your network carrier.

Adding your Carrier APN settings

I think this part is optional if you want to put the APNs in through the normal Android interface. Since we're in here it might pay to put the correct APN settings in anyhow.

Select Carriers and you will see the field names for this table.


Select Data and you should see a screen that looks similar to the one below


If you can see a record that says the plmn number you wrote down earlier (mine is 53005) then you will need to edit the existing record by selecting Edit next to the record. Otherwise note down the highest ID number in the table (that's the first field in the table) and press New.

Now here's the tricky part. You are going to need not only the plmn number but also the primary data APN details for your carrier. For comparison's sake here are the Telecom NZ details to enter:


Field
Values for Internet
Values for MMS
id
(highest number +1)
(highest number +1)
name
TelecomInternet
TelecomMMS
numeric
53005 (this is the plmn)
53005 (this is the plmn)
mcc
530
530
mnc
05
05
apn
Internet.telecom.co.nz
wap.telecom.co.nz
user
(leave blank)
(leave blank)
server
(leave blank)
(leave blank)
password
(leave blank)
(leave blank)
proxy
(leave blank)
(leave blank)
port
(leave blank)
(leave blank)
mmsproxy
(leave blank)
210.55.11.73
mmsport
(leave blank)
8080
mmsc
(leave blank)
authtype
1
1
type
default
mms
protocol
IP
IP
roaming_protocol
IP
IP
carrier_enabled
Checked
Checked
bearer
0
0
homeurl
(leave blank)
nwkname
Telecom NZ
Telecom NZ
preferred
Checked
Checked
editable
Checked
Checked

The details for Telecom were sourced from this thread on Geekzone. If you aren't in New Zealand you're own your own figuring this out. Bear in mind this will basically write APN

Enter the details for your carrier using the interface shown in the screenshot below. Make sure the id is one number greater than the highest id you saw in the table. For example if there were 3 records the highest id would have been 3, so your record needs to have an id of 4. If you are editing an existing record then ignore this. 


You should now have several records, at least one for Internet and one for MMS displayed in the carriers table as per the screenshot below.  Note that there may also be records for other carriers, or other plmn numbers for the same carrier.


Now press back so you can see the list of tables and we can continue to the next section.

Setting the network info (nwkinfo)

The next step in this process is to add the correct records in the nwkinfo table so select that and press data to view the current records for the table.


You may not have any records in this table, but if you do identify whether or not they have the correct plmn number. If there is an existing record for the plmn number of your carrier then press edit, otherwise press new. There should only be one record per plmn number in this table.


Enter the details as per the screenshot above and your carrier's plmn. The key part here is setting the dormancy field to off. Press OK once this is complete.

You can check that the records are correct and then press back to return to the list of tables.

Setting the Dormancy Policy (dormpolicy)

Open the dormpolicy table so you can edit the dormancy policy, or timeout settings for your carrier. Press Data to view existing records.

As before if a record exists for your carrier's plmn press edit on that record, otherwise press New.


Since you are disabling Fast Dormancy you want to set the lcdontime and lcdofftime to zero. If your network supported fast dormancy you'd want to set this to 60 or something similar.


You should now have a record for your carrier that has values of zero for both lcdontime and lcdofftime


Press back to go back to the list of tables and then press back a few more times until you exit out of the database. You should now see a prompt asking you to commit changes and since you followed the instructions very well you are confident and want to save the changes you just made so press Yes


So before all of this your BetterBatteryStats was showing something similar to this with secril_fd-interface causing wakelocks.


Now reboot and you will see something more like the screenshot below with secril_fd-interface gone from the list


Now if only I could get rid of those darn PowerManagerService wakelocks! 

[FYI Nick, I had that too, uninstalling Light Flow removed PowerManagerService wakelocks for me -Ed]

Congratulations, Fast Dormancy is now disabled on your handset. If your network happens to start supporting FD then following this guide and using a little common sense should help you to remedy that situation. 

If you have any corrections or other feedback feel free to leave a comment. 

Oh, and if you're new to AndroidNZ, or missed some of our earlier SIII coverage, make sure to check it out some of the choicest morsels below and get the most from this masterpiece handset:

Galaxy SIII review, Part 1 (Part 2 up later today!)
How to Root your Galaxy SIII
Galaxy SIII connectivity demo
How to use your PS3 controller wirelessly with your SIII - even on games that don't support controllers!
The Top Ten Standalone apps for your Galaxy SIII

46 comments:

  1. Thanks. It really work. I didn't do the APN part, but followed the rest. Better Battery stats no longer shows the secril_....wakelocks anymore. But how do I eliminate the PowerManagerService wakelocks? What is Light Flow? I can't find it in my installed apps?

    Thanks again

    ReplyDelete
    Replies
    1. Hi there, PowerManagerService wakelocks are actually a blanket kernel wakelock for all of the wakelocks caused by user applications. Light Flow is just one possible cause of PowerManagerService wakelocks, there can be other culprits too.

      I am not sure if it is possible to completely stop PowerManagerService wakelocks, but if it isn't causing a large amount of awake time on your phone then I wouldn't worry too much.

      Delete
    2. Nick is 100% correct. It isn't possible to complete remove the PowerManagerService wakelocks, and if they are not dominating your wake lock times then don't worry about it. If you have Light Flow installed the phone will never deep sleep and it will be perpetually wake-locked, that's why I mentioned it. After uninstalling Light Flow my S3 battery life went from bad back to awesome.

      Delete
  2. Hi, having trouble getting this to work, my phone is rooted and everything has root access. I can't get Android Terminal Emulator to find PLMN number it just comes up with "not found"(I've checked the path entry) I'm on NZ telecom so the number given should be the same yea? Also I can't find nwk_info.db in ashell, I can't seem to get the path like in the second screen shot of ashell, any idea what I'm doing wrong?

    ReplyDelete
    Replies
    1. Hey there,

      Regarding the PLMN number, if you're on Telecom NZ it should be the same. Could be that you are having issues with root access.

      In regard to finding the correct subfolders, if you press menu you can put in a filter to help find it. aShell's ui is not very conducive to finding stuff.

      Delete
  3. Can I ask, what the difference in battery life is with this modification, Pre and post mod?

    ReplyDelete
    Replies
    1. Hi there, it really depends on the usage patterns of your phone, the signal strength in your area and how much time the secril_fd-interface wakelock is keeping your phone awake. I would imagine if your phone is in standby quite a lot then you'd notice a substantial improvement, less so if you are quite a heavy user.

      Delete
    2. See that's the thing...what you're saying is "is depends on a whole lot of things" and "you would imagine"...I'm yet to see any hard data on the pre and post effects of this fix.

      I'm a telecom user with a two JB HiFi S3's and they don't suffer from bad battery life that I know of, because, noone is naming what bad battery life is..i.e gimme a figure.

      What do you mean I've got bad battery life?

      Delete
  4. I've downloaded the programme and looked for the line you're suggesting, and I can't see it anywhere. Must be looking in the wrong place?

    ReplyDelete
  5. this worked great. cheers.

    interesting after manaually creating the APN settings like this they still don't show up in the ICS apn settings screen. but internet and pxt working fine ..so all good.

    ReplyDelete
  6. Interesting, will give it a try.
    On remark about (I quote)"Now if only I could get rid of those darn PowerManagerService wakelocks!"

    PowerManagerService is the sum of all partial wakelocks (as you can read if you click on the little globe right to that kernel wakelock).

    ReplyDelete
    Replies
    1. Yep you are exactly right, my comment was a bit tongue in cheek as I know you can't completely remove wakelocks or your phone would essentially be a brick with the screen turned off.

      Delete
  7. Why is disabled FD is bad when the carrier is also disabled?
    Doesn't make sense at all with the table.

    I think you meant: If your phone has FD disabled/Carrier disabled = Good!

    ReplyDelete
    Replies
    1. Yes I think you are right. Although technically I wouldn't say it's good as having Fast Dormancy enabled on both the phone and network is the most battery efficient configuration.

      Delete
  8. Thank you SO SO SO MUCH. It worked!!! I skipped the APN part too like the "Unknown" user and it worked. I'd like to thank you so much for your help! :)

    ReplyDelete
  9. Hello everybody, and to mainly the person who posted this initially. Regarding the (*#9900#*) from dialer to access fast dormancy enabling/disable, well I have a Samsung Galaxy Mini aws canadian version, and I use (*#990#) to access the syst dump menu which also has enabling/disable FD. NOTE THE ONE LESS 0 AND NO * AT THE END OF THE SEQUENCE. Maybe this is for some phones.

    ReplyDelete
    Replies
    1. Hi there, thanks for the comment.

      Regarding the *#9900#* dialer code - on the S3 this still accesses a menu, however the option to enable/disable fast dormancy is no longer available as it was on the S2

      *#990# does not have any effect on the S3

      Delete
  10. Light Flow isn't a stock app, you have to have installed it from the Play Store (and if you've done that uninstallation is as per usual). I happen to know that it is installed to Nick's S3 and causing his PowerManagementService wakelocks (alas he can't give up his addiction to it though).

    ReplyDelete
  11. The app _seems_ to work in CM9 as well to disable FD on my Galaxy Note. It said FD was enabled, ran it, rebooted and now it says disabled. Now, I'm not sure if CM9 even supports FD and I can't find anything solid one way or another.

    Anyone know if this is a "good thing"? (I'm on Telecom as well so have no use for the function).

    Cheers,

    Steve.

    ReplyDelete
  12. Thank you guys for this app, I've read all post but choosed to try the app instead of doing it myself manually on my S2 with CM9.
    I've disable FD and restarted phone 2 minutes ago... will have to wait a few hours to see if "secril_fd-interface" is not shown up in the BetterBatteryStats.

    Thanks for your effort and passion doing this research and app.

    ReplyDelete
  13. I tried this on CM9 on my I9100. I opened nwk_info.db, but I don't have "Carriers" or "Data" tables. Only "sqlite_master" and "android_metadata".

    Is this information missing on the I9100? Since *#9900#* doesn't work with CM9, is there another way to disable FD without flashing stock Sammy rom?

    ReplyDelete
    Replies
    1. Sorry no idea about whether CM9 even supports FD

      Delete
  14. Hi, how do I check whether my carrier support FD?

    ReplyDelete
    Replies
    1. As far as I know there is no easy way but you can possibly make an educated guess based on the RRC States. Check out this XDA TV Video: http://www.xda-developers.com/xda-tv-2/fast-dormancy-the-whole-story-xda-developer-tv/

      Delete
  15. Ask your provider, they should tell you.

    here's the technical document on it... from what I can see, it can be detrimental to both the network and the end user. basically, it's been blown out of proportion, it might save you some battery, but at the cost of a better service from your providor.

    http://www.scribd.com/doc/101112289/Fast-Dormancy-Best-Practices

    Looks like it's another issue that'll never be resolved due to manugacturing/software development/end users/network providors all wanting different things.

    ReplyDelete
  16. I wonder if my phone is ok.. biggest "Other" battery hogger is Deep Sleep & on Kernel Wakelok "PowerManagementService"

    ReplyDelete
    Replies
    1. Doesn't sound like you have a problem

      Delete
    2. HI NICK IM CONFUSING ABOUT FAST DORMANCY, SINCE I ROOT AND USING FOX HOUND AS MY ROM,I CANT FIND SECRIL_FD_INTERFACE, IS THAT MINE MY FD DISABLED? THANKS.

      Delete
  17. But hey. "multipdp" is also related to dormancy... So why do you still have that one? It was even worse than "secril..." in the before situation. And if this is something else than Fast Dormancy, then I can hadrly think that battery life will be noticeable better with Fast Dormancy disabled.

    ReplyDelete
  18. Hi again. I have both S3 and S2. I disabled Fast Dormancy in my S2 and restarted the phone. I still see secril wakelocks even after this...

    ReplyDelete
  19. will this work with the note 2 N7100? since the s3 is quite similar to it? thanks

    ReplyDelete
    Replies
    1. Sure does, tested it on my Note II after getting 4 hour wakelocks. Thanks for the reminder, post updated now.

      Delete
    2. It doesn't work on my Note II. What is wrong with it?

      Delete
  20. Work perfect with original Note.
    Thanks.

    ReplyDelete
  21. I have read this over and over again ..but not sure what this is meant to do? maybe am just losing it.. could someone explain ?

    thanks

    ReplyDelete
    Replies
    1. Show you how to disable fast dormancy if your mobile provider doesn't support it. This can help increase battery life.

      Delete
  22. Excuse me. Is there any method to find out if my network has fd? I called them and they tod me they dont know wtf i was talking about

    ReplyDelete
    Replies
    1. Unfortunately there is no easy way to tell whether or not your network supports FD.

      Delete
    2. So seeing secril_fd-interface in betterbatterystats does not automatically mean that it is not supported by the network provider? I thought that by seeing this particular wakelock it would mean that it is not supported and that I should disable it... No?

      Delete
    3. Nope, even if your provider supports fast dormancy you will still see secril_fd-interface wakelocks, however they should not be causing your phone to wakelock for hours on end.

      Delete
  23. I'm sorry... how can I simply change the timeout leaving FD enabled?
    Can't understand that clearly..
    Thank you.

    ReplyDelete
    Replies
    1. Try setting the lcdontime and lcdofftime in the dormpolicy table. I'm not entirely sure what they do but pretty sure it is related to the timeout (perhaps one is when the lcd on, the other when it's off..)

      Delete
  24. Hi!! The app works perfectly on my s3
    But using Whatsapp multipdp is Very hi,!! Is There a Way to minimizing time of multipdp?

    I have Also l2 hsic Very High. Is this related to data Connection?

    I use Whatsapp a Lot But this case a terrybly batter . Drain. I am sure that is data Connection because when i use wifi all daylong is neverending!

    Data must be turned of manually while using wifi?? Or its turn off autimatically?? Or something stile work beneath?

    Thanks for the help i think You are the one Who Can sole my questione!!!

    ReplyDelete
  25. Hi Folks!

    I have a S3 and used the Toggle to disable fast dormancy, has worked but now I can't use the 3G's connections also GSM/Edge, the mobile data does not work.... I use Revolution 18.0 ROM (very fast by the way!!)

    Appreciate sugestions!! Thank you!

    ReplyDelete
  26. Can this tutorial work with S4 I9505?

    ReplyDelete