You may have heard about how flashing a new ROM can improve your Android experience, but flashing a new kernel is one of the best ways to improve your phone's performance, battery life and even add some saucy new features. Whether you know anything about either, here's what you need to know to make it happen.
Title image remixed from an original by Ildi Papp.
What Is A Kernel?
A kernel in an operating system -- in this case Android -- is the component responsible for helping your applications communicate with your hardware. It manages the system resources, communicates with external devices when needed and so on. Android uses a variation of the Linux kernel. A kernel is not the same as a ROM, even though you install them in mostly the same way. A ROM is a bit more all-encompassing. It's the operating system you use on your phone, the software your phone uses to get things done -- the kernel is the bridge between that ROM and your hardware. All ROMs come with a kernel installed, but you can install a thid-party one if you like -- and that's what this post is about.
What A New Kernel Can Do For Your Phone
Flashing kernels isn't quite as talked about as flashing ROMs, but it can do loads for your phone, namely in the way of battery life and performance -- though it can also add extra features to your device, too. Here are some things to look for when choosing a new kernel.
Better Performance and Battery Life
This is the big change a new kernel can bring to your device. I'd separate these into two categories, but they're so intertwined that you really need to consider both when picking a kernel. There are a bunch of different kernel features that contribute to this:
Clock Speeds: In a very basic sense, higher clock speeds will improve performance on your phone. Flashing a new kernel allows you to overclock your phone, using higher clock speeds than the manufacturer intended. They can also let you reach lower clock speeds, so you can underclock your phone when you aren't using it, thus saving battery life. Your kernel will only give you the option to do so, however; if you want to overclock, you'll have to flash the kernel in question and then use something like SetCPU or CPU Tuner to tweak the clock speed.
Voltage: Higher clock speeds use up more battery on your phone because they require more voltage. However, some ROMs come with lower voltage limits, which means your phone will run just as fast, but use up less battery. Some will even overclock and undervolt your phone, though all of this comes at the expense of stability -- if you notice that your phone goes into a boot loop, or reboots at random times, you'll want to either lower your clock speed or upgrade to a kernel with a higher voltage. Some ROMS have further sub-categories in this section, like Hybrid Adaptive Voltage Scaling (HAVS), which can be better for battery life (at the risk of stability) and Static Voltage Scaling (SVS), which keeps your phone at a steady voltage.
CPU Governors: Different kernels can support different CPU "governors", which manage the way your phone ramps up or down its clock speeds as you use it. There are a few different kinds you'll see, including Conservative, which focuses on battery life by ramping up your CPU very gradually when needed; Interactive, which focuses more on performance and smoothness by scaling up the CPU faster; InteractiveX, which is like Interactive but scales the CPU down when your screen is off (for better battery life); and Smartass, which is similar to Conservative but takes more factors into account when ramping up the CPU.
Task Scheduler: Kernels come with two different types of task schedulers: the Completely Fair Scheduler (CFS) and the Brain F**k Scheduler (BFS). CFS kernels are designed for regular phone use, like texting, web browsing and otherwise multitasking apps on your phone. Most stock kernels are CFS kernels. BFS kernels focus more on whatever app is in the foreground, which is great for things like games but can be a bit laggier and a bit less stable.
These are the biggest features, but kernel developers add in all kinds of other tweaks to their kernels when possible, whether its introducing a more efficient file system, making the RAM more efficient and so on. Again, they should list the tweaks in their description, so read up on the kernels for your specific device to learn more. I'd also recommend checking out XDA user mroneeyedboh's HTC Evo 4G kernel starter guide, from which much of this information comes.
Kernels can also add full features to your phone, or fix other issues that the manufacturer hasn't attended to yet. For example, while a lot of phones support Wi-Fi tethering out of the box, some -- like the Motorola Droid -- don't. If you find your phone isn't letting you tether using apps like Wi-Fi Tether, you might need to flash a new kernel that supports Wi-Fi tethering on your device. Kernels for Samsung phones can add support for a feature called Backlight Notification (BLN), which, coupled with an app, can turn your phone's buttons into notification lights.
Keep an eye out for features you don't want, too. For example, some HTC kernels come with a feature called Superior Battery Charging, or SBC, that can overcharge your battery for better life -- but is likely to shorten your battery's life at best, or make it unstable at worst. I'd avoid kernels with this feature. You should also watch out for kernels that disable certain features of your phone -- since some features are manufacturer-specific, you won't be able to get them in other ROMs or kernels. A good example of this is HDMI support on the EVO 4G.
Again, just make sure you research all the kernels available for your device, and know what you're getting yourself into before you flash. Most phones should have a large forum thread somewhere on XDA or RootzWiki that lists all the kernels available for their device. Make sure you choose a compatible one, too -- the version of Android you're running determines what kernels you can use, so make sure you don't flash a Sense kernel on an AOSP ROM (like CyanogenMod), and make sure you don't flash a Froyo kernel on a Gingerbread phone -- they won't play nicely together.
How To Flash A New Kernel
Once you've found a kernel you want to flash, download it to your device. It should be in ZIP format. Flashing a kernel is almost exactly like flashing a new ROM. You'll need to flash a new recovery to your phone, like ClockworkMod, which you can flash with ROM Manager. Put the ZIP file on your phone's SD card, then start up ROM Manager and go to "Install ROM from SD Card". Choose the kernel's ZIP file and continue.
The main difference between flashing a ROM and flashing a kernel is that you do not want to wipe your data. Wipe the Dalvik Cache only, and back up your ROM if desired (I highly recommend doing so, in case something goes wrong). Other than that, you should be golden. If you haven't flashed a ROM before, I recommend reading up on that first -- but if you're familiar with that process, flashing a kernel shouldn't be a big shock to the system.
Flashing a new kernel can sound pretty dramatic, but it's actually quite simple -- and it's very easy to try out a bunch of different kernels before settling on one. Whether your preference is battery life, performance, or extra features like colour tinting, you have a whole lot of choices to further tweak your Android experience. Got any other kernel-related wisdom to share, or have a favourite kernel for your device that you can't live without? Let's talk about it in the comments.