[ROOT] Using SetCPU + Perflock Disabler to Save Battery, Underclock
I'm sure many people has seen the thread where OverclockWidget was claimed to have increased the battery life for some people. Near the end of the thread I became skeptical and proved that it had in fact no effect on the CPU speeds at all, and so can not save battery life. Well, good news is that a new function in the competing SetCPU app will now get you a real, tested increase in battery life.
According to my tests, my Evo with the screen off should theoretically get a 64 hour battery life!
Know what you're doing? Short version: Get latest SetCPU (version at least 2.0.0) and use Menu -> Perflock Disabler in the Main tab to enable underclocking.
Don't know what I'm talking about? Good, follow this tutorial:
Prereqs:
You need to have ROOT. Unrevoked root method is confirmed to work, and so is Toast's root method. Usually I wouldn't recommend using Unrevoked, but it's just so fast to set up, and perfect for those who have no clue what ROOT means.
Buy SetCPU from the market, or download it from XDA forums for free. Please support the developer of this incredible app! The version must be at least 2.0.0b
Be on the STOCK kernel. If you're on a custom kernel, chances are that perflock has already been disabled, and you won't need this tutorial to underclock. Some custom ROMs come with the stock kernel (like Fresh 0.5.3) and some don't (like Baked Snack .9.6)
Alright, got the prereqs down? Lets start this.
HOWTO:
Open SetCPU and give it root permissions as necessary. As a control, go into the Info tab and do the Long Bench a few times. You should get around 1000ms.
Go to the Main tab, hit MENU, hit Perflock Disabler (read the warning!), and hit Disable Perflock Beta: May crash!
It will work for a while, and then say it's successful. You can then click the X on the top right to exit the Perflock Disabler.
Go into the Main tab and drag Max: all the way down to 245000 (245Mhz). Make sure the green xxx max xxx min label above the sliders show 245 for both and also disable any Profiles you've set. Go to Info tab, then hit Long Bench again. This time you'll get something ridiculous like 5000ms, meaning that the Perflock Disabler has worked!
Change your settings Profile tab to something similar to my settings. You can mess around with the Battery < xx% profiles to fit your needs. Your exact Profile priorities do not matter, it's only important that some have HIGHER priority than others. On the Main tab, set Max all the way to the right (998400) and Min all the way to the left (245000), Scaling to ondemand, and check Set on Boot. Do not check Set on Boot yet if you're the super careful kind. You can check it later when you've tested that your phone isn't crashing
The last entry is Battery < 100%, set at lowest priority, with MAX as the highest value, MIN as the lowest value, and scaling as ondemand.
Congratulations you're now able to underclock your Evo!
Comparison:
The only applicable parts is after the charging finishes (after the solid green bar ends)
Before Perflock Disabler:
After Perflock Disabler:
See that little dip at the end? That's when I was turning the screen on and messing with the phone for this tutorial. What a difference.
Disadvantages:
Yes, not everything is happy and pretty. As the Perflock Disabler warning says, you HAVE to apply the Perflock Disabler on every boot. If you forget, then your SetCPU settings will have no effect on the Evo. Install a custom kernel that already has Perflock disabled if you do not want to do this on every boot.
Also, since this clocks the Evo down when the screen is off, you may get a slight (super slight!) delay when you turn the screen back on. This is because the profile changes from Screen Off to Battery < xx% and SetCPU needs to clock the CPU from 245mhz to 998mhz.
FAQ: What is Perflock Disabler?
HTC added a "perflock" in their stock kernels to prevent over/underclocking. SetCPU's Perflock Disabler, like its name implies, disables this restriction.
How come your screenshots show that you can go down as high as 1.19Ghz and as low as 128Mhz?
I'm using this custom kernel.
Will this work with OTA update xxx.xxx.xxx.xxx?
Yes, as long as you have root, and don't lose it when you update (do your research!) then this will work.
What are your settings?
Wifi ON, Bluetooth OFF, GPS ON, Mobile network Data OFF (ATT contract with dumbphone still not over), Screen Timeout 1MIN, Brightness AUTO, Advanced Task Manager set to SAFE kill tasks when screen is off.
What is that cool looking battery monitoring app?
That's SystemPanel, paid on the market. A free alternative is JuicePlotter, also on the market. Screenshots were taken with Drocap2.
Excellent walkthrough...good to see it all in one place. I had everything set the same way from your reply on the other thread, but this let me double check everything.
Excellent walkthrough...good to see it all in one place. I had everything set the same way from your reply on the other thread, but this let me double check everything.
Perflock disabled works on Fresh 0.5.
Testing battery life today.
Interesting, I assumed that all custom ROMs included a custom overclockable kernel, but after reading Fresh's changelog (PowerTOP section) again I'll have to revise the prereq part.
SetCPU on... I'm running Damageless Rom v3.2.3.
Custom Kernal for Nova Screen FPS Fix and undervolt configurations.
phones was charged to 97% when i took it off the charger.
My phone has Bluetooth, 3G, GPS, and Brightness at 25%. Off the charger for 2 hrs and 53 mins with 3 phone calls at about 5 min each. Browsed the web and received email. I'm currently @ 93%
SetCPU on... I'm running Damageless Rom v3.2.3.
Custom Kernal for Nova Screen FPS Fix and undervolt configurations.
phones was charged to 97% when i took it off the charger.
My phone has Bluetooth, 3G, GPS, and Brightness at 25%. Off the charger for 2 hrs and 53 mins with 3 phone calls at about 5 min each. Browsed the web and received email. I'm currently @ 93%
Some people from XDA have been saying that setting sleep at 245Mhz has been giving them better battery life than 128Mhz for whatever reason. Think I'm gonna test it a bit further to get the sweet spot.
Updated the OP. The task manager I use is called Advanced Task Killer Pro. Also updated the wording in the Profiles step to show that you can change the battery level/speed any way you see fit.
Quote:
Originally Posted by DaDoc04
Im running fresh rom 1.0B and just installed this. Thanks PPB.
Some people from XDA have been saying that setting sleep at 245Mhz has been giving them better battery life than 128Mhz for whatever reason. Think I'm gonna test it a bit further to get the sweet spot.
i have my sleep set at 245mhz, and it's eliminated any lag I was getting when I would wake up the phone when it was set at 128mhz during sleep
__________________
"Nothing from nowhere, I'm no one at all"
Thank you for sharing this. Running FreshToast100b1 and incorporating your settings as a starting point. I'll report back with battery life. Thanks again.
Side note: Running Toast kernal, while attempting to disable Perflock, SetCPU reported back that Perflock was not present, no need to disable. Nice feature.
Last edited by uminchu; July 10th, 2010 at 09:18 AM.
Reason: Sidenote
Thank you for sharing this. Running FreshToast100b1 and incorporating your settings as a starting point. I'll report back with battery life. Thanks again.
Side note: Running Toast kernal, while attempting to disable Perflock, SetCPU reported back that Perflock was not present, no need to disable. Nice feature.
Ah, yes. I believe thatkernel is configured to be overclockable by default.
Changed the Profiles picture in the tutorial. I initially had Charging priority over Screen Off, but it makes more sense to have Screen Off to have higher priority.
Thanks to the OP for the writeup. I use this with Setting Profiles, and I am seeing some amazing battery times. Setting Profiles has a bunch of features of Locale, with out the big price tag.
Also, instead of clocking all the way up to the top, I have mine set to 768, and if the battery drops below 45%, I have it slowing down more to stretch the battery.
The Following User Says Thank You to wkendrvr For This Useful Post:
Thanks to the OP for the writeup. I use this with Setting Profiles, and I am seeing some amazing battery times. Setting Profiles has a bunch of features of Locale, with out the big price tag.
Also, instead of clocking all the way up to the top, I have mine set to 768, and if the battery drops below 45%, I have it slowing down more to stretch the battery.
Nice, that's a great way to fully extend battery life beyond what this tutorial does.
I love this tip! My battery meter now practically flatlines whenever the screen is off. The only downside is now I find myself using the device more often which almost counteracts the battery saving, but I guess that's the point... Thanks so much!
__________________
PSULightingGuy
Total Geek/Nerd, Proud EVO 4G owner, Android n00b.
Don't think HTC will ever willingly remove perflock from their stock kernels.
oh ok
but maybe you can add an option to in program to disable when setcpu starts?
just wondering
just sometimes i reboot and be thinking im saving battery when its actually doing nothing becauase i forgot to disable perlock
Thanks to the OP for the writeup. Also, instead of clocking all the way up to the top, I have mine set to 768, and if the battery drops below 45%, I have it slowing down more to stretch the battery.
Yeah HUGE THANKS to PPB! And your idea is something that I'm going to try right now and see how things play out. I can say that my battery life has really improved and I'm loven my EVO even more .
oh ok
but maybe you can add an option to in program to disable when setcpu starts?
just wondering
just sometimes i reboot and be thinking im saving battery when its actually doing nothing becauase i forgot to disable perlock
When I installed setcpu, I was getting decent battery life (20hrs at one point) but it seemed to be draining my performance on the phone (lots of lag, slight freezing, etc.) I don't know if I am doing something wrong, but I have followed your instructions to a T.
When I installed setcpu, I was getting decent battery life (20hrs at one point) but it seemed to be draining my performance on the phone (lots of lag, slight freezing, etc.) I don't know if I am doing something wrong, but I have followed your instructions to a T.
I am using unrevoked 3.
Are you on the stock kernal and stock rom? Post a screenshot of your profiles and ill take a look. Use drocap2 from the market.
I've been playing around with settings with SetCPU using Fresh 1.0.1 with #26 kernel. After do some research, I saw on the dev's website that it's better to set a profile that uses the same max/min to performance instead of on demand. And my device seems to respond better using 1036max and 348min. For screen off, I also use 348 for max/min as well. Any thoughts? Just kind of playing with different configurations to see what yields the best results.
I've been playing around with settings with SetCPU using Fresh 1.0.1 with #26 kernel. After do some research, I saw on the dev's website that it's better to set a profile that uses the same max/min to performance instead of on demand. And my device seems to respond better using 1036max and 348min. For screen off, I also use 348 for max/min as well. Any thoughts? Just kind of playing with different configurations to see what yields the best results.
I haven't messed around too much with the optimum Max/min values. But it is pretty odd that a profile with the same Max min set to performance would make a difference compared to the same profile set to on demand.
Also your saying that 1036 max is performing better than 1150? Again, odd but I guess its possible. When CyanogenMod stabilizes, ill do some of my own tests. Right now CM is a battery eater.
Quote:
Originally Posted by Nitraine21
All I did was run unrevoked3. I have not touched adding kernals or any other roms, so everything is stock.
I uninstalled it, but I can reinstall it again and add your profiles and give you a screen post.
Thanks for the quick reply!
Did your problems disappeared after you uninstalled SetCPU? It should bewprking just fine for your stock configuration as far as I can see.
I haven't messed around too much with the optimum Max/min values. But it is pretty odd that a profile with the same Max min set to performance would make a difference compared to the same profile set to on demand.
Also your saying that 1036 max is performing better than 1150? Again, odd but I guess its possible. When CyanogenMod stabilizes, ill do some of my own tests. Right now CM is a battery eater.
7. CPU Scaling Governors
CPU governors control exactly how the CPU scales between your "max" and "min" set frequencies. Most kernels have "ondemand" and "performance." The availability
ondemand - Available in most kernels, and the default governor in most kernels. When the CPU load reaches a certain point (see "up threshold" in Advanced Settings), ondemand will rapidly scale the CPU up to meet demand, then gradually scale the CPU down when it isn't needed.
conservative - Available in some kernels. It is similar to the ondemand governor, but will scale the CPU up more gradually to better fit demand. Conservative provides a less responsive experience than ondemand, but can save battery. performance - Available in most kernels. It will keep the CPU running at the "max" set value at all times. This is a bit more efficient than simply setting "max" and "min" to the same value and using ondemand because the system will not waste resources scanning for the CPU load. This governor is recommended for stable benchmarking.
powersave - Available in some kernels. It will keep the CPU running at the "min" set value at all times.
userspace- A method for controlling the CPU speed that isn't currently used by SetCPU. For best results, do not use the userspace governor.
This caught my attention...so I decided to try it. On the performance difference on settings, well I know that 1150 will perform better, but I wanted the best of both worlds in terms of performance and battery life. And thus far today, my battery sits at 64% with moderate use (web surfing, 20 minute phone call, several texts/emails)...it's been off the charger since 7am...so, I'm very happy. But again, I'm not a pro at this, just an eager geek trying to learn the ins and outs of the beautiful operating system .
This is a bit more efficient than simply setting "max" and "min" to the same value and using ondemand because the system will not waste resources scanning for the CPU load.
Hmm when you say it this way it actually makes some sense. I should check it out,thanks.
Quote:
Originally Posted by Nitraine21
Here are my screen shots:
Yea after I uninstalled setcpu the first time it went back to being snappy.
One problem I see is that my max only goes up to 998
The stock kernel has a 998 MHz max, that's not the problem. The only thing I can find off with your screenshots is that apply on boot on the main tab is not checked. Also my up threshold on the advanced tab is set to 70, and I don't remember ever changing it from the default. Also, I assume that you've been hitting menu -> perflock disabler on every boot up. If your still getting lag then I have no more explanations
Hmm when you say it this way it actually makes some sense. I should check it out,thanks.
The stock kernel has a 998 MHz max, that's not the problem. The only thing I can find off with your screenshots is that apply on boot on the main tab is not checked. Also my up threshold on the advanced tab is set to 70, and I don't remember ever changing it from the default. Also, I assume that you've been hitting menu -> perflock disabler on every boot up. If your still getting lag then I have no more explanations
I have all settings I believe to how the OP posted, I'm a very light user of my EVO because I have a second phone (business blackberry) but some days my evo battery is great and some days it stinks. i've never complained about it before because I'm such a light user I feel that my battery never has problems. Being such a light user however I'm always willing to learn how to get more battery life because I can tell when I do fiddle with my phone the battery drops like a rock.
As of yesterday I setup the setcpu and juiceplotter and under info it says from when I unplug the phone that I will have anywhere from 8-11 hours of battery.
I just installed advanced task manager and set to safe kill and when screen is off just as in the OP. I will repost what juiceplotter tells me, but the main point of my thread is that it doesnt seem to be working for me. Want to see if anybody can give me a hand.
Im on unrevoked3 stock only interested in wifi tethering and well I have titanium backup installed but don't even know why not really concerned with what I have on my phone (so thats first question) should I delete that?
Second thing is that Ive done all the other previous posts, only syncing i have is gmail and weather every 2 hours. check my running services for anything that shouldnt be running.
Basically don't know what else to do but this setcpu settings don't seem to be doing much.
anybody got something for me?
*edit* these are my programs i have installed from the market, I'm willing to get rid of any ONE or couple of these apps if they definately do drain battery**
advanced task killer
juiceplotter
astro file manager
titanium backup
ebay
google voice
double twist player
text to speech extender
snesoid lite
google translate
qik for htc evo
tapatalk
yelp
shazam
adobe reader
bubble burst free
wheres my droid
espn score center
wordup
google maps
slingplayer mobiel
pandora radio
compass
real blackjack
urbanspoon
led desire light
speedtest.net speed
mobile banking
Last edited by infoe; July 25th, 2010 at 11:55 AM.
I have Fresh 1.0.1 and the FPS fix for it... do I need to flash a different kernel for undervolt? (I'm buying setcpu right now) Thanks!
EDIT: I put in all the profiles and everything you have listed, but I get a message saying I don't have a perflock so it doesn't need to be disabled... is that normal? Will this method still save me some battery life?
Last edited by Unclm311; July 29th, 2010 at 04:52 AM.
I have Fresh 1.0.1 and the FPS fix for it... do I need to flash a different kernel for undervolt? (I'm buying setcpu right now) Thanks!
EDIT: I put in all the profiles and everything you have listed, but I get a message saying I don't have a perflock so it doesn't need to be disabled... is that normal? Will this method still save me some battery life?
The FPS fix kernel should already have perflock disabled. The profiles here can still help you though.
Quote:
Originally Posted by TKP
Thanks, great guide. One question though. Do I need to leave setcpu running in the back ground or can I close it?
Please help. I did the Netarchy ROM 2.2 OTA update with his custom kernels.
I have lost Preflock on SetCPU. I get an error saying incorrect Kernel. ???
Thanks. Really appreciated.
Whats the entire error message? Also, can you clarify: Did you have the Netarchy kernel and then do the OTA update? In that case, the update installed HTC's stock kernel, and removed your root access. You won't be able to use SetCPU until the devs figure out how to root the new OTA update.
Device(s): Galaxy Nexus,
htc Evo 4G,
Nexus S
iPad2,
Carrier: Not Provided
Thanks: 38
Thanked 47 Times in 26 Posts
Hey brah, you are the man.
No, I followed the directions exactly. This is my full post from xda:
I followed the directions exactly. Except I did everything with ROM Manager. Did a backup and wipe. The first update went perfect. Rebooted. Reinstalled ROM Manager from the Market. Flashed the radio. Did not do any kind of wipe for this. Rebotted. Opened RM again and I got a failure notice. I reinstalled ClockWorkMod on the advice of another post I found then flashed WiMax. Rebooted. Then reinstalled some stuff from Titanium Backup but NOT System data or anything HTC.
Everything's awesome!!! 8mp camera. Google Goggles works perfectly. 4G indoors where I never had it before. I don't have one single bar of 4G in my bedroom but I'm getting over 1800mbps up. Now thats loving.
But I have lost my WiFi. All it says is scanning, connected, disconnected over and over. I'm afraid to reflash anything until I get some advice.
I did all this over Unrevoked3 and SetCPU.
I also lost Preflock on SetCPU. I get an error saying incorrect Kernel. ???
I have also lost Wireless Tether. It turns on and has SU Permissions but cannot be recognized by my iPad.
Can someone please help? I'm coming from the iP4 and a super noob to Android but I've done my homework.