This guide refers to Android users in general (Samsung, HTC etc..) in addition to SGS2 users.
ROM: Any rom will do.
Kernel: Siyah/Dorimanx is preferred but any other will be fine.
Human features: Patience
After an extensive research regarding 'how Android OS works' and reading hundreds of pages (yes 1000 pages in 1 thread) in XDA regarding topics such as: BBS (BetterBatterStats), MagicConfig by geko95gek, Kernel Info, Kernel Governors, Modules, I/O Schedulers, CPU Tweaks, AIO App Configs by droidphile etc, I have come to conclusion that there is currently no better configuration than mine.
I almost don't have wakelocks, during the night (7 hours sleep) I have between 3-4% drain which is really good, of course, you can get better drain ,for example, 1 % during a whole night BUT users like that turn off their data connection OR switch to airplane mode, I really don't like doing that but of course you could do that too and enjoy your 1% drain.
Before I wrote this guide I tried these configurations in
I wrote this guide because XDA users have helped me a lot in all the aspects of Android, so now I can help the XDA community too.
Step 2 updated with solutions on the go.
Step 3 is now LBE version 5 compatible.
Step 4 updated for Dorimanx users as well.
- Wakelocks: What is it ?
- Monitoring the wakelocks
- LBE security manager: internet permissions & prevent apps to be put in cached after a restart
- ExTweaks/STweaks & governors - Siyah/Dorimanx kernel users ONLY!
- Undervolting & Governors
- Freezing google/Samsung apps using Titanium Backup Pro
- Screen Brightness
- Accounts & sync
- Fast Dormacy - Should/Can I disable it ?
- Battery calibration - Should I do it ?
- Network/operator modem support - How to tell if your modem meet your network standards
- Learning to read the battery graph
When you're done with the guide please do come back and share your results with us.
I'll try to simplify things as much as I can so the common user could understand.
1. Wakelocks: What is it ?
When you develop an app in Android there are options for you (as a developer) to let the app start during a different time or a different change, sometimes it is really essential, for example our build in Alarm clock(Also: Widget/Music player), we need it to start the alarm in a specific time thus this process is important and it will open up by "it self".
Counter example is a simple game or a weather app, we only use it once in a while and after we use it we don't need the process anymore so we close it, but most of the time the developer add all sort of commands to start the process even when we don't use this exact process, for example if we boot the device/click on the media app button the app will go into cached processes (System settings->Applications->Running->Click on cached processes), but let's say it's an app we use once a week or a game we play once a week, there is no need to put this app in the cached processes (since it consumes the battery) so this is why we would like to close this option.
Notice – When you open an app and close it the process is still in the cached processes because if you open it again, it will open in a sec (since it's in the cached processes)and that’s a good and efficient thing, but if you close it from the cached processes you will only make things worse because when you open it AGAIN the Android OS will AGAIN, put the app in the cached processes and this is yet again will consume the battery.
How to tell if you can turn off or not in an app/game:First thing you will do is to download Gemini App Manager 2.6.0, this app will handle these wakelocks and as we already mentioned will give us full control over 'when to put/not to put the app in the cached processes/running services'.
Basically the idea is this,
- If we are talking about an app that the whole very existence is to do things by it self (Playing songs/Setting alarms/Auto-commands apps) then of course we won't turn anything off.
- If we are talking about a type of apps that their whole process is to do something particularly which will take place only when we open the app (Bar-code scanner/Weather app/Shazam/Office apps/GPS apps/Games so of course we will turn everything off.
- If we are talking about ROOT apps so I suggest not to touch anything.
DON'T UPDATE TO VERSION 2.7 - THE NEW VERSION HAS NO WORKING EXPERT MODE ! ! !
After you downloaded the app, open it,
- Hit the option touch key (left to the home button) and go to 'Expert Mode', you will find there, all the applications your phone contains. What we are looking for is the orange icon the says 'AUTO' under each app:
once you find an app/game with this icon, think, and ask yourself "Do I need this app/game to open up by it self?" (See the examples with the clock app above).
If your answer is "NO!" (90% of the cases the answer is no-read above when the answer is YES), then press this app/game for about 2-3 seconds, a window will open and choose 'ConfigAutorun (root)'.
- A new window will appear with all sort of commands: On package added, on app widget update, After boot etc, as you can tell the name of the command does what it says for example: 'On package added' -> if you added a package to the app, the app will be put in cached process.
Change to OFF all the commands:
and there you go, this app will never fool around!
Download the app: BBS
BetterBatteryStats aka BBS: Why do I need this app ?
After you managed to finish step number 1, you can now install BBS on your system.
Once your done open it and choose partial wakelocks, we will focus on this section.
Charge your device to 100% and when it reaches 10% or so, open BBS hit the options touch key and choose 'Dump to file':
this will generate a .txt file with all the apps/games that did wake your phone and caused drains.
"BUT HEY I DON'T UNDERSTAND ANYTHING FROM THIS FILE AND THIS APP IS HARD TO UNDERSTAND!!!", first you need to relax and go to the BBS thread BBS, the developer is kind enough to let you put the file there and he will look it over and tell you what is the main problem you should focus, and decide if to remove the app or maybe change something in the setting of the app.
If you want to learn about this log file and understand it better just read the thread (like I did) it contains more than 1000 pages, so after 10-20 you will have some clue about this app.
Remember, this is the BEST application that can track your battery drains and tell even if your kernel is waking up the phone, just dig in BBS and you will see, there is no other alternative than BBS, remember that and don't ask for a substitute.
Q: How can I solve BBS wakelocks on the go ?
A: Get in here.
Also, if you have EventLog wakelocks here is the solution:
Download System Tuner. open the app and go to 'Startups' and look for 'Google service framework' and over there disable both 'checkin.EventLogService'.
Be advice EventLogService wakelocks only happens with stock Samsung ROMS.
ALSO, read the FAQ.
3. LBE security manager: internet permissions & prevent apps to be put in cached after a restart: version 5+
We all know that every time we go to the inet (not via wifi) we are starting to see an immediate battery drain.
The best way is to install a firewall app (which is MUCH more than that btw and it's free) that will control our inet pipe.
The user zagzag99 was kind enough to translate the latest version (4) of that app (Notice that in Play store it's version 3 ONLY) get it here: LBE Security
After you installed the app,
- Tap on More -> Permissions -> All apps
- Now you are looking at all your apps/games (including system app by tapping on 'Download' on the left and choosing 'System'), by clicking on one of the app/game you would see the permissions the app wants from your phone, if it is a game that you play offline then why does this game want to go online? More-than that, why the game wants to access my call records!?
This is why you won't allow it and eventually you'll close the inet pipe and the rest for each app/game you don't want to go online or even get your precious information.
- After your done we will now deal with the auto start issue.
Repeat step a, and choose a random app, as you can see the first option in every app is 'On boot permissions' so you can turn it off or back on.
Now, this is very important, I only say it once, if you see an app/game that you don't even use or use once a week 'turn it off', but if you see an app/game that you use most of the time leave it as it is, why ? Obviously you didn't read step number 1.
Download STweaks, if you want to understand what each command/line does please read up: Here or you can just do what I tell you to and enjoy better battery.
First of all I want to thank geko95gek who inspired me a lot regarding STweaks .
MAX OC FREQUENCY: 1000000Khz
You can undervolt here or in setCPU (See step 5).
Be advise #1: for some reason Siyah V6b5 doesn't save the changes after reboot BUT setCPU does.
Be advise #2: Dorimanx users are good to go.
GPU tab: - SGS2 users input - Different devices try to lower 1 step back.
GPU FREQ STEP1: 54Mhz
GPU FREQ STEP2: 108Mhz
GPU FREQ STEP3: 160Mhz
GPU FREQ STEP4: 200Mhz
GPU FREQ STEP5: 267Mhz
GPU VOLTAGE LEVEL1: 850mV
GPU VOLTAGE LEVEL2: 900mV
GPU VOLTAGE LEVEL3: 950mV
GPU VOLTAGE LEVEL4: 1050mV
GPU VOLTAGE LEVEL5: 1150mV
Dorimanx steps: (Basically the default)
GPU FREQ STEP1: 108Mhz
GPU FREQ STEP2: 160Mhz
GPU FREQ STEP3: 200Mhz
GPU FREQ STEP4: 267Mhz
GPU FREQ STEP5: 267Mhz
GPU VOLTAGE LEVEL1: 900mV
GPU VOLTAGE LEVEL2: 950mV
GPU VOLTAGE LEVEL3: 1000mV
GPU VOLTAGE LEVEL4: 1050mV
GPU VOLTAGE LEVEL5: 1150mV
5. Undervolting& Governors:
Be advise: If your kernel doesn't support undervolting move to the next step, but I recommend to use a kernel that has support because when the phone is in deep sleep or on 200mhz (when you're not using it) you could save a lot of battery.
Be advise #2:I am going to recommend the use of setCPU and STweaks (Siyah/Dorimanx kernel only - if you don't have siyah you can do this step also as long as your kernel support undervolt), a lot of people wouldn't recommend the use of these apps together since they MIGHT conflict with each other, BUT if you will go through this step and read carefully it wouldn't be a problem in fact, it will work just fine
Download setCPU, if you want the latest version you can buy it in the Play store (support the developer).
Version 2.2.4 would be fine too, if you want to understand what each governor means and what is cfq please read up: Here and Here or (if you’re a lazy ass user) you can just do what I tell you to and enjoy your battery:
change to 200-1000 Mhz (it should be like it since you already changed it in ExTweaks) and tick 'Set on boot', also make sure 'ondemand' and 'ROW/CFQ' are chosen as governor/io :
- Make a new profile and choose 'Add Condition -> Screen On/Off' and choose 'Screen off' and save.
Hit next and choose 200-500Mhz, tick 'Set the CPU governor' and choose 'conservative'.
Choose priority 50.
This profile will make sure while the screen is off there won't be any jumps to high frequencies.
- Make another new profile and choose 'Add Condition -> Battery level' and choose '10%' and save.
Hit next and choose 200-800Mhz, tick 'Set the CPU governor' and choose 'conservative'.
Priority is 49.
This profile will let you squeeze the last 10% of the battery like they were 20% but the UI will lag.
Tick those profiles and tick 'Enable Profiles' at the bottom.
Results of step a & b :
Voltages Screen: (Only supported kernels)
Be advice: This stage is the most exhausting, annoying and irritating stage you could ever find but in the end it's worth every second.Since we put a range of 200-900Mhz we will focus on these frequencies only (of course if you decide to put the range between 200-1200Mhz you will focus on them only).
We will scroll down and look for 200Mhz, 1st white row represent the default mV that Samsung has put in order to max UI, and 2nd white row represent your mV change,but we are smarter than old Samy so we will start to change.
200Mhz – Is usually between 825-875mV it varies between each phone (each phone has different ROM/Kerenl)
So you ask yourself, which mV should I choose?
Well my friends, that’s the 1 million dollar question, let's say you chose 850mV:
- Touch the 200Mhz and change it to 850mV afterwards hit the 'Right icon' next to the save icon
- if your phone is still working and didn't get stuck go back to the 'MAIN' tab and choose 200-200Mhz (yes exactly like that) and then we will go to the 'INFO' tab, scroll down and choose 'Stress test':
if 'Sress Test' ran for about 4-5 mins and everything is still working, you can stop it by pressing the back key and it means we can continue to the next stage.
- Download Stability Test
Open the app and choose Classic stability test – this will ensure the test of only the 200Mhz frequency.
- If after step b&c your phone is still working that means that the undervolt you chose is working great. (It doesn't mean that your phone won't freeze-it might), you can undervolt more and see what is your limit.
- Do the same process to all the frequencies, of course if you're in 500Mhz you choose the main profile (setCPU) 300-300Mhz in order to test only this frequency.
- When you're done, change back in setCPU'MAIN' tab to 200-1000Mhz, go back to Stability test and now choose Scaling Stability Test, let it run for 10-20mins, if there are no errors you're good to go.
- Play with the phone for few days, if it hasn't frozen go to setCPU 'VOLTAGES' tab and tick at the bottom 'Set On Boot'.
Notice: My recommendation is to set on boot in the end of the process because if you choose a really low MV your phone might be stuck in an endless loop, thus you tick 'set on boot', only, if you are sure your system is stable.
My voltages (SGS2 Device):
200Mhz – 850mV
500Mhz – 925mV
800Mhz – 975mV
1000Mhz – 1075mV
Notice: This undervolt method is the most aggressiveness method around, if you want the easy way and you have Siyah kernel you can open ExTweaks/STweaks and in the "Undervolting" choose -25 or -50, this will undervolt ALL the frequencies together with minus 25 or 50, if your brave you can try 75.Continued on next post...
My method gives you a specific voltage to each frequency, in 200mhz you can have minus 75mV while in 500mhz minus 50mv, this will give you the best undervolt system.