Android Kernel Undervolting: Benefits and Pitfalls
Android is rapidly gaining steam as one of the most common mobile operating systems on the market, and for good reason: it’s a solid, elegant, and stable OS that’s very well-suited to its job. For me and a great many others, however, there is one unique feature of Android that we place up on a pedestal: its customizability. You can change everything to your heart’s content: radio firmware, kernels, wireless drivers, launchers, keyboards, the whole gamut of core operating system features. For someone technologically inclined, Android is like a playground; one could spend hours tinkering with wireless drivers and radio firmware. Today’s topic concerns the kernel, however; specifically, kernel undervolting and its pros and cons.
Before I begin, two caveats. The first: this article assumes you already have your Android phone rooted. If not, I’m afraid I can’t go into it here: the method is different for each phone, but you can find fantastic resources online: www.cyanogenmod.com is my go-to resource for any problems I have, and they have excellent guides for rooting the Dream, Desire, Droid, and others should you need them.
The second caveat is that I own a Nexus One, and as such all examples in this article (standard voltages, profiles, kernel versions, etc.) will be examples from a Nexus One. The examples are still valid, but I warn you so that you don’t mistakenly use my numbers in your own undervolting adventures: each phone is different, and you must take into account your own phone specs when installing an undervolted kernel (or any kernel, for that matter).
Now that we’ve gotten that out of the way: Let’s go!
What Is Kernel Undervolting?
Kernel undervolting is the practice of modding an Android kernel to run at a lower voltage than the stock kernel. In the case of a Nexus One, the stock voltage is 1275mV; over time, it was discovered that this stock voltage was more than sufficient to power the Nexus One at its default clock speed of 1GHz. The idea behind kernel undervolting is to reduce that stock voltage to the bare minimum required to run the phone at factory settings. Many undervolt kernels typically scale back the voltage to 1050mV, and some even further; I am using, at the moment, a Pershoot kernel undervolted to 950mV. Like CPU underclocking, the logic behind undervolting is simple; by reducing the amount of power the kernel is drawing, the phone both runs cooler and saves battery life.
Pros and Cons of Undervolting An Android Kernel
The pros, as mentioned before, are increased battery life and cooler temperatures. It should be noted at this juncture that there is controversy regarding whether or not undervolting a kernel truly provides increased battery life; there are those that believe it makes no difference, and unfortunately much of the evidence to or for is circumstantial or based on hearsay, since usage patterns, rogue apps, and any number of other factors can contribute to a perceived difference in battery drain or conservation. The only study to this end was conducted here: http://forum.xda-developers.com/showthread.php?t=672144, by kernel developer kmobs. Using a control kernel and three different test kernels, he concluded that undervolting does help battery life, up to a point, although once the voltage drops below a certain threshold (around 925mV in his test) the battery life actually suffers due to errors caused by the baseband radio not getting enough power. Suffice it to say, however, that kmobs’ study can be safely taken to mean that undervolting a kernel does in fact provide better battery life than a stock 1275mV kernel.
On the flip side, kernel undervolting has its pitfalls. Undervolting a phone too much can cause serious errors to appear as the power-starved processor starts to error out. The radio from above is a perfect example, but there have also been numerous other errors that result from extreme undervolting. While some undervolters have been able to get as low as 800mV without incident, a great many others who push that margin will find random and mysterious errors beginning to happen. These errors can range from random reboots to the phone locking up when the wifi is turned on, and quite often there is no indication that the undervolted kernel is the cause. The very worst case scenario for undervolting the Android kernel is that you may in fact brick the phone; the lack of voltage during boot could conceivably corrupt the phone’s firmware, leaving the phone unusable. Generally speaking, 950mV has worked for the majority of users, and so custom Nexus One kernels generally come in flavors ranging from 950mV to the stock kernel voltage of 1275mV.
How to Install an Undervolted Kernel
Note: The process to install an undervolted kernel is not at all different from a regular custom kernel install, and this walkthrough can also be used for other kernel installations, undervolted or not.
After rooting your phone, the easiest way to install a custom kernel is using the ROM Manager app, which can be downloaded from the Android Market. ROM Manager is a great utility for managing custom ROMs and kernels, eliminating the need to use fastboot or adb and letting you modify your system wherever you like!
- Download an undervolted kernel. Pershoot’s undervolted kernels can be found here: http://droidbasement.com/db-blog/ as an example, though there are others.
- Place the downloaded .zip file in your sdcard’s root directory. While not strictly necessary, I have encountered “file not found” errors when placing the zip file in subdirectories, so for less headache I simply place them in the root directory.
- From ROM Manager, press “Install ROM from SD card”. Select the downloaded zip file.
- The program will prompt you for wiping and/or backing up. For a kernel update, you do not need to wipe, but I highly recommend always making a backup before modifying critical parts of your system, as it can save you from heartbreak later on.
- Upon pressing “OK”, the system will reboot and enter recovery mode to install the kernel. The process is automatic, but be patient- it can take a few minutes, especially if a backup is performed as well as the kernel update. Upon completion, the phone will reboot into the Android OS automatically.
You can check the success of your installation by going to “Settings” and pressing “About Phone”. In this screen, the entry labeled “Kernel Version” will have the kernel numbered revision on it as well as a custom label like “pershoot”. If you see it, congratulations- you’ve successfully installed a custom undervolted kernel. Relax, be glad, and enjoy your undervolt!