Kernel Power

(OTA upgrade)
(Installing kernel-power)
 
(43 intermediate revisions not shown)
Line 1: Line 1:
-
=Kernel for Power Users=
+
The enhanced kernel "kernel-power" is compatible with [[Maemo_5/PR1.2|PR1.2]] and  [[Maemo_5/PR1.3|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 enhanced kernel "kernel-power" is compatible with [[Maemo_5/PR1.2|PR1.2]], contain lots of additional features (IPv6, NAT etc) and bugfixes. The kernel can be installed via Application manager from the System section.
+
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.
-
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/IP and generic USB device drivers, battery info, overclocking and kexec support.
+
'''Note: This page is under construction and based on the [[Overclocking|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.
-
'''Note: This page is under construction and based on the [[Overclocking|overclocking/undervolting instructions]]. Hence the heavy bias to overclocking.'''
+
[http://talk.maemo.org/showthread.php?t=43420 talk.maemo.org: Discussion of the enhanced kernel]
-
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.
+
[http://talk.maemo.org/showthread.php?t=71879: Discussion of the enhanced kernel beginning with version 47]
-
The defaults are set to the standard 250-600MHz range. You can also fine tine the voltages for your device for power-saving. Every device is different.
+
-
[http://talk.maemo.org/showthread.php?t=43420 talk.maemo.org: Discussion of the enhanced kernel]
 
Changes between versions are announced on the [https://garage.maemo.org/news/?group_id=1528 garage page].
Changes between versions are announced on the [https://garage.maemo.org/news/?group_id=1528 garage page].
-
== Installation of the kernel ==
+
==Installing kernel-power==
-
'''Note:''' all commands on this page must be [[root access|run as root]] in [[terminal|X Terminal]] (install rootsh package and enter "sudo gainroot")
+
'''Note:''' All commands on this page must be [[root access|run as root]] in [[terminal|X Terminal]] (install rootsh package and enter "root")
-
=== Installation of the [http://maemo.org/downloads/product/Maemo5/kernel-power-flasher/ stable kernel] from extras ===
+
'''Note: The power kernel may not be compatible with the currently-installed fcam-drivers package.''' Should you lose camera functionality, you can update them by running as root:<pre>apt-get install fcam-drivers</pre>
 +
 
 +
'''Note:''' This probably won't work and you'll probably need to install fcam-drivers-1.0.7-2 from extras-devel:
 +
http://repository.maemo.org/extras-devel/pool/fremantle/free/f/fcam-drivers/fcam-drivers_1.0.7-2_armel.deb
 +
install with ''dpkg -i'' command
 +
 
 +
===Installing the [http://maemo.org/downloads/product/Maemo5/kernel-power-flasher/ Stable Kernel]===
With this kernel you can change the frequency limits, the voltages and DSP frequencies online. It requires firmware [[Maemo 5/PR1.1|PR1.1]] or newer.
With this kernel you can change the frequency limits, the voltages and DSP frequencies online. It requires firmware [[Maemo 5/PR1.1|PR1.1]] or newer.
# Install the package <code>[http://maemo.org/downloads/product/Maemo5/kernel-power-settings/ kernel-power-settings]</code> (section system in Application manager). It will automatically also install <code>kernel-power-flasher</code>.
# Install the package <code>[http://maemo.org/downloads/product/Maemo5/kernel-power-settings/ kernel-power-settings]</code> (section system in Application manager). It will automatically also install <code>kernel-power-flasher</code>.
-
# shutdown and boot again. There's no need for reflashing etc.
+
# Shutdown the device, and boot it up again.
-
 
+
# The kernel is now installed.
-
[[#Configuring_the_kernel_settings_.28of_the_stable_version_from_extras.29|See below for configuration information]]
+
-
=== Installation of the [https://maemo.org/packages/package_instance/view/fremantle_extras-devel_free_armel/kernel-power-flasher/2.6.28-maemo32/ experimental kernel] from extras-devel ===
+
===Installing the Unstable Kernels===
This kernel version contains additional experimental features and patches.
This kernel version contains additional experimental features and patches.
-
Changelogs are posted [https://garage.maemo.org/news/?group_id=1528 on Garage].
 
-
# Install the package "Enhanced kernel for power users" (section system in HAM).
 
-
# shutdown and boot again. There's no need for reflashing etc.
 
-
[[#Configuring_the_kernel_settings_.28of_the_experimental_version_from_extras-devel.29|See below for configuration information]]
+
Just enable the [[Extras-testing]] or [[Extras-devel]] catalogue and install according to [[#Installing the Stable Kernel|these instructions]].
-
=== Verification of proper installation ===  
+
Please follow the [[Help_testing_software|QA checklist]] and vote for the package to allow promotion to Extras.
-
First verify, that the kernel is actually running:
+
 
-
uname -r
+
=== Verifying Proper Installation ===  
-
should return "2.6.28.10power-omap1" or  "2.6.28.10power<version>-omap1"
+
First verify, that the kernel is actually running:<pre>uname -r</pre>
-
If it does not, you should reboot or try to install again
+
should return "2.6.28.10power<version>".
-
apt-get install --reinstall -y kernel-power kernel-power-flasher
+
If it does not, you should reboot or try to [[#Installing kernel-power|install the kernel again]].
-
reboot, and test again.
+
=== Upgrade from older versions (< maemo24)  ===
=== Upgrade from older versions (< maemo24)  ===
-
The kernel package was previously called kernel-flasher-maemo.
+
The kernel package was previously called <code>kernel-flasher-maemo</code>. Unfortunately, Application Manager does not support package transitions, i.e. installation of the new version leads to conflicts with <code>kernel-maemo</code> and <code>kernel-modules-maemo</code>.
-
Unfortunately Application Manager does not support package transitions.
+
If you have one of the older packages installed it you need to upgrade in X Terminal.
-
If you have one of the older packages installed it is recommended that you upgrade in X Terminal
+
<pre>root
-
sudo gainroot
+
apt-get install -y kernel-power-flasher
-
apt-get install -y kernel-power-flasher
+
apt-get remove kernel-flasher-maemo
-
apt-get remove kernel-flasher-maemo
+
</pre>
If the new kernel still doesn't boot up, try
If the new kernel still doesn't boot up, try
-
apt-get install --reinstall -y kernel-power kernel-power-flasher
+
<pre>apt-get install --reinstall -y kernel-power kernel-power-flasher</pre>
-
Also try [http://talk.maemo.org/showpost.php?p=608343&postcount=2603 other hints] for deinstalling the old package.
+
Also try [http://talk.maemo.org/showpost.php?p=608343&postcount=2603 other hints] for uninstalling the old package.
-
Make sure you reset /etc/pmconfig to the defaults:
+
Make sure you reset <code>/etc/pmconfig</code> to the defaults:
-
# Power management configuration file
+
<pre>
-
enable_off_mode 1
+
# Power management configuration file
-
sleep_while_idle 1
+
enable_off_mode 1
-
sr_vdd1_autocomp 0
+
sleep_while_idle 1
-
sr_vdd2_autocomp 0
+
sr_vdd1_autocomp 0
-
clocks_off_while_idle 1
+
sr_vdd2_autocomp 0
-
voltage_off_while_idle 1
+
clocks_off_while_idle 1
-
scaling_governor ondemand
+
voltage_off_while_idle 1
-
scaling_max_freq 600000
+
scaling_governor ondemand
-
scaling_min_freq 125000
+
scaling_max_freq 600000
-
sleep_ind 1
+
scaling_min_freq 125000
 +
sleep_ind 1
 +
</pre>
-
=== Deinstallation ===
+
===Uninstalling kernel-power===
-
Do not try to deinstall the package in Application Manager! It does not work.
+
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.
-
For all kernels the safest method for deinstallation is the following:
+
'''You never want to uninstall a kernel''', as your device can't work without a kernel.
-
# make sure you have a working Internet connection (and possibly wait a little bit until the updates are downloaded)
+
====Installing the Nokia Kernel with X Terminal====
-
# make sure the package rootsh (Section system) is installed
+
The standard process for replacing the kernel is as follows:
-
# close Application manager
+
-
# execute the following in X-Terminal
+
-
sudo gainroot
+
-
apt-get install --reinstall -y kernel kernel-flasher
+
-
# if it finishes successfully (with "SIGTERM received" and "Image flashed successfully" messages) then you can continue with
+
-
apt-get remove -y kernel-power kernel-power-modules
+
-
# after successful deinstallation the comand "ls -l /lib/modules/current" should show
+
-
... /lib/modules/current -> 2.6.28-omap1
+
-
# shutdown (without USB cable or charger connected) and boot again
+
-
# your device should now be running the stock kernel
+
-
If the device fails to boot or you have other problems, perform the deinstallation from PC with USB cable and flasher utility:
+
# Ensure that you have a working Internet connection.
-
# Make sure you have a version 28 or later from extras-testing installed (it fixes the broken /sbin/preinit)
+
# Install the package '''rootsh'''. (available in the System section of the Application Manager)
-
# for older versions it is not guaranteed that this method will work without a complete reflash.
+
# Close the Application Manager.
-
# execute the following on your PC (see [[Updating_the_tablet_firmware|this]] for more details)
+
# Gain root permissions<pre>sudo gainroot</pre>
-
flasher-3.5 -f --flash-only=kernel -R -F <firmware-image>
+
# Reinstall the stock Nokia kernel<pre>apt-get install --reinstall -y kernel kernel-flasher</pre>
-
The firmware image file could be, for example, RX-51_2009SE_3.2010.02-8_PR_COMBINED_MR0_ARM.bin
+
# Should it complete successfully (with "SIGTERM received" and "Image flashed successfully" messages), then you can continue with <pre>apt-get remove -y kernel-power kernel-power-modules</pre>
-
This is only way of deinstallation with leaked release 1.2 firmware.
+
# After uninstallation, the command <pre>ls -l /lib/modules/current</pre>should show: <pre>... /lib/modules/current -> 2.6.28-omap1</pre>
 +
# Shutdown the device (without any USB cable connected) and boot again.
 +
# The stock kernel should now be installed.
-
If you have the kernel from extras-testing (>v27), there is a "Deinstall kernel" application in your menu.
+
====Installing the Nokia Kernel (Graphical Method)====
-
This applications is, however, still '''experimental''' (for >v27 it is more stable). Only use if have can fall back to reflashing
+
If you have a recent kernel (>v27), there is a "Deinstall kernel" application in your menu.
-
the kernel using the flasher (see below) in case of problems.
+
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!
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 [[Updating the firmware|this]] for more details)<pre>flasher-3.5 -f --flash-only=kernel -R -F <firmware-image></pre>
 +
*The firmware image file could be, for example, <code>RX-51_2009SE_3.2010.02-8_PR_COMBINED_MR0_ARM.bin</code>. This is only way of deinstallation with leaked release 1.2 firmware.
=== Upgrading to a new PR ===
=== Upgrading to a new PR ===
-
Before upgrading, always make a backup.
+
Before upgrading, always make a backup. There are two ways of upgrading the firmware to a new Nokia public release (PR):
-
There are two ways of upgrading the firmware to a new Nokia public release (PR):
+
# [[Updating the firmware|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.
-
# [[Updating_the_tablet_firmware|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
# 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:
OTA upgrade:
-
Disable extras-devel and extras-testing. DIsable autodisconnect if is installed.
+
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:
-
If the PR does not deliver a new kernel (PR1.1.1) then simply upgrade.
+
  root
-
If it provides a new kernel (PR1.1 and PR1.2) then there are again two options:
+
-
#  first [http://wiki.maemo.org/Kernel_Power#Deinstallation deinstall] the power-user kernel, upgrade to the PR, and then install the power-user kernel after the successful upgrade again. If you had kernel-power-settings installed, you need to reinstall it too. Your settings should not be affected by the removal and reinstallation.
+
-
# (currently untested) perform the upgrade and reinstall the enhanced kernel with the following commands:
+
-
  sudo gainroot
+
  apt-get install --reinstall kernel-power kernel-power-modules kernel-power-flasher
  apt-get install --reinstall kernel-power kernel-power-modules kernel-power-flasher
=== Holding a specific kernel version ===
=== Holding a specific kernel version ===
If your manually installed kernel should be not upgraded to the one in extras* try [http://talk.maemo.org/showpost.php?p=603915&postcount=2063 this]:
If your manually installed kernel should be not upgraded to the one in extras* try [http://talk.maemo.org/showpost.php?p=603915&postcount=2063 this]:
-
echo kernel-power-flasher hold | dpkg --set-selections
+
 
-
echo kernel-power hold | dpkg --set-selections
+
<pre>
-
echo kernel-power-modules hold | dpkg --set-selections
+
echo kernel-power-flasher hold | dpkg --set-selections
 +
echo kernel-power hold | dpkg --set-selections
 +
echo kernel-power-modules hold | dpkg --set-selections
 +
</pre>
to unlock the version:
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
 
-
== Configuring the kernel settings (of the stable version from extras) ==
+
<pre>
 +
echo kernel-power-flasher install | dpkg --set-selections
 +
echo kernel-power install | dpkg --set-selections
 +
echo kernel-power-modules install | dpkg --set-selections
 +
</pre>
-
These instructions refer to kernel-power-flasher v24 and kernel-power-settings 0.3.
+
=== Issues after multiboot or Nitdroid installation ===
-
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.
+
-
For more details on voltages read [[Overclocking#Voltage_tables]].
+
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,
 +
<pre>apt-get install kernel-power-bootimg
 +
apt-get install --reinstall multiboot-kernel-power</pre>
 +
adds kernel-power to your boot menu.
-
Make sure the packages ''kernel-power-settings'' and ''rootsh'' are installed.
+
== Features ==
-
'''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 [[#Kernels.27_specifications | default, lv, ulv, xlv]] or specify a file you created based on the template /usr/share/kernel-power-settings/default )
+
=== Configuring the kernel speed/voltage settings ===
-
/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
+
The instructions on the [[Overclocking]] page require the <code>kernel-power-flasher >=v27</code> and <code>kernel-power-settings >=0.8</code>.
-
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 <filename> /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).
+
If you upgraded from the old stable version the old settings should still work and be loaded during boot.
-
'''Creating your own configuration'''
+
'''NOTE''': The kernel settings are not loaded after a crash. In that case the file <code>/etc/kernel-power/.notloaded</code> is created
-
5) copy the template to your mydocs (when not in mass storage mode)
+
and a notification will be shown after booting. The settings will be loaded at the next boot again unless it crashes again.
-
cp /usr/share/kernel-power-settings/ideal /home/user/MyDocs/kernel.txt
+
-
6) edit the file ''/home/user/MyDocs/kernel.txt''. The defaults are
+
-
#UP_THRESHOLD=75
+
-
#SAMPLING_RATE=150000
+
-
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.
+
-
7) to permanently install this new configuration
+
=== Battery ===
-
rm -f /etc/default/kernel-power
+
'''bq27200.ko module conflicts with bme battery charging! A "fix" temporarily added to I2C driver broke system completely and thus got reverted'''
-
cp /home/user/MyDocs/kernel.txt  /etc/default/kernel-power
+
In kernels version >=maemo20 you can read out the current battery info:
-
/usr/sbin/kernel-load
+
-
8) to reset the device to the defaults use
+
<pre>
-
rm -f /etc/default/kernel-power
+
modprobe bq27x00_battery
-
/usr/sbin/kernel-load /usr/share/kernel-power-settings/default
+
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
 +
