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 DormancyWell 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
Phone has FD Disabled
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 ProblemI 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:
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.
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 numberIn Android Terminal Emulator perform the following:
- Type su then press enter
- (Grant root access when Superuser or SuperSU asks for it)
- Type cd /data/data/com.android.providers.telephony/databases/ then press enter
- Type # getprop gsm.operator.numeric then press enter
- 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 infoNow 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 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:
Values for Internet
Values for MMS
(highest number +1)
(highest number +1)
53005 (this is the plmn)
53005 (this is the plmn)
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