The enhanced kernel "kernel-power" is compatible with PR1.2 and PR1.3, contain lots of additional features (IPv6, NAT etc) and bugfixes. The kernel can be installed via Application manager from the System section. Installation of the customization package Kernel-Power-Settings is sufficient, as it depends on the kernel page.
The custom kernel contains additional modules for IPv6, packet filtering, QoS, NAT, tunneling, kernel configuration, Wifi mesh networking, builtin ext3 for booting from other media, ext4, XFS, reiserfs, NTFS read support, ISO9660, UDF, CIFS, automounter, squashfs, unionfs, device mapper and dm-loop, cryptography, cryptoloop, EFI partitions, UTF8 codepages, mouse+joystick input, PPP, PPTP, serial support, USB hostmode (h-e-n), USB/IP and generic USB device drivers, battery info, overclocking and kexec support.
Note: This page is under construction and based on the overclocking/undervolting instructions. Hence the heavy bias to overclocking. For overclocking it includes a large set of possible frequencies (125 MHz-1.15 GHz) which you manually set and try out without flashing a new kernel. The defaults are set to the standard 250-600 MHz range. You can also fine tune the voltages for your device for power-saving. Every device is different.
Changes between versions are announced on the garage page.
 Installing kernel-power
apt-get install fcam-drivers
 Installing the Stable Kernel
With this kernel you can change the frequency limits, the voltages and DSP frequencies online. It requires firmware PR1.1 or newer.
- Install the package
kernel-power-settings(section system in Application manager). It will automatically also install
- Shutdown the device, and boot it up again.
- The kernel is now installed.
 Installing the Unstable Kernels
This kernel version contains additional experimental features and patches.
Please follow the QA checklist and vote for the package to allow promotion to Extras.
 Verifying Proper InstallationFirst verify, that the kernel is actually running:
should return "126.96.36.199power<version>". If it does not, you should reboot or try to install the kernel again.
 Upgrade from older versions (< maemo24)
The kernel package was previously called
kernel-flasher-maemo. Unfortunately, Application Manager does not support package transitions, i.e. installation of the new version leads to conflicts with
If you have one of the older packages installed it you need to upgrade in X Terminal.
root apt-get install -y kernel-power-flasher apt-get remove kernel-flasher-maemo
If the new kernel still doesn't boot up, try
apt-get install --reinstall -y kernel-power kernel-power-flasher
Also try other hints for uninstalling the old package.
Make sure you reset
/etc/pmconfig to the defaults:
# Power management configuration file enable_off_mode 1 sleep_while_idle 1 sr_vdd1_autocomp 0 sr_vdd2_autocomp 0 clocks_off_while_idle 1 voltage_off_while_idle 1 scaling_governor ondemand scaling_max_freq 600000 scaling_min_freq 125000 sleep_ind 1
 Uninstalling kernel-power
Do not try to uninstall the "kernel-power" package in Application Manager! This does not remove the kernel, as it is installed in the device's NAND.
You never want to uninstall a kernel, as your device can't work without a kernel.
 Installing the Nokia Kernel with X Terminal
The standard process for replacing the kernel is as follows:
- Ensure that you have a working Internet connection.
- Install the package rootsh. (available in the System section of the Application Manager)
- Close the Application Manager.
- Gain root permissions
- Reinstall the stock Nokia kernel
apt-get install --reinstall -y kernel kernel-flasher
- Should it complete successfully (with "SIGTERM received" and "Image flashed successfully" messages), then you can continue with
apt-get remove -y kernel-power kernel-power-modules
- After uninstallation, the command
ls -l /lib/modules/currentshould show:
... /lib/modules/current -> 2.6.28-omap1
- Shutdown the device (without any USB cable connected) and boot again.
- The stock kernel should now be installed.
 Installing the Nokia Kernel (Graphical Method)
If you have a recent kernel (>v27), there is a "Deinstall kernel" application in your menu. This application is however, still experimental (for >v27 it is more stable). Only use if have can fall back to reflashing the kernel using the flasher (see below) in case of problems. Read the instructions carefully when you start the deinstall application!
 Installing the Nokia Kernel with flasher-3.5
