This is the 3rd in the series of Android Battery Saving Tips. If you haven’t already, refer to the first and second parts of this series for beginner and intermediate tips, respectively. In this article, we will be visiting some more advanced techniques used to save a bit of battery power. Note that, just as with every other tip in this series of articles, it is purely optional, your phone will work fine without them for a long time. For those that want to fiddle a bit and are curious, read on.
Preferred Network Type: Most of the Android phones released locally (especially unlocked phones) will be set to scan periodically for a mobile network to connect to and join that one. This is designed for the phone to find the best signal at all times, but this is a compromise on battery life. You can manually set the network type yourself to experiment if this yields any battery life improvement, particularly if you are often in metro areas. To access the service menu, start the ‘Phone’ application (not any 3rd-party phone dialers) and type *#*#INFO#*#* (which equates to *#*#4636#*#*). Select ‘Phone Information’ and select the drop down menu that appears. According to a chap over at XDA, here are the purposes of the different settings:
“GSM only” <—- If you don’t get 3g with this it is the same as 2g setting then use GSM auto (PRL) if you want faster than 2g (as some people are getting 3g on GSM only – I will investigate. (if you don’t use internet or don’t need fast internet)
“GSM auto (PRL)” (Recommended)
1:40am to 2:00pm (12hrs 20 mins) – lost 40% battery with moderate use a bit of surfing at HSDPA speeds, a few calls and messing with a few apps. Other people have had even better results than me though, so I might change my rom and try again.
2:06pm to 11:37pm – (9hrs 31mins) lost 46% battery again moderate use and a reboot
This one might be useful if you live in a place that has low GSM signal as it does give HSDPA – but this is only a suggestion as I cannot test it in Iceland.
6:02am to 2:51pm – (8hr 49mins) lost 41% battery this time with less use that the WCDMA use and no reboots.
Note that WCDMA should not be confused with CDMA, which is different. My personal experience with this is that GSM Auto (PRL) [Here is the definition of PRL, in case you were wondering] yielded slightly better results. If I set it to GSM Only, it would more often result in ‘Roaming’ rather than 3G connection. The phone from factory was set to WCDMA Preferred. The best way is to trial and error yourself, see which ones pick up a good connection and monitor battery use from there. A reboot is not required, just select the option you want and wait a few seconds for it to re-associate. Best results are usually had by manually selecting your carrier under ‘Network Operators’ rather than ‘Select Automatically’, so as to prevent constant scanning of new providers.
Main – Min 245mhz / Max 998mhz (as per standard, nothing surprising here. Raising the lower limit has little to no purpose, as it just affects the idling mhz of the phone, and will increase power draw as a result. You can try lower than 245mhz but may encounter strange behaviour).
Charging – Min 245mhz / Max 998mhz (this is the same as Main, but is required because if the phone enters low power mode [see the following profiles], you want to phone to ramp back to normal when plugged to charger).
Sleep/Standby – Min 245mhz / Max 384mhz (probably the most important setting, when the screen is off or you press the Power button to enter standby, these settings take effect. The max is capped at 384mhz because it’s extremely rare for any process running in sleep mode to require more than this amount of processing power. You can try capping it at 245mhz, but may encounter strange behaviour [such as a slight lag when you receive a phone call]).Power < 40% – Min 245mhz / Max 528mhz (Self-explanatory. Your phone is starting to get a bit low on power, throttle down the CPU to 528mhz, low enough so that there is a noticeable dampener on power draw, but also not too low that it becomes too sluggish).Power < 20% – Min 245mhz / Max 384mhz (OK this is getting urgent, your phone is nearly out of juice. Your CPU throttles down to something barely usable, but should be enough to stretch out that last few joules of energy for a while longer).Failsafe Profile > 50deg – Min 245mhz / Max 384mhz (In the event your phone is overheating, like say you left it in the scorching sun in a closed bag, very rare, then this will throttle your CPU down to cool it down. More of an insurance policy than a battery saving mechanism).
Scheduler – BFS Scheduler or CFS Scheduler, as seen in Linux – The CPU scheduler used in the ROM dictates how resources are allocated and prioritised. The BFS scheduler generally places higher priority on the foreground application, resulting in more responsiveness for the user, or higher benchmark scores, but may adversely affect background applications (of which there are many in Android). The CFS is more commonly used and as the name suggests is ‘fairer’ in it’s allocation of CPU, which will result in background apps running more happily. Some people have have had good experience with BFS, although most ROM creators have since moved towards CFS as they encountered problems with BFS (stating that it’s not suited the Android’s architecture).Voltage – The Snapdragon CPU runs at 1v (1000mv) from factory, but general experimentation has determined it can be undervolted in order to save power. Some kernels will allow you to load on different variants of voltages, the most common being 800mv and 925mv. There are mixed reports about the 800mv kernels, with some people reporting instability, and some people reporting higher power draw (which is counter-logical). I’ve tried both and have ended up settling on a 925mv CFS kernel.Overclocking – Not strictly related to saving battery (quite the opposite), but some kernels also allow for the CPU to be clocked above the standard maximum. Snapdragon CPU’s are capped at 998mhz from factory, but can generally be safety clocked up to 1.113mhz or higher on the standard voltage or below. Some owners have even reported that 1.267mhz is achievable with some tweaks. Note that this will of course, drain your battery faster.Which kernel? If you’re using a Nexus One, you have a choice of the latest kernels from XDA regulars, such as pershoot (OC+UV), WildMonk (OC+UV) and IntersectRaven (UV Only) (found on XDA-Developers). You can trial and error different kernels (assuming they’re compatible with the ROM you’re using) to find one that you have the best experience with. I started off on the IR kernels, found them to be very stable, had some stability issues and lags with WildMonk’s kernels, and eventually ended up with Pershoots OC+UV kernel (with extra RAM hack). Definitely the smoothest, quickest and most stable of them all in my opinion.
If you want to do some further reading, this is a fascinating insight into battery usage of Android devices, by a trio of PhD students, at an event organised by SF Android Users Group. Some great info about the current state of mobile devices, what components on your phone are taking up battery (display and 3G/Wifi radios, CPU ranks a distant 4th or 5th IIRC), and what is being done about it.