04. May 2012 · Comments Off on Android: From Battery Guzzler to Battery Sipper · Categories: Android, Technology

Sense 3.5 Android Home Screen

One of the banes of smartphone owners is that, while the devices are rife with power and connectivity, using the things in a way that leverages their power just eats the battery alive. Bluetooth, WiFi, high-speed cell data, fast CPUs for smooth performance, all exact their toll on the poor little Li-ion pack nestled in the back of the phone. And, when you ask your cell provider why you can’t get through a full day on a single charge, they’ll tell you, “Well, that’s just the way it is with these new phones.”

But it’s not. It’s more that the standard builds of the phone’s Operating System that come from your cell provider just aren’t well optimized, and they waste power unnecessarily. They have a bias toward higher performance and CPU clock speeds, and that uses more power.

This is where the fact that Android phones use an OS based on an open-source platform comes in really handy. I’ve managed to reduce my power consumption to a sip, with a few tweaks.

First, a word of warning. While the Android platform is very flexible, with few exceptions providers lock you out of making changes to the internal system settings and programs. To truly get the benefit of being able to do with your ‘droid what you deem fit, you have to “root” the operating system and unlock (“S-OFF” or Security-Off) the phone. The equivalent of an iPhone jailbreak, this gives you full privileges and access to the Android system internals and the normally locked memory that holds the OS. As this is not a rooting and unlocking tutorial, I will only direct you to RootzWiki and XDA-Developer Forums. You can read and decide for yourself if this is something you want to undertake, as it will void your warranty and will prevent you from receiving over-the-air software updates from your provider.

Now, assume that you have a rooted, unlocked phone. I have an HTC Droid Incredible2, and have used rEVOlutionary to get permanent root and S-OFF. Your phone will have its own procedures, and you should research them at the previous forum links. Once you are fully rooted and unlocked, Superuser and ClockworkMOD Recovery should be next on your install list, as should Titanium Backup. Flash CWM Recovery, and use ROM Manager to make a full backup of the phone’s memory to your SD card. This is your get-out-of-jail-free card should you mess something up later – it allows you to restore the entire device back to the point you took the backup, should something go sideways. Once the backup is done and the phone rebooted, back up all of your apps and data using Titanium. This allows you to restore your applications and their data once you’ve overwritten your provider’s OS.

What you want to do next is to flash a new operating system that has a wide range of CPU speed governors available. In my case, I chose MikRunny World 1.0.3. Not only does it have a nicely tunable kernel, supports World Mode, and has an extensive list of user interface tweaks, it also includes an update to Gingerbread 2.3.5 (supports app data encryption) as well as an uplift to HTC Sense 3.5. RootzWiki and XDA forums will have listings for ROMs for your specific phone, and you should find one that suits you. Download the ZIP file, copy it to the root of your SD card via USB, go to ROM Manager, and Install ROM From SD Card. Pick your ZIP file from the directory list, select “Backup Existing ROM”, “Wipe Data and Cache”, and “Wipe Dalvik Cache” before confirming. The phone will reboot, backup the internal memory, clear all of the phone’s old OS data, and install the new operating system. First boot after a new ROM is flashed will take longer than you think. Be patient.

Android Software Info Screen

MikRunny installed, Sense 3.5, Gingerbread 2.3.5

Once the new ROM is installed and your apps restored, you want to install the CPU Tuner app. Run it, go to Settings, Configurations, Manage Configurations, and load the “Sophisticated” profile. Exit back to the main screen, and it should look like the screenshot below.

CPU Tuner Main Screen

CPU Tuner, Main Screen, "Sophisticated" profile loaded.

Flip right to the Triggers screen and delete all but the Battery Full, Battery Low, and Battery Critical triggers. Set the critical threshold to 15% and the low threshold to 25%.

CPU Tuner Trigger Screen

Flip right two screens to the Virtual Governors settings. Change the Full Speed and Normal virtual governors to use the “smartassV2” CPU kernel governor. If your ROM doesn’t support smartassV2, find one that does (Google is your friend) or use smoothass as an alternate if available. Go back to settings, Configurations, Manage Configurations, hit the menu button and Add Current. Save the config under your own name.

CPU Tuner Virtual Governors Screen

Change the Full Speed and Normal VG's to use "smartassV2"

Configuration Management Screen

Save the new config under a new name.

The new CPU governor will lower the CPU speed to its minimum when you’re not actively interacting with the phone. When background apps are running, the CPU speed will bump up to the next level when the CPU load gets high enough. The smartassV2 governor does this very smoothly and intelligently. As you can see in the next screenshot, the CPU now spends the vast majority of its time running at low speed, greatly expanding battery life.

CPU Tuner Speed Statistics

The result is reflected in battery life. The battery usage tool shows that from a 95% charge, I’ve only dropped 7% in more than 5½ hours.

Android Battery Usage Screen

Previously, using the kernel’s default CPU speed governor, every time a background process kicked in, the CPU would spike to maximum clock speed. The slope you see here is nearly half of what you would see normally.

Next time, we’ll discuss WiFi and some apps that help you intelligently manage it, including more power efficiency.

Comments closed.