If the device fails to boot or you have other problems, perform the uninstallation from a PC with USB cable and the flasher-3.5 utility: NOTE: This only works for kernel-power v28 and later. Versions prior to 28 interfere with system files, and may not work properly with the stock Nokia kernel.
- Make sure your battery is properly charged (if it fails, charge your battery)
- Execute the following on your PC (see this for more details)
flasher-3.5 -f --flash-only=kernel -R -F <firmware-image>
- The firmware image file could be, for example,
RX-51_2009SE_3.2010.02-8_PR_COMBINED_MR0_ARM.bin. This is only way of deinstallation with leaked release 1.2 firmware.
 Upgrading to a new PR
Before upgrading, always make a backup. There are two ways of upgrading the firmware to a new Nokia public release (PR):
- reflashing the complete firmware via flasher or NSU. This is safest way (especially for PR1.2). In this case you simply reinstall the kernel after the upgrade. The settings should be restored by the backup application.
- Over The Air (OTA) upgrade: this upgrades only system components of your device so that you don't need to restore your settings or reinstall applications. see below
OTA upgrade: Disable extras-devel and extras-testing. DIsable autodisconnect if is installed. Perform the upgrade. If the PR does not deliver a new kernel (PR1.1.1) then you're done. If it provides a new kernel (PR1.1 and PR1.2) then you need to reinstall the enhanced kernel with the following commands:
root apt-get install --reinstall kernel-power kernel-power-modules kernel-power-flasher
 Holding a specific kernel version
If your manually installed kernel should be not upgraded to the one in extras* try this:
echo kernel-power-flasher hold | dpkg --set-selections echo kernel-power hold | dpkg --set-selections echo kernel-power-modules hold | dpkg --set-selections
to unlock the version:
echo kernel-power-flasher install | dpkg --set-selections echo kernel-power install | dpkg --set-selections echo kernel-power-modules install | dpkg --set-selections
 Issues after multiboot or Nitdroid installation
Multiboot changes the boot process and might not load kernel-power properly. This is not a kernel-power problem. Please read the multiboot threads or Nitdroid forums. For versions >=v39 typically,
apt-get install kernel-power-bootimg apt-get install --reinstall multiboot-kernel-power
adds kernel-power to your boot menu.
 Configuring the kernel speed/voltage settings
The instructions on the Overclocking page require the
kernel-power-flasher >=v27 and
If you upgraded from the old stable version the old settings should still work and be loaded during boot.
NOTE: The kernel settings are not loaded after a crash. In that case the file
/etc/kernel-power/.notloaded is created
and a notification will be shown after booting. The settings will be loaded at the next boot again unless it crashes again.
bq27200.ko module conflicts with bme battery charging! A "fix" temporarily added to I2C driver broke system completely and thus got reverted In kernels version >=maemo20 you can read out the current battery info:
modprobe bq27x00_battery cat /sys/class/power_supply/bq27200-0/capacity cat /sys/class/power_supply/bq27200-0/voltage_now cat /sys/class/power_supply/bq27200-0/current_now cat /sys/class/power_supply/bq27200-0/temp cat /sys/class/power_supply/bq27200-0/charge_full cat /sys/class/power_supply/bq27200-0/charge_full_design cat /sys/class/power_supply/bq27200-0/charge_now cat /sys/class/power_supply/bq27200-0/time_to_empty_avg cat /sys/class/power_supply/bq27200-0/time_to_empty_now cat /sys/class/power_supply/bq27200-0/time_to_full_now
- 'capacity' value in percentage of battery level.
- 'voltage_now' value in mV of battery voltage level.
- 'current_now' value in microA of battery current consumption.
- 'temp' value in degrees C of battery temperature. (>= v47: in tenths of degree Celsius)
In kernel version >= v47 is additional info:
- 'charge_full' value in µAh - last remembered value of charge when battery became full
- 'charge_full_design' value in µAh - design charge value, when battery considered full
- 'charge_now' value in µAh - actual charge value
- 'time_to_empty_avg' averaged value - seconds left for battery to be considered empty (i.e. while battery powers a load)
- 'time_to_empty_now' seconds left for battery to be considered empty (i.e. while battery powers a load)
- 'time_to_full_now' seconds left for battery to be considered full (i.e. while battery is charging)
To remove this kernel module use:
With kernel-power-settings >=0.6 the module can be loaded on boot. Just execute this once:
root echo bq27x00_battery >> /etc/modules
With kernel version >= v47 the bq module is automatically loaded on boot. To disable, blacklist bq27x00_battery module:
root echo bq27x00_battery >> /etc/modprobe.d/blacklist
 Mobile Hotspot