</pre>
-
'''Note''': the package automatically detects whether a certain misconfiguration has caused '''reboot loop.'''
+
*'capacity' value in percentage of battery level.
-
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.
+
*'voltage_now' value in mV of battery voltage level.
-
This also means that, when for some reason you manually reboot too quickly (<5min) your configuration will not be loaded.
+
*'current_now' value in microA of battery current consumption.
-
To load it nonetheless run after booting
+
*'temp' value in degrees C of battery temperature. (>= v47: in tenths of degree Celsius)
-
/usr/sbin/kernel-load
+
-
=== Temporary change of the frequency limits ===
+
In kernel version >= v47 is additional info:
-
sudo gainroot
+
*'charge_full' value in µAh - last remembered value of charge when battery became full
-
echo 250000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
+
*'charge_full_design' value in µAh - design charge value, when battery considered full
-
echo 599000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
+
*'charge_now' value in µAh - actual charge value
-
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
+
*'time_to_empty_avg' averaged value - seconds left for battery to be considered empty (i.e. while battery powers a load)
-
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
+
*'time_to_empty_now' seconds left for battery to be considered empty (i.e. while battery powers a load)
-
The last line shows which values were actually set.
+
*'time_to_full_now' seconds left for battery to be considered full (i.e. while battery is charging)
-
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 ===
+
To remove this kernel module use:
-
WARNING: Permanent overclocking is very dangerous!
+
-
Install kernel-power-settings and follow the above instructions.
+
rmmod bq27x00_battery
-
== Configuring the kernel settings (of the experimental version from extras-devel) ==
+
or reboot.
-
These instructions refer to kernel-power-flasher >=v25 and kernel-power-settings >=0.5.
+
With kernel-power-settings >=0.6 the module can be loaded on boot. Just execute this once:
 +
