Rooting your Android phone opens up gateway to new possibilities. Even though rooting was must have back in days, it still is backed by strong motivators. One among them is ability to use custom Kernels.
What is a Kernel?
Kernel is the heart of any operating system. Its responsible for all low level operations from controlling the clock of your CPU, GPU, process scheduling, IO scheduling (including filesystem improvements), drivers, memory management. In layman’s terms, its nearly everything that would translate to resultant performance and battery life of your smartphone.
Basically, Kernel is the middleman between Operating system and Hardware. But why do we need a middle man? It makes Android a lot more flexible. Google can focus on the functionality in Android, but not have to worry about how that is exactly executed on each device. Since there are so many devices that have all sorts of hardware, it’s the manufacturer’s job to create the kernel that has all the drivers necessary to make everything work on the device.
Custom Kernels can entirely shape the battery and performance level of your Android device, may it be stock or custom ROM. A custom kernel is more important than switching your ROM if you’re having performance or battery issues.
Why Custom Kernel is so Important:
1. Bleeding edge fixes, improvements:
A custom kernel often forks from the mainline of AOSP bringing in best and the latest of fixes, performance improvements submitted to AOSP project by Google and external contributors. Often, this will bring new improvements in VM (virtual machine), RAM management, process management, and more.
You can rely on OTAs but how often does your manufacturer/carrier provides them… once or twice a year? With custom kernels, you can always be miles closer to latest and greatest.
2. Hottest features
Your device may not support the best audio engine, or may not even have DoubleTap2Wake, fast charging, etc. Such features often require support in the kernel and cannot be shipped in as an application from Play store unless your kernel supports it.
Thats where you need ‘open’ custom kernels. These will give you access to amazing features that were only available to people with latest devices.
3. Performance & Battery Improvements: Custom, Improved Governors, smart techniques
Your CPU, GPU, and IO is often controlled by an engine called governor. These governors are smart enough to decide when your CPU should clock down (on idle state) and when it throttles to higher clocks based on your usage pattern. Stock (out of the box) governors are often not optimized for battery. The example worth quoting here is of Qualcomm’s Snapdragon processors which use MP-Decision to control clock frequency of your CPU. The pro developers often call it Make-Poor (MP) Decision for the right reasons. MP-Decision takes the CPU clock to much higher values than required, resulting in bad-to-poor battery life. Wasting CPU cycles has a huge impact on battery life. Most custom kernels employ their own custom governors to get over this, resulting in nearly 30-50% improvements in Screen-on-Time (SoT).
4. Overclocking, Underclocking, Undervolting
Most custom kernels allow you to overclock your CPU, GPU to gain its full potential (in safe-boundaries). You can also undervolt each clock frequency to gain power savings. Then there are million others like multi-core power saving, underclocking when screen-off. All-in-all improved responsiveness, increased battery life.
5. Device fine tuning
Not all Android devices are built alike. Manufacturers often leave some imperfections in tuning the display, sound, etc. Custom kernels let your calibrate the display to your likings with Color temperature, gamma correction. You can also boost the inbuilt amplifier for louder headphone/speaker volumes. Among other features, you can even Enable/disable notification LED, capacitive lights, vibration strength/duration, gestures, etc. For certain devices, you can even boost microphone. The list goes on.
All of these are of course possible if the custom Kernel is coded right. Once you’re rooted, you can google for your device’s ” *device model* XDA Android development” and explore the forum. For each device, there are plethora of custom Kernels, its hard for me to recommend the best to you for each device. The general rule of thumb is to explore the XDA android development forum for your device and you can go through the posts in the thread to know the generic feel of the kernel. Another way is to flash and try every custom kernel available for couple of days. Its hit and miss, actually.
Few popular Kernel developers: Franco kernel, SlimKernel, LeanKernel ElementalX, Linaro Kernel, Chaos Kernel, etc.