all necessary modules are included. read this for more details.
seems to work. read this post.
Update: it doesn't work for me (recent version of Joikuspot and Maemo), ICMP and DNS resolving work OK, but TCP connections are completely freezed...If it works for you, let us know.
 CIFS Support
You can now mount a network drive using Microsoft's CIFS protocol. To do so you need to do the following:
- Share a folder on your Windows PC, with the latest versions of Windows you will have to create a user account with a password to share a specific folder that is not the Public Library.
- Create a folder for the mount, pressumably on your /home/users/MyDocs folder, so that you could access your network drive through the file manager.
- Mount the folder on your device by typing the following into xterm under root:
mount -t cifs //netbiosname/sharename /media/sharename -o user=winusername,pass=winpassword,ip=destip,direct
 Boot Options
There is a separate file /etc/default/kernel-boot for extra boot options. It requires kernel-power-settings >= 0.11 and is disabled by default. These two options are experimental and may brick your device! Just install the template with the following commands and edit it (by default the options are disabled)
root cp /usr/share/kernel-power-settings/boot /etc/default/kernel-boot
The default template looks like this
# start USB networking and sshd early during boot EARLY_SSH=0 # fsck of /home partition before mounting? # 1=if necessary, force=always check FSCK_HOME=0
 Filesystem Checking and Repair, and pre-mount Scripts
See above for enabling this feature. The following operations are performed before mounting /home:
- If you have a script (e.g. for repartitiong) called /etc/kernel-power/pre-mount.once it will be executed once and then moved away.
- if FSCK_HOME is enabled the /home partition (first ext3 on eMMC) will be fscked on boot.
root echo 1 > /etc/kernel-power/force_fsck
should check it only during next boot.
root echo 0 > /etc/kernel-power/force_fsck
disables it only for the next boot.
If you reset or reboot the device during fsck, it will not fsck (only) during the next boot. All messages are logged to
IPv6 support is enabled and many users are successfully using it. Note however, not all applications are IPv6 compatible.
So far, it has been successfully used with Chromium and Firefox out of the box. To run with the MicroB browser, you need to change one of the settings.
The setting is 'network.dns.disableIPv6' in about:config. When set to false, IPv6 just works when the phone has IPv6 connectivity.
IPv6 has also been used successfully with ssh and sshd.
Please share additional experiences here.
 Other Filesystems
The kernel includes support for many alternative filesystems, including ext4 bugfixes and large file support. You might want to repartition your eMMC or SD card with Repartitioning_the_flash.
- even if 125 Mhz is disabled, the telephone app will always try to set the minimum freq. to 125 Mhz after a phone call, but it is ignored unless you enable 125 Mhz.
- if you enable 125 MHz also set "
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load" hint
- the 125 MHz issue
- Installing another version of the enhanced kernel will just overwrite the older version. The stock kernel modules are preserved so that you can simply reflash the stock kernel via USB.
- The kernel supports 125 MHz but this frequency is disabled by default in avoid_frequencies. In version <25, it is enabled by specifying "124999", in later versions it is disabled in
/sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequenciesand can be enabled with:
echo > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequenciessimilarily, individual frequencies can be disabled in >=v25:
echo 125000 250000 750000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies
- This page was last modified on 8 June 2012, at 15:52.
- This page has been accessed 264,911 times.