[EVO 4G General] NYG27:
Last Edited 4/25/2011 @ 1:00PM EST

*** I’ve updated on my previous post on HTC EVO Best Practices for Battery Management that I’ve put together. There were certain steps that were fine tuned and others that were either added or removed. I just wanted to share with everyone in order to save the time I spent researching, applying and testing these fixes on my EVO and a couple of other EVO’s I’ve tested. ***

*** Just an FYI, I didn’t write any of the apps/codes listed below. I just spent a lot of hours researching methods to improve the battery life on my EVO on several different sites. I’ve linked the sites where I got the information and giving ALL credit to the original posters. If I missed any names and If there are anybody that needs credit to be added for any of the steps below, please let me know and I’ll add them right away. ***

*** These steps have been ONLY tested to work on AOSP ROMs like Destroyer v2, CyanogenMod and MIUI. ***

*** Finally, this is meant to just be a guide for Best Practices for Battery Management. I’ve tested these steps on several HTC EVO’s which had Destroyer v2, CyanogenMod 7 or MIUI and had no issues. If you decide to try these steps in the guide, I take no responsibility for any items that might go wrong with your phones . ***

All that said, let’s get started. I’m looking to keep this as a “Living Document”, so I will continue to update and edit this original post with any new info that is shared by others or get discovered over the next few weeks. For anyone that’s new to rooting and flashing ROMS, I’ve added the first two steps. Most 99% of everyone else on this site, please move onto Step 3.

Step One, Root Your Phone.

Easiest way to do that is to go to http://unrevoked.com/ and select your phone. Then select Unrevoked3 “Painless root and flash”. If you’re a MAC or Linux user, just download the software. If you’re on a Windows computer, download and install the HBoot Drivers by clicking on “More Info?” Once you launch the software, just follow the onscreen prompts and your phone should be rooted within 5-10 minutes.

Step Two, Backup and then Flash a ROM.

Easiest way to do that, is after you’ve rooted the phone, go to the market and download the app ROM Manager by ClockworkMod. Once you access the app, it's very important to first backup the ROM that came prepackaged with your phone in case you ever need to flash back to it. Click on "Backup Current ROM", I even saved a copy of that backup on my computer incase I need to copy it back to my phone.

To flash a new ROM, click on click on “Download ROM” and you’ll be able to install CyanogenMod 7.0.0 Stable Release. Or you can go to their site and download the ROM from them at http://www.cyanogenmod.com/ Another ROM that this works well with the steps below is MIUI and you can download that ROM from http://www.miuiandroid.com/

Step Three, Upgrade the Kernel.

I’ve found that every person’s phones are setup differently. Also different kernels work better on certain phones then others. The two best kernels are SavagedZen and Tiamat. Personally, just my opinion, I got better performance from SavagedZen kernels, so that’s what I go in detail below. Although test for yourself, as Tiamat 3.3.7 has gotten great reviews also.

There are also different type of kernels as CFS, BFS or SBC and no-SBC. What are the differences?

SBC is Super Battery Charge. Basically, it enables a trickle charging effect on the charger. It fills the battery up to 100% so when you pull it off of the charger, it's absolutely full. The noSBC kernels use the stock battery driver and charge differently. Some users are not comfortable with SBC and prefer not to use it. They do not trust it and believe it may cause failure although there has been no evidence that it will actually do so. Again, this is a user preference and why both builds are created at this time.

As for CFS or BFS, they are schedulers. CFS is the default Android scheduler that all stock kernels use. Its called the Completely Fair Scheduler and schedules the CPU fairly. BFS, or Brain F*** Scheduler, gives the present task a higher priority and background tasks less CPU. Which one to use is more or less on the user.

Most people wouldn't notice any difference. In theory, watching videos, playing games, and listening to music should be smoother with BFS, because it emphasizes the foreground task. CFS should be better for running background tasks, because it gives equal priority to everything. And some peoples' phones don't play nicely with BFS, so CFS is generally the reliable fall-back option.

Above is just a summary, although if you want to read more in detail about kernels, I got all the info above from this link http://www.cs.unm.edu/~eschulte/data/bfs-v-cfs_groves-knockel-schulte.pdf

