[Galaxy S II Q&A, Help & Troubleshooting] hawkerpaul:
There has been quite a bit of discussion about Fast Dormancy, so I thought I would try to investigate it, and to explain things a little.

I don't claim to be an expert on this. Far from it. I'm merely putting across what I have found out about the subject, and what my observations have been on the it.

Firstly a little explanation on what FD actually is.

When your phone is connected via 3G data (not 2G or wifi) your phone needs to enter certain states in order to maintain this connection and allow data transfer. If your Operator does not have FD support or you have it disabled, then basically your states are just connected or not connected. What this means is that every time your phone connects to data, it will have to go through all of its various stages and internal functions in order to make the connection and then perform the actual data transfer. This is slow and obviously the more processing that is required, the slower your experience will be, and the greater the affect will be on your battery.

FD tries to tackle this problem by having several different states so that the full connection/disconnection cycle is not required every time. Each state has a different level of data throughput and power consumption.

DCH - High volume data (highest power consumption)

FACH - Lower volume

PCH - No data but keeps connection

IDLE_CCCH - Not entirely sure about this one but I think its an interim, lower level stage between PCH and:

IDLE - Connection dropped (lowest power consumption)

When in DCH state, your phone is doing the highest volume of data transfer, and obviously consuming most power out of your battery.

The way FD works is when transfer rates drop, the state drops to FACH for less power consumption and then back up immediately to DCH as and when required, or if this transfer state is over for the time being, (eg. you have stopped browsing) instead of going back to IDLE which would mean going through all the connection procedures next time data is required, the state drops down to PCH. This is a very low powered state, and when data is subsequently required, it can then immediately go back up to FACH or DCH with minimal effort. The less stages that is required to get the connection back up and running the better, both in terms of battery and speed.

To turn FD on/off enter *#9900# in the dialler to get into the SysDump screen then select the Fast Dormancy option

Alternatively, gokhanmoral has an app called FastDormancy Toggle for i9300 which can also do the job. I've not tried this app personally, but I've been told it works fine on the i9100.

Whether you keep FD on or not depends primarily on if your network operator supports it.

If your network operator supports it, then enabling it is not necessarily the best answer, as it can depend on the combination of the following things:

1. How you use your phone - Are you a heavy or light data user?

If you are a heavy data user then enabling FD is almost certainly the way to go. The less the phone needs to do in order to fire the connection back up, the better. However, if you rarely use the phone for a data connection, then it may prove beneficial to you to switch it off so that the IDLE state is entered sooner. Bear in mind before you decide on if you should turn it on or off, consider what your data sync options for contacts/calendar/email etc. are. If you dont browse too often, you may still be using data in the background quite often even though you are not physically doing so through various background syncs.

2. How "intelligent" your Operator's FD actually is.

I believe the operator defines the parameters for the timings of these different FD states, so results can vary drastically between different networks. To see how your carrier handles FD can be done via a simple test on a Samung ROM. With wifi off and FD enabled, at the dialler, type *#0011#. This takes you into the ServiceMode menu. The important piece of information here is the RRC State line. Press the home button and open a browser session and go into a web site, then immediately long press the home to get the list of tasks and select the ServiceMode app. The RRC State line should be DCH (or at least FACH) and you should see some activity in your signal indicator arrows on the status bar. Eventually you should see it drop down from DCH -> FACH -> PCH -> IDLE (sometimes you may see IDLE_CCCH). Ideally, the state should stay at PCH for a while, then eventually drop to idle.

My findings so far on JB is that FD seems to be handled differently to the way it was on ICS. In fact, I'm not entirely sure its working on JB at all! For me, it seems to go from DCH -> FACH, and shortly after that (perhaps up to 5 seconds) drops to IDLE. This is not great if your going to be using more data shortly, but ok if you are no longer browsing.

After further testing, it seems on JB it make no difference if FD is enabled or disabled in the ServiceMenu.

The transitional RCC states it enters seem identical regardless of the FD option you have set.

My testing when on ICS suggested that when going from DCH eventually down to IDLE, the handset seemed to go to FACH for a short period, then sit on PCH for sometimes up to 10 minutes. This has a big advantage if you are about to do more browsing shortly, is it will take much less power to resume the connection and enable the data transfer to begin more quickly, but has the drawback of if you have indeed ended your browsing for the time being, it would be using more power compared to if it was in IDLE. So swings and roundabouts.

Perhaps my observations on ICS (ie, remaining on PCH for up to 10 minutes) is how FD should behave.

Remember FD only applies to a data connection. It does not kick in whatsoever when you are connected to wifi or on 2G.

The quality of your data connection (ie. H+, H, 3G) may also have a bearing on how FD will perform. Better connectivity should give you a more efficient FD performance.

Tip 1.

If your wifi sleep policy is set to "keep wifi on during sleep only when plugged in" then this will mean your data will take a hit whenever your screen is off (unless plugged in of course) If you think FD is not for you because "I'm almost always connected to wifi" (ie. at home/work) then you will still need to consider what the best FD policy is for you when on this sleep policy, as obviously, your screen is off most of the day.

Tip 2.

If you are not connected to wifi overnight (either your not at within your router's range, or you have set your wifi sleep policy not to be connected) bear in mind what your phone does overnight in terms of background data activity (ie. your data sync options and widgets such as news/weather etc). If you have minimal data activity overnight (you set your widgets to sleep for example), then it would be better to switch FD off, as less battery would be consumed to go straight back to IDLE than hang around for possibly 10 minutes or more each time in FACH.

Note

You may well have a higher l2_hsic wakelock when FD is disabled, but when FD is enabled you may find this drops slightly, only to find another one called secril_fd-interface kick in instead, so again, swings and roundabouts.

I did extensive testing on this on ICS, and came to the conclusion that was better FOR ME to turn FD off, but the differences were not drastic. It can however make huge differences for others, depending on your Operator and your usage habits.

On JB, I've found it better to keep wifi on constantly, and keep FD enabled.

It would be interesting to compare how your firmware/carrier handles FD.

Bottom line is, try it and see what works best for you.

:)

Note:

I don't think the *# service codes work on CM/AOKP based ROMs but you can certainly give them a try!

If the codes do not work on your Samsung ROM then you will need to install FactoryTest.apk.