<pre>root
 +
echo bq27x00_battery >> /etc/modules</pre>
-
The instructions are not yet available but read [http://talk.maemo.org/showpost.php?p=638620&postcount=3392 this for the features]
+
With kernel version >= v47 the bq module is automatically loaded on boot. To disable, blacklist bq27x00_battery module:
-
and [http://talk.maemo.org/showpost.php?p=641064&postcount=3412 this mini-tutorial] in the meantime.
+
<pre>root
 +
echo bq27x00_battery >> /etc/modprobe.d/blacklist</pre>
-
== Battery ==
+
===Mobile Hotspot===
-
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.
+
all necessary modules are included. read [http://mobilehotspot.garage.maemo.org/ this] for more details.
-
*'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:
+
===JoikuSpot===
 +
seems to work.  read [http://talk.maemo.org/showpost.php?p=653966&postcount=3592 this post].
-
rmmod bq27x00_battery
+
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.
-
or reboot.
+
===CIFS Support===
 +
You can now mount a network drive using Microsoft's CIFS protocol. To do so you need to do the following:
-
With kernel-power-settings >=0.6 the module can be loaded on boot.
+
# 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.
-
Just execute this once:
+
-
sudo gainroot
+
-
echo bq27x00_battery >> /etc/modules
+
-
== JoikuSpot ==
+
# 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.
-
seems to work.  read [http://talk.maemo.org/showpost.php?p=653966&postcount=3592 this post].
+
-
= Remarks =
+
# Mount the folder on your device by typing the following into xterm under root:
 +
<pre>mount -t cifs //netbiosname/sharename /media/sharename -o user=winusername,pass=winpassword,ip=destip,direct</pre>
-
# 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.
+
===kexec===
-
# if you enable 125MHz also set  "echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load" [http://talk.maemo.org/showpost.php?p=602687&postcount=185 hint]
+
 
-
# [http://talk.maemo.org/showpost.php?p=597703&postcount=141 the 125MHz issue]
+
All necessary kexec patches are included. read [http://wiki.meego.com/ARM/N900/Install/kexec] and [http://lists.meego.com/pipermail/meego-dev/2010-May/002277.html this post]
 +
for MeeGo support.
 +
 
 +
===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
 +
<pre># 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</pre>
 +
 
 +
====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.
 +
Alternatively,
 +
<pre>root
 +
echo 1 > /etc/kernel-power/force_fsck</pre>
 +
should check it only during next boot.
 +
<pre>root
 +
echo 0 > /etc/kernel-power/force_fsck</pre>
 +
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 <code>/etc/kernel-power/pre-mount.log</code>
 +
 
 +
===IPv6===
 +
 
 +
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.
 +
 
 +
===PPTP===
 +
[http://talk.maemo.org/showthread.php?t=36172 tutorial]
 +
 
 +
===Kismet===
 +
[http://david.gnedt.eu/blog/2010/05/11/kismet-fully-functional-monitor-mode-for-the-n900/ tutorial] and
 +
[http://talk.maemo.org/showthread.php?t=52393 TMO thread]
 +
 
 +
===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]].
 +
 
 +
==Notes==
 +
 
 +
# 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  "<code>echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load</code>" [http://talk.maemo.org/showpost.php?p=602687&postcount=185 hint]
 +
# [http://talk.maemo.org/showpost.php?p=597703&postcount=141 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.
# 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.
-
# 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 [http://talk.maemo.org/showpost.php?p=603938&postcount=196 workaround]. There was a bug in one of the early LV kernels but it should be fixed in more recent versions.
+
# The kernel supports 125 MHz but this frequency is [http://talk.maemo.org/showpost.php?p=617488&postcount=3095 disabled by default] in avoid_frequencies. In version <25, it is enabled by specifying "124999", in later versions it is disabled in ''<code>/sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies</code>'' and can be enabled with: <pre>echo > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies</pre>similarily, individual frequencies can be disabled in >=v25:<pre>echo 125000 250000 750000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies</pre>
-
# 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.
+
 
-
# 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.
+
-
# The kernel supports 125MHz but this frequency is [http://talk.maemo.org/showpost.php?p=617488&postcount=3095 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
+
-
echo > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies
+
-
similarily, individual frequencies can be disabled in >=v25
+
-
echo 125000 250000 750000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies
+
[[Category:Power users]]
[[Category:Power users]]
[[Category:N900]]
[[Category:N900]]

Latest revision as of 01:38, 3 July 2016

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.

talk.maemo.org: Discussion of the enhanced kernel Discussion of the enhanced kernel beginning with version 47


Changes between versions are announced on the garage page.

Contents

[edit] Installing kernel-power

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

Note: The power kernel may not be compatible with the currently-installed fcam-drivers package. Should you lose camera functionality, you can update them by running as root:
apt-get install fcam-drivers

Note: This probably won't work and you'll probably need to install fcam-drivers-1.0.7-2 from extras-devel: http://repository.maemo.org/extras-devel/pool/fremantle/free/f/fcam-drivers/fcam-drivers_1.0.7-2_armel.deb install with dpkg -i command

[edit] 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.

  1. Install the package kernel-power-settings (section system in Application manager). It will automatically also install kernel-power-flasher.
  2. Shutdown the device, and boot it up again.
  3. The kernel is now installed.

[edit] Installing the Unstable Kernels

This kernel version contains additional experimental features and patches.

Just enable the Extras-testing or Extras-devel catalogue and install according to these instructions.

Please follow the QA checklist and vote for the package to allow promotion to Extras.

[edit] Verifying Proper Installation

First verify, that the kernel is actually running:
uname -r

should return "2.6.28.10power<version>". If it does not, you should reboot or try to install the kernel again.

[edit] 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 kernel-maemo and kernel-modules-maemo. 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

[edit] 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.

[edit] Installing the Nokia Kernel with X Terminal

The standard process for replacing the kernel is as follows:

  1. Ensure that you have a working Internet connection.
  2. Install the package rootsh. (available in the System section of the Application Manager)
  3. Close the Application Manager.
  4. Gain root permissions
    sudo gainroot
  5. Reinstall the stock Nokia kernel
    apt-get install --reinstall -y kernel kernel-flasher
  6. 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
  7. After uninstallation, the command
    ls -l /lib/modules/current
    should show:
    ... /lib/modules/current -> 2.6.28-omap1
  8. Shutdown the device (without any USB cable connected) and boot again.
  9. The stock kernel should now be installed.

[edit] 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!

[edit] 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.

  1. Make sure your battery is properly charged (if it fails, charge your battery)
  2. 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.

[edit] 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):

  1. 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.
  2. 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

[edit] 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

[edit] 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.

[edit] Features

[edit] Configuring the kernel speed/voltage settings

The instructions on the Overclocking page require the kernel-power-flasher >=v27 and kernel-power-settings >=0.8.

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.

[edit] Battery

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:

rmmod bq27x00_battery

or reboot.

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

[edit] Mobile Hotspot

all necessary modules are included. read this for more details.

[edit] JoikuSpot

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.

[edit] CIFS Support

You can now mount a network drive using Microsoft's CIFS protocol. To do so you need to do the following:

  1. 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.
  1. 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.
  1. 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

[edit] kexec

All necessary kexec patches are included. read [1] and this post for MeeGo support.

[edit] 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

[edit] Filesystem Checking and Repair, and pre-mount Scripts

See above for enabling this feature. The following operations are performed before mounting /home:

  1. 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.
  2. if FSCK_HOME is enabled the /home partition (first ext3 on eMMC) will be fscked on boot.

Alternatively,

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 /etc/kernel-power/pre-mount.log

[edit] IPv6

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.

[edit] PPTP

tutorial

[edit] Kismet

tutorial and TMO thread

[edit] 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.

[edit] Notes

  1. 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.
  2. if you enable 125 MHz also set "echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load" hint
  3. the 125 MHz issue
  4. 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.
  5. 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_frequencies and can be enabled with:
    echo > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies
    similarily, individual frequencies can be disabled in >=v25:
    echo 125000 250000 750000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies