[Droid Incredible Android Development] dccoh:
My battery usage plus info

Well, Ive had time on my hands, having the flu and all :) I use cm7. I go into its built in settings (i do not have setcpu installed), and I set to Smartass if it isnt, i set min to 128 and max to 883. I tend to favor battery life over performance since I use my phone alot at work (network admin) and usually have some long days. Even with a max of 883, Angry Birds, and a few racing games run fine. But I can always up it if it gets annoying.

I should note that I use the 2150 htc battery.

I started by lowering all the min and max voltages by 25, then playing with my phone. And by playing, I mean using gps and maps, listening to mp3's, watching a bit of a video, surfing multiple websites, loading a few apps, and playing Angry Birds (albeit, too much :) )

It took ALOT of playing around, and I really do mean alot. I noticed that the higher speeds of 614 and above were less forgiving of lower voltages on my phone. When I had them set too low, i would get weird sound problems, graphical glitches, etc.

Sometimes I would set the max my phone would go up to (in the cm7 setting) to a top speed that I really wanted to test out. Lets say you wanted to see how low you can go voltage wise at 576. Well set your top speed to that, and play a graphical intensive game. Sure, the game will bog down maybe, but it will soon tell you if your phone dislikes that low of a voltage (and may require a battery pull, as I had to keep my case off for most of my testing).

My phone seems fine with 800 min voltages at the lower speed, and I would assume that would not be the case for everyone, which is why testing each speed is a must. Heck I could test my phone more, but it got frustrating and boring. By just seeing better battery life, even on the light/medium days, made it worth it.

I saw this info in the thread, but I'll repost it. I used information from this and this

I recommend testing voltages in real time (see how I did real time testing in the bottom part), and if you are happy with how it is, and the performance is good (ie. no lockups, etc), then make a file called 95havsvdd (with no extension) and edit it. I believe it can be named whatever you want, but in this instance (starting with 95) makes sure its ran last after the system is up and running (i could be wrong, since it also has a sleep command in it to help it run last also?). The file will finally be going into the /system/etc/init.d/

Once you put it there, reboot and your changes will automatically be there at every reboot. No worries.

Here is the output of my file im using now:

#!/system/bin/sh

sleep 30

echo 19200 800 825 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 128000 800 825 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 245000 800 825 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 384000 825 850 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 422400 825 900 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 460800 825 925 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 499200 825 950 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 537600 825 950 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 576000 850 975 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 614400 875 1000 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 652800 875 1025 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 691200 900 1050 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 729600 900 1075 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 768000 925 1100 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 806400 1100 1150 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 844800 1100 1150 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 883200 1100 1150 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 921600 1125 1200 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 960000 1150 1200 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 998400 1175 1225 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 1036800 1200 1225 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 1075200 1225 1250 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

echo 1113600 1225 1250 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

I do not overclock my phone, but as part of my testing i did make sure it ran fine at the normal 998 for quite some time. I did overclock my phone for like 2 minutes (strictly for testing, something I never do) and it did fine for that time, but I DID NOT extensively test above the operating norm.

Real Time Testing:

Well, I installed ADB Wireless on the phone, made sure I left wireless on, went into the tools directory on my computer that had the adb.exe file installed (google adb if confused :) ) and I typed adb connect 192.168.1.???:5555 and it said it connected (enter your ip of your phone, not ???). Next I typed adb shell and hit enter. Really, check out the two links I posted earlier, they contain all the info you need, Im just putting what I did here to give you an idea.

Once in shell I typed (actually I copy and pasted to the cmd.exe window):

cat /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

That command showed me my current levels.

Then lets say you wanted to see how your phone does at 128 at a certain voltage. I typed this:

echo 128000 800 825 >/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs

After you hit Enter, it may take a second or 3 for it to accept it. It if takes longer than say 5 seconds or so, check the phone. Chance are it did not like that voltage. If you were editing a higher freq, as in like 998, it may not show problems right away. You have to stress your phone (and make sure your max is set to allow it to reach said freq at least) before it will show any problems. Dont expect to edit the voltage for 998, look at the phone and say "well it must be good, since my phone isnt displaying hieroglyphics".

The higher the frequencies you tweak voltage wise, the more testing it might take to show a problem. Its worth testing. Nothing more frustrating that being with friends showing off your phone, only to have it reboot. Dont let an iphone user catch you doing that ! :)

Remember all this testing I just explained is temporary. When you reboot, it will be gone and back to the default that the kernel supplies. This is good though, for some low voltages might cause continous lockups and you wouldnt want them to be permanent till you find settings your phone likes. Then when you do, save to the file like i mentioned before, and (yes I know) check those links. They will provide you with an easy way to 'push' the file to your phone to make the changes happen automatically each time you boot.

I'm sure i'm leaving out alot so forgive me. There is still alot of testing I can do to tweak my higher voltage, but until i'm better, I dont have the patience. You could use my numbers to see if you phone likes them, and if they work fine after testing, you could try to lower them. Heck I might end up using your numbers :)

I usually dont write guides (even though this isnt one really), but if you have questions, shoot me a pm and I'll try to help. Ive learned everything from searching google, and checking the links I posted. On my own, i would of just stared at my screen and said "Um yea". Wanted to say thanks to Chad for the great kernel and hard work too.

I must go take meds and pass back out.