Uncovering N900 Kernels; Explored and Explained

Many users have recently been duped into spec wars started by HTC and other Android handset manufacturers. Snapdragon and Hummingbird platforms touting 1GHz+ speeds and eventually dual core, many are overlooking at how the software interacts with the hardware. The kernel is at the core of this software, controlling memory, CPU and providing an abstraction layer for applications. Thanks to the open nature of Maemo 5, we have direct access to kernel source. It’s a full blown 2.6.xx kernel with OMAP patches. Overclocking the N900 first started in April, ramping up the original top clock speed of 600MHz to, well, anywhere below 1.7GHz - including the abilities to over-volt or under-volt in order to increase stability or increase battery life. Many power users started compiling their own kernels, pulling downstream patches for optimization, customizable voltage and frequency tables and even implementing new (BFS) task schedulers.

I’m currently using the community power kernel, release 38 with BFS patches - it provides the kernel with a completely new process scheduler. The inner workings of a kernel are really only understood by kernel coders and I have most definitely never gotten intimate with kernel programming; but BFS allows for the kernel to do less “thinking” and pre-emptive process adjusting and gives queues to processes based on their estimated lifetime. With real world usage, the device is noticeably faster and much more responsive when large memory intensive applications are running. This is with a customized over-clock/under-volt table with a ceiling of 1GHz.

Normally, many would believe an overclocked device to use more power, generate more heat and thus have a reduced battery life, fortunately that’s not necessarily the case. The current community kernels allow for dynamic clock frequency modification for the ARMv7 based Cortex-A8 as well as the TI C64x+ DSP chip. The tables also allow on-the-fly voltage adjustment and verbose battery reporting. By undervolting the device, you can save battery draw and heat given off by the processor. Using the `dbus-scripts` package, clock speed ceilings can be set - forcing the device to camp at 250MHz while locked and then allowing it to run up to 1GHz while unlocked, only giving you the increased power when you are using the device.

The creator and maintainer (Tom Tanner / titan) of the community power kernel has been accepting patches for new performance and stability, as well as ones that extend functionality. The most important one thus far, to me, is the incorporation of the WL1251 RFMON fix by David Gnedt - who has also completed a patch that allows live frame injection without BSSID association. This is a real testament to the hardware that Nokia uses, as well as their decision to use such a (comparatively) open source platform.

Android initiatives have implemented patches from many downstream kernel repositories. Cyanogen has been using pieces of BFS since before the N900 was even released. WebOS hackers have been RAM and hard patching their devices for quite some time. Now the N900 hasn’t been lacking in advancements, but we do not have near the amount of full-blown modifications that are easily available to the end user as Android, iPhone and WebOS do. The platform is so much more open and accessible, but unfortunately we don’t have the pure numbers of North American hackers working with the device.


Anonymous said...

Genial brief and this mail helped me alot in my college assignement. Say thank you you seeking your information.

Anonymous said...

Hey there nice post. But are you able to provide more detail on how to get the power kernel 38 and BFS patch working?

Post a Comment