Finally, once you’ve installed CM7 or MIUI, next step is to upgrade the kernel to Savaged-Zen. Go to this link http://mirror.savaged-zen.com/ and download the kernel from April 7th named “SavagedZen-1.1.0-CFS-HAVS-WiMAX-GB-signed.zip” and copy it to your SD card. Then turn off the EVO and turn it back on in recovery mode (Holding down the down volume button then then pressing power). Once ClockworkMod Recovery loads up, scroll down and select “Install zip from sdcard”, then scroll down and select “choose zip from sdcard”. After that, just scroll down to where you’ve saved the Savaged-Zen kernel and install it. Once the phone reboots, check to see if the kernel has been applied properly by going into Settings\System\About Phone (from MIUI menu) and then click on More Information. Kernel version should now have SavagedZen listed.

Step Four, Lower voltages on AOSP kernels.

–viperboy- had a great post on this topic, below is the link for his instructions http://xdaforums.com/showthread.php?t=1028322 . I usually start off first by flashing the 50mV.zip and if it’s stable for a day or two, then I upgrade to 75mV.zip. On one EVO, I went up to 100mV and it started rebooting until I lowerd it back to 75mV. Haven’t had any issues with it since. On another EVO, I had to lower it from 75mV to 50mV to resolve freezing issues and haven’t had any issues with it since. Point is, you have to find the best voltage level that works best for your phones.

Step Five, change the Heap levels.

After updating the kernel and voltage levels, download VM Heap Tool from the Market. That tool will let you adjust the heap size on your phone, which Heap is the amount of memory each application can use. By default, your phone is set to 32m, which has issues with force closers of the launders and files. After you download the app, adjust the heap level to 40+. I've gone with 44m and haven't had any force closers, where before I would get 1 or 2 a day.

People running the latest build of MIUI release 1.4.22 Beta 7, stiffspliff changed the default MIUI Heap level to 64. So any MIUI users on the new release do not need to install\use this tool anymore.

Step Six, download BatteryCalibration app from the Market.

Useful tool especially if you like to keep switching\testing new ROMs on your phone. Calibration needs to be done after flashing a new ROM, since the program will remove the batterystats.bin system file. The OS generates a new clean batterystats file soon, thus any fake information from the previous ROM is removed.

Step Seven, manually setup the display settings.

When checking the Battery Settings\Battery Use, the Display is usually the biggest battery drain. To help offset this a little bit, go to Display Settings and turn automatic brightness off. Then manually setup the display at 25-30% brightness. Usually just take it down as far possible that you feel you’re comfortable seeing the screen properly.

Step Eight, condition the battery

Below are the steps to follow from a XDA member HipKat that have worked nicely to condition the battery.

1 - The "HTC Method w/10 Time Unplug"

Charge to full, unplug, turn off the phone, charge while off for another hour. Unplug, turn the phone on for 2 minutes, turn it off again, charge for another hour.

Unplug til the light goes off, plug back in til it turns green.

Do that 10 times.

Boot to Recovery, while plugged in. Clear battery stats, boot to system. And wait 2 mins, THEN unplug.

Also, I keep my GPS, mobile data and WiFi off unless I need it. You don't need either of those to make phone calls or texts.

Step Nine, what to AVOID

This step isn’t anything to install or update on your phone, it’s more meant for what type of apps to avoid.

First is Juice Defender, who with more research I’ve found could either help or drain your battery life. If you have JD on all day when you're not really using your phone much, in an area where your phone would normally be searching for data all day, wasting power, the battery savings are HUGE.

Although, if you're constantly using your phone, the battery savings are negligible at best, and negative at worst, since it would be constantly turning your data service on and off. So depending on each person’s definition of how they use the phone, JD might be an application to avoid, especially if you’re a mid to heavy user of your phone.

Next is any type of Task Killers. XDA poster Justin.G11 has a in detail blog on this topic and below is the link for anyone interested.

http://egotoobigtovirtualize.blogspot.com/2011/03/android-battery-goodies.html

In a quick summary, using a Task Killer puts a little program in memory that will routinely scan your phone for running applications and forcefully close them, returning that memory to your phone. The problem is that this is a bad idea and the result of people assuming that multi-tasking in android is the same thing as multi-tasking in a desktop OS.

In it’s best moment, a task killer does absolutely nothing for your phone. It kills apps in memory that the process lifecycle service would have freed the moment it was needed anyway. The power consumed by your memory is constant weather it’s storing a 0 or a 1. So that doesn’t save you in battery at all. Instead, it nearly costs you battery because you just added a regular 15min scheduled task to monitor your apps. Which gives your android system more to do. Not only that but remember normally android stores the “activities” before it kills the app. Something the force close of a task killer will skip. This why you often have to re-login to apps that were force closed by a task killer, as opposed to that illusion of always running when android does the job. What’s funnier is because it registers background tasks with android, they will simply re-launch anyway. Meaning task killer will constantly find itself shutting down the same process over and over again, making the whole thing extra pointless.

