Just to clarify at the start. Kernel is not something exclusive to Android platform, in fact all high level operating systems have one. But for running Android there`s only one: ˝Ladies and gentlemen may I present to you - the Linux kernel, one of the most prominent examples of free and open source software.˝


Back in 1991 Finnish computer science student Linus Torvalds created this incredibly stable, incredibly friendly, and incredibly difficult for the layman to understand and modify software. But its popularity and reputation grew as the days went by and so it has been ported on to a multitude of hardware, including our Android devices. It has received contributions from thousands of programmers. Many Linux distributions have been released based upon the Linux kernel.

Kernel is as an interface layer between the hardware and software on your device. When software needs the hardware to do anything, it sends a request to the kernel. And when I say anything, I mean anything. From the brightness of the screen, to the volume level, to initiating a call through the radio, even what's drawn on the display is ultimately controlled by the kernel. For example -- when you tap the search button on your phone, you tell the software to open the search application. What happens is that you touched a certain point on the digitizer, which tells the software that you've touched the screen at those coordinates. The software knows that when that particular spot is touched, the search dialog is supposed to open. The kernel is what tells the digitizer to look (or listen, events are "listened" for) for touches, helps figure out where you touched, and tells the system you touched it. In turn, when the system receives a touch event at a specific point from the kernel (through the driver) it knows what to draw on your screen. Both the hardware and the software communicate both ways with the kernel, and that's how your phone knows when to do something. Input from one side is sent as output to the other, whether it's you playing Angry Birds, or connecting to your car's Bluetooth.

It's pretty standard computer logic - there's an action of some sort generated for every event. Without the kernel to accept and send information, developers would have to write code for every single event for every single piece of hardware in your device. With the kernel, ˝all they have to do˝ is communicate with it through the Android system API's, and hardware developers ˝only have to make˝ the device hardware communicate with the kernel. It`s not easy or quick but still better than the option number I. Sort of gives a whole new outlook towards those fellows who stay up all night to work on kernels for your phone, doesn't it?

Your phone ships with the stock kernel. It provides a constant stream of battery power to the phone. It doesn’t matter if the phone is on or off or using lots of processing power. It sends a steady and totally safe amount of battery. However, that safety comes with a price. A phone with the stock kernel uses the same amount of power even when not in use. That’s not very efficient. Plus, what if you want to run a processing-intensive app? More processing requires more power, but the stock kernel won’t scale up the amount of battery used.
This is where the Android community comes in. If you’re rooted and have some sort of recovery system like ClockworkMod installed, you can flash (install) a new kernel that’s more efficient. Be cautious which kernel you flash. Read and follow devs instructions to the letter. Flashing wrong kernel or using a wrong method can cause you a world of problems. From bootloop (which can be usually resolved quite easy) to bricking your phone (will take some time and knowledge to get out of this one) . Also, drivers written to work with the Gingerbread kernel on a phone won't necessarily work with the Ice Cream Sandwich kernel.

There are a million different options out there. That’s probably a good thing, seeing as there are about a million different phone-ROM combinations with Android. Finding a good one for your specific phone and ROM can be a bit difficult, though. But it`s something you`ll have to do yourself by trail and error. Remember that there is no allround, best-for-all, uni-kernel. Every ROM, every phone is a world on its own. What works for me will not necessary work for you and vice versa.

When trying kernel, don`t flash it just for an hour. Give it time. Use it for a while. And for god's sake don`t think it will have immediate effect on your Battery Life. It takes a couple of full battery cycles before you can judge what kind of effect it has.
Apart from changing it whenever you want, you can overclock or undervolt your kernel. Not all kernels will allow you to do this. So be sure to check if it has OC/UV option.
Undervolting is when you tell the kernel to only provide a tiny amount of power for the phone to run. It does make your phone lag quite a lot, but its ability to save battery is incredible. A phone modified in this way with a custom kernel can seriously go days without charging.

Alternatively, you can overclock a phone. This is when the kernel outputs large amounts of power, amounts higher than the phone usually uses. This will eat through a battery extremely quickly, but it is great for apps that would lag otherwise. Not to mention everything loads extremely quickly when a phone is overclocked. On the downside, overheating can cause you serious trouble.

If you`re adventurous type you can find more information on this subject simply by googling it. There is a lot of other information and tables on ˝how to˝ online and you can find different apps that will allow you to OC/UV your phone on the Play store.

by arawn
Jul 19, 2012