Kernel Power

=Kernel for Power Users=

The enhanced kernel "kernel-power" is compatible with PR1.2, contain lots of additional features (IPv6, NAT etc) and bugfixes. The kernel can be installed via Application manager from the System section.

'''Note: This page is under construction and based on the Overclocking instructions. Hence the heavy bias to overclocking.''' For overclocking it includes a large set of possible frequencies (125MHz-1.15GHz) which you manually set and try out without flashing a new kernel. The defaults are set to the standard 250-600MHz range.

Installation of the kernel
This kernel makes it possible to dynamically change the maximum frequency up to 1.15GHz (supported frequencies are 125,250,500,550,600,700,750,805,850,900,950,1000,1100,1150MHz). WARNING: Overclocking may damage your device and is at your own risk! It may void your warranty and destroy your data. You have been warned.

talk.maemo.org: Discussion of the enhanced kernel

Note: all commands on this page must be run as root in X Terminal (install rootsh package and enter "sudo gainroot")

Installation of the more stable kernel (maemo24) from extras-testing
With this kernel you can change the frequency limits, the voltages and DSP frequencies online. It requires firmware PR1.1 or newer. [Configuring_the_kernel_settings read this for configuration]
 * 1) Install the package kernel-power-settings (section system in HAM). It will automatically also install kernel-power-flasher.
 * 2) shutdown and boot again. There's no need for reflashing etc.

Installation of the experimental kernel (maemo25) from extras-devel
This kernel version contains additional experimental features and patches. Changelogs are posted here. Read the instructions for the stable kernel for more information.
 * 1) Install the package "Enhanced kernel for power users" (section system in HAM).
 * 2) shutdown and boot again. There's no need for reflashing etc.

Upgrade from older versions (< maemo24)
The package was previously called kernel-flasher-maemo. If you have one of the older packages installed it it recommended that you upgrade in X Terminal sudo gainroot 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 deinstalling the old package.

Make sure you reset /etc/pmconfig to the defaults: 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
 * 1) Power management configuration file

Deinstallation
sudo gainroot apt-get install --reinstall -y kernel kernel-flasher apt-get remove kernel-power kernel-power-modules

= Configuring the kernel settings = read this for more details.

First verify, that the kernel is actually running: uname -r should return "2.6.28.10power-omap1" It it does not, you should reboot or try to install again apt-get install --reinstall -y kernel-power kernel-power-flasher reboot, and test again.

Make sure the packages kernel-power-settings and rootsh are installed. All commands need to be run as root user. If you are normal user in X Terminal enter "sudo gainroot".

1) to try a configuration (you can replace "ideal" with default, lv, ulv, xlv or specify a file you created based on the template /usr/share/kernel-power-settings/default ) /usr/sbin/kernel-load /usr/share/kernel-power-settings/ideal Note: do NOT modify the files in /usr/share/kernel-power-settings/! see 'Creating your own configuration: below.

2) to permanently install a default configuration rm -f /etc/default/kernel-power ln -s /usr/share/kernel-power-settings/ideal /etc/default/kernel-power 3) or your own config rm -f /etc/default/kernel-power cp /etc/default/kernel-power 4) and to immediately apply it /usr/sbin/kernel-load

For beginners: first reboot. then try 1) and check whether the device is stable. then do 2).

Creating your own configuration 5) copy the template to your mydocs (when not in mass storage mode) cp /usr/share/kernel-power-settings/ideal /home/user/MyDocs/kernel.txt 6) edit the file /home/user/MyDocs/kernel.txt. The defaults are VDD1_OPPS_VSEL="30 30 38 48 54 48 60 60 60 60 60 60 60 72 72" DSP_OPPS_RATE="90 90 180 360 400 430 430 430 430 500 500 500 500 520 520" MIN_FREQ=250000 MAX_FREQ=599000 SMARTREFLEX_VDD1=0 SMARTREFLEX_VDD2=0 For changing the frequency range change MIN_FREQ/MAX_FREQ (see "Temporary change of the frequency limits" below ). Either edit the file with an editor on your device (e.g., leafpad) or USB mount it to edit it on the PC. unmount and unplug USB. After editing load the configuration with /usr/sbin/kernel-load /home/user/MyDocs/kernel.txt and repeat 6) until you're happy.
 * 1) UP_THRESHOLD=75
 * 2) SAMPLING_RATE=150000

7) to permanently install this new configuration rm -f /etc/default/kernel-power cp /home/user/MyDocs/kernel.txt /etc/default/kernel-power /usr/sbin/kernel-load

8) to reset the device to the defaults use rm -f /etc/default/kernel-power /usr/sbin/kernel-load /usr/share/kernel-power-settings/default

Note: the package automatically detects whether a certain misconfiguration has caused reboot loop. It your device reboots twice within 5 minutes, it will load the default settings (250-600Mhz) so that you can fix or remove the invalid configuration file. This also means that, when for some reason you manually reboot too quickly (<5min) your configuration will not be loaded. To load it nonetheless run after booting /usr/sbin/kernel-load

= Temporary change of the frequency limits = sudo gainroot echo 250000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 599000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq The last line shows which values were actually set. To set 125MHz use 124999, for 600MHz 599999, for everthing else x000 with x=MHz. This setting takes effect immediately and is cleared with the next reboot.

= Permanent configuration of the frequency limits = WARNING: Permanent overclocking is very dangerous!

Install kernel-power-settings and follow those instructions.

= Battery = 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


 * 'capacity' value in percentage of battery level.
 * 'voltage_now' value in mV of battery voltage level.
 * 'current_now' value in mA of battery current consumption. (???)
 * 'temp' value in degrees C of battery temperature.

To remove this kernel module use:

modprobe -r bq27x00_battery

or reboot.

= 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

= Remarks = echo > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies echo 125000 250000 750000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies
 * 1) The screen calibration in settings crashes immediately. It is a known bug in the calibration app, not in the kernel. It's mentioned in the kernel package description and is due to additional evdev (joystick,mouse) support. Just calibrate once with the stock kernel before you install the fully featured kernel.
 * 2) The kernel supports 125MHz 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_frequencies and can be enabled with
 * 1) similarily, individual frequencies can be disabled in >=v25
 * 1) even if 125Mhz is disabled, the telephone app will always try to set the minimum freq. to 125Mhz after a phone call, but it is ignored unless you enable 125Mhz.
 * 2) if you enable 125MHz also set  "echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load" hint


 * 1) the 125MHz issue
 * 2) 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.
 * 3) If you for some reason get errors like this during removal or installation  "rm: cannot remove '/lib/modules/2.6.28.10maemo-lv-omap1/modules.*': No such file or directory".try this workaround. There was a bug in one of the early LV kernels but it should be fixed in more recent versions.
 * 4) This kernel will not conflict with the future PR1.2 upgrade. The upgrade will, however, overwrite this kernel and you'll have to install it again.