Short of it is: 100% of any battery gains are placebo, and better battery gains could be easily achieved by changing the polling cycle of your apps so the android service doesn’t have to launch so many things so regularly. Forcefully closing apps with a task killer does not go to the root of your battery problem, does nothing to help, and simply impacts the user experience by skipping the storage of activities.

Step Ten, Control the polling of e-mail

Again another great write up by Justin.G11 in his blog linked above is Control the polling of e-mail. What we need to do is ratchet down on the polling and and background syncing our phones do to keep our battery life up. Most times, our #1 offender is e-mail, and more times than that, it’s POP3 or IMAP.

Let’s just throw it out there: POP3 is terrible for battery life. We are basically telling our phones to launch an email app every x minutes and sync/download. This means I have to choose between fast polling intervals to get mail instantly (5 minutes or faster) which will drain my battery with regular processes, or save battery with slower polling but mean that I may not get important emails for 30 minutes or more (in the land of instant gratification and IT support … this could be a deal breaker).

Thankfully ActiveSync provides us with an easy way out (ditto for Google Gmail, but that’s not my focus at them moment.)

Systems like Gmail and ActiveSync use a clever mechanism known as long-lived http to do their mail polling. What happens is a client will log into the target server, check for mail, then say “if any mail comes in the next 30 minutes, ping me at this IP” then stop. The actual time is a variable, that the phone cranks up slowly until it’s too long to make through the firewalls in the path of communication, but 30mintues is not uncommon. So after the initial poll the mail program can stop, be removed from memory/CPU, and a simple listener trigger is left on android for 30minutes incase the Exchange Server decides to “wake up” the mail client in order to deliver a new message.

This is really nice because it means I can have a slow 30minutes polling interval and save battery while having the email delivery time of a constant poll. But it means I have to stop using POP3… and start using ActiveSync for work, and perhaps Gmail for home use.

So how do I do that? Well you have Gmail if you have an android phone, and in the Accounts and Imports section of your mail settings you can setup Google to poll your various POP3 services for you. Bingo: best of both worlds. As a final “but I like keeping my messages separate”, you can label each message as it gets delivered to your gmail inbox so you can keep your messages sorted by POP3 account, and even register multiple smtp names for sending. A full solution.

By doing this I can now bring my battery down _significantly_ without sacrificing the ability to get emails at all. Major win in that department. Once I have all my personal POP sources tunneled through Gmail, I can simply rely on ActiveSync for work!

That’s it guys! Hope this post has been helpful in extending your phones battery life.

Here are my phones specs at the time of the testing...

HTC EVO

Model Number: PC36100

Build Number: MIUI-EVO-1.4.15-ENG

Kernel version: 2.6.38.2-SavagedZen-1.1.0-CFS-HAVS-WiMAX-GB+

Battery type: Stock battery that came with device (prior shelf life 4-6 hours of heavy use)

After following all 10 steps I get the following performance from my battery

Heavy Use - 15+ Hours

Only about 4-5 hours phone is idle

30-60 minutes on the phone

Using WiFi at home and work, 3G while in my car or out on the town

20+ text messages

Download 5-10 apps per day

Play games 2-3 hours, maybe more if stuck in a meeting

Listen to music to and from work, about an hour per day.

On the internet most of the day, especially since I like to access facebook and twitter via my phones browser instead of their apps.

Watch 2-3 hours of videos\Youtube

Spend about 1 hour customizing my themes and\or downloading new themes

Finally, did a movie test on Sunday. After a 100% full charge, disconnected and played two movies on the phone. After about 4 hours when the movies were done, battery was still at 52%.

On Average, battery would drain 8-12% per hour of constant continual use when playing games, watching videos or listening to music.

As I said earlier in this post, I want this Best Practices for Battery Management to be a Living Document and I’ll be constantly updating\editing it once new or better practices\apps have been discoved for improving the battery life.

CREDITS

unrevoked.com for the “Painless root and flash”

ClockworkMod for “Rom Manager”

Guys at CyanogenMod for a great ROM

Guys at MIUI for a great ROM

Guys at Savaged-Zen for a great kernel

Taylor Groves, Jeff Knockel and Eric Schulte on their indetail info on kernel differences

-viperboy- for his instruction on how to lower voltages on AOSP kernels

Martino for “VM Heap Tool”

stiffspliff for increasing the MIUI default Heap level to 64

HipKat for the battery conditioning method

NeMa for “Battery Calibration”

Justin.G11 for his blog about Task Killers and Control the polling of e-mail