<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=188.221.97.173</id>
	<title>Maemo Wiki Mirror - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=188.221.97.173"/>
	<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php/Special:Contributions/188.221.97.173"/>
	<updated>2026-04-22T10:39:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Overclocking&amp;diff=31205</id>
		<title>Overclocking</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Overclocking&amp;diff=31205"/>
		<updated>2010-04-13T01:53:38Z</updated>

		<summary type="html">&lt;p&gt;188.221.97.173: /* Analyzing time in state, including idle mode stats (by ArbitRabbit) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; &#039;&#039;WORK IN PROGRESS, HELP IF YOU WANT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Overclocking is discussed in [http://talk.maemo.org/showthread.php?t=39753 this thread].&lt;br /&gt;
Benchmark results can be found [http://talk.maemo.org/showthread.php?p=605189 here].&lt;br /&gt;
If you&#039;re more interested in power saving read [http://talk.maemo.org/showthread.php?t=49654 this].&lt;br /&gt;
&lt;br /&gt;
=Warnings=&lt;br /&gt;
&lt;br /&gt;
- Overclocking WILL VOID YOUR WARRANTY&amp;lt;br&amp;gt;&lt;br /&gt;
- The lifetime of your device will get reduced&amp;lt;br&amp;gt;&lt;br /&gt;
- You could lose the data in your device (file system corruption)&amp;lt;br&amp;gt;&lt;br /&gt;
- Every device is an individual, what is stable for others might not be for you&amp;lt;br&amp;gt;&lt;br /&gt;
- If you encounter ANY unusual problems, lower your clock frequency&amp;lt;br&amp;gt;&lt;br /&gt;
- You do it at your own responsibility. No whining afterwards. If you&#039;re unsure, don&#039;t do it.&amp;lt;br&amp;gt;&lt;br /&gt;
- [http://depot.javispedro.com/nit/thewarningtm.jpeg Nokia&#039;s overclocking warning]: 500MHz is the normal frequency. Everything above is not good for your device, even with the stock kernel.&amp;lt;br&amp;gt;&lt;br /&gt;
- Igor Stoppa&#039;s [http://talk.maemo.org/showpost.php?p=596149&amp;amp;postcount=904 warning] and [http://talk.maemo.org/showpost.php?p=603833&amp;amp;postcount=66 comment]&lt;br /&gt;
- [http://talk.maemo.org/showpost.php?p=596274&amp;amp;postcount=937 chip vendors specs]&lt;br /&gt;
&lt;br /&gt;
=Available kernels=&lt;br /&gt;
&lt;br /&gt;
Overclocking requires installation of a custom kernel.&lt;br /&gt;
There are two types of kernels:&lt;br /&gt;
# modified PR1.1 kernels by Lehto and others. The only difference to the stock Nokia kernel is that the change the available hardcoded frequencies.&lt;br /&gt;
# enhanced kernels by titan. They are compatible with PR1.2 (!) , contain lots of additional features (IPv6, NAT etc) and bugfixes. In addition they include a large set of possible frequencies (125MHz-1.2GHz) which you manually set an try out without flashing a new kernel. The defaults are set to the standard 250-600MHz range. The kernel can be installed via HAM from the extras-devel catalouge.&lt;br /&gt;
&lt;br /&gt;
== Installation of Lehto&#039;s PR1.1 kernels ==&lt;br /&gt;
&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=594200&amp;amp;postcount=309 Lehto&#039;s Kernels]&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=595582&amp;amp;postcount=774 talk.maemo.org: Jakiman&#039;s Overclock Guide / Summary]&lt;br /&gt;
&lt;br /&gt;
== Installation of titan&#039;s enhanced kernels ==&lt;br /&gt;
This kernel makes it possible dynamically change the maximum frequency up to 1.2GHz (supported frequencies are 250,500,550,600,700,750,810,850,900,950,1000,1100,1200MHz).&lt;br /&gt;
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.&lt;br /&gt;
You can manually increase the limit until your device fries using, e.g. for 600MHz&lt;br /&gt;
&lt;br /&gt;
[http://talk.maemo.org/showthread.php?t=43420 talk.maemo.org: Discussion of the enhanded kernel]&lt;br /&gt;
&lt;br /&gt;
Note: all commands on this page must be run as root in X Terminal (install rootsh package and enter &amp;quot;sudo gainroot&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Installation of stable [http://talk.maemo.org/showpost.php?p=597569&amp;amp;postcount=1259 kernel (version maemo19)] from extras-testing ===&lt;br /&gt;
[http://maemo.org/packages/package_instance/view/fremantle_extras-testing_free_armel/kernel-flasher-maemo/2.6.28-maemo19/ the package]&lt;br /&gt;
This version maemo19 is good for temporarily testing higher frequencies but a phone call resets the limits. It still includes the invalid 800Mhz frequency.&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=600739&amp;amp;postcount=1722 phone call reset workaround for the older maemo19 kernel]&lt;br /&gt;
&lt;br /&gt;
It requires firmware PR1.1 or newer.&lt;br /&gt;
# Install the package kernel-flasher-maemo (section system in HAM)&lt;br /&gt;
# shutdown and cold boot. There&#039;s no need for reflashing etc.&lt;br /&gt;
&lt;br /&gt;
=== Installation of the kernel (maemo21) from extras-devel ===&lt;br /&gt;
Installation is the same as with the extras-testing kernel.&lt;br /&gt;
This version fixes the phone call reset problem and includes 125MHz (setting 124999),&lt;br /&gt;
but it does still include the invalid 800MHz.&lt;br /&gt;
The files in the [http://talk.maemo.org/showpost.php?p=602586&amp;amp;postcount=1890 latest version of the community kernel] &lt;br /&gt;
fix the 800Mhz issue.&lt;br /&gt;
&lt;br /&gt;
=== Installation of the latest experimental kernels ===&lt;br /&gt;
&lt;br /&gt;
Create and go to an empty directory first. Make sure wget is installed. Run everything as root.&lt;br /&gt;
&lt;br /&gt;
Download of the normal voltage kernel:&lt;br /&gt;
 wget http://maemory.com/N900/overclock/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=603490&amp;amp;postcount=2004 The lower voltage versions of the same kernel] &lt;br /&gt;
may conserve power and reduce the damage of overclocking but they may be less stable.&lt;br /&gt;
&lt;br /&gt;
Download of the lower voltage (LV) kernel:&lt;br /&gt;
 wget http://maemory.com/N900/overclock/lv/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/lv/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/lv/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Comparison of LV kernel voltages with stock kernel:&lt;br /&gt;
#&amp;lt;=500 is the same as stock&lt;br /&gt;
#550 is 500 stock (normal voltage)&lt;br /&gt;
#600/700/750/810/850/900/950 is 550 stock (overvoltage)&lt;br /&gt;
#&amp;gt;=1000 is 600 stock (overvoltage)&lt;br /&gt;
&lt;br /&gt;
Download of the ultra low voltage (ULV) kernel (less stable?):&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ulv/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/ulv/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ulv/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Comparison of ULV kernel voltages with stock kernel:&lt;br /&gt;
#&amp;lt;=250 is &amp;lt;idle stock (ultra low voltage)&lt;br /&gt;
#500 is ca. idle stock (lower voltage)&lt;br /&gt;
#550/600 is 250 stock (low voltage)&lt;br /&gt;
#700/750/800 is &amp;lt;500 stock (low voltage)&lt;br /&gt;
#850 is 500 stock (normal voltage)&lt;br /&gt;
#900/950 is 550 stock (overvoltage)&lt;br /&gt;
#&amp;gt;=1000 is 600 stock (overvoltage)&lt;br /&gt;
&lt;br /&gt;
Download of the extremely low voltage (XLV) kernel (less stable?):&lt;br /&gt;
 wget http://maemory.com/N900/overclock/xlv/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/xlv/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/xlv/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Comparison of XLV kernel voltages with stock kernel:&lt;br /&gt;
#&amp;lt;=250 is &amp;lt;idle stock (extremely low voltage)&lt;br /&gt;
#500 is idle stock (lower voltage)&lt;br /&gt;
#550 is ca. idle stock (low voltage)&lt;br /&gt;
#600 is 250 stock (low voltage)&lt;br /&gt;
#700/750/800 is &amp;lt;500 stock (low voltage)&lt;br /&gt;
#850 is 500 stock (normal voltage)&lt;br /&gt;
#900/950 is 550 stock (overvoltage)&lt;br /&gt;
#&amp;gt;=1000 is 600 stock (overvoltage)&lt;br /&gt;
&lt;br /&gt;
Download of the &amp;quot;ideal&amp;quot; kernel (the same as XLV but with minimum 500Mhz and [500,850] defaults):&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ideal/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/ideal/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ideal/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Install with (shut the device down automatically, close all apps and save the data first!):&lt;br /&gt;
 dpkg -i kernel-m*&lt;br /&gt;
 dpkg -i kernel-f*&lt;br /&gt;
 halt&lt;br /&gt;
and boot again.&lt;br /&gt;
&lt;br /&gt;
=== Deinstallation ===&lt;br /&gt;
 sudo gainroot&lt;br /&gt;
 apt-get install --reinstall kernel kernel-flasher&lt;br /&gt;
 apt-get remove kernel-maemo kernel-modules-maemo&lt;br /&gt;
&lt;br /&gt;
=== Temporarly change of the frequency limits ===&lt;br /&gt;
 sudo gainroot&lt;br /&gt;
 echo 250000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 echo 599000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
The last line shows which values were actually set.&lt;br /&gt;
To set 125MHz use 124999, for 600MHz 599999, for everthing else x000 with x=MHz.&lt;br /&gt;
This setting takes effect immediately and is cleared with the next reboot.&lt;br /&gt;
&lt;br /&gt;
=== Permanently change of the frequency limits ===&lt;br /&gt;
WARNING: Permanent overclocking is very dangerous!&lt;br /&gt;
To permanently fix a limit you found to be stable edit the scaling_max_freq setting in /etc/pmconfig&lt;br /&gt;
 vi /etc/pmconfig&lt;br /&gt;
You can also use Leafpad but open it again after saving to make sure everything is ok. There have been clues that sometimes Leafpad cuts off last character when the file is saved.&lt;br /&gt;
 leafpad /etc/pmconfig&lt;br /&gt;
&lt;br /&gt;
The defaults are:&lt;br /&gt;
 # Power management configuration file&lt;br /&gt;
 enable_off_mode 1&lt;br /&gt;
 sleep_while_idle 1&lt;br /&gt;
 sr_vdd1_autocomp 0&lt;br /&gt;
 sr_vdd2_autocomp 0&lt;br /&gt;
 clocks_off_while_idle 1&lt;br /&gt;
 voltage_off_while_idle 1&lt;br /&gt;
 scaling_governor ondemand&lt;br /&gt;
 scaling_max_freq 600000&lt;br /&gt;
 scaling_min_freq 125000&lt;br /&gt;
 sleep_ind 1&lt;br /&gt;
&lt;br /&gt;
=== Other permament settings ===&lt;br /&gt;
not all settings can be stored in pmconfig.&lt;br /&gt;
Create the following file /etc/event.d/overclock for them&lt;br /&gt;
 start on started hildon-desktop&lt;br /&gt;
 stop on starting shutdown&lt;br /&gt;
 service&lt;br /&gt;
 console none&lt;br /&gt;
 script&lt;br /&gt;
   echo 1 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load&lt;br /&gt;
   echo 75 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold&lt;br /&gt;
   echo 150000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate&lt;br /&gt;
   modprobe bq27x00_battery&lt;br /&gt;
 end script&lt;br /&gt;
&lt;br /&gt;
=== Battery ===&lt;br /&gt;
In kernels version &amp;gt;=maemo20 you can read out the current battery info:&lt;br /&gt;
 modprobe bq27x00_battery&lt;br /&gt;
 cat /sys/class/power_supply/bq27200-0/current_now&lt;br /&gt;
&lt;br /&gt;
=== Holding a kernel version ===&lt;br /&gt;
It your manually installed kernel should be not upgraded to the one in extras* try [http://talk.maemo.org/showpost.php?p=603915&amp;amp;postcount=2063 this]:&lt;br /&gt;
 echo kernel-flasher-maemo hold | dpkg --set-selections&lt;br /&gt;
 echo kernel-maemo hold | dpkg --set-selections&lt;br /&gt;
 echo kernel-modules-maemo hold | dpkg --set-selections&lt;br /&gt;
to unlock the version:&lt;br /&gt;
 echo kernel-flasher-maemo install | dpkg --set-selections&lt;br /&gt;
 echo kernel-maemo install | dpkg --set-selections&lt;br /&gt;
 echo kernel-modules-maemo install | dpkg --set-selections&lt;br /&gt;
&lt;br /&gt;
=== Remarks ===&lt;br /&gt;
# The screen calibration in settings crashes immediately. It is a known bug in the calibration app, not in the kernel. It&#039;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.&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=597703&amp;amp;postcount=141 the 125MHz issue]&lt;br /&gt;
# 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.&lt;br /&gt;
# If you for some reason get errors like this during removal or installation  &amp;quot;rm: cannot remove &#039;/lib/modules/2.6.28.10maemo-lv-omap1/modules.*&#039;: No such file or directory&amp;quot;.try this [http://talk.maemo.org/showpost.php?p=603938&amp;amp;postcount=196 workaround]. There was a bug in one of the early LV kernels but it should be fixed in more recent versions.&lt;br /&gt;
# This kernel will not conflict with the future PR1.2 upgrade. The upgrade will, however, overwrite this kernel and you&#039;ll have to install it again.&lt;br /&gt;
&lt;br /&gt;
=Additional information and hints=&lt;br /&gt;
&lt;br /&gt;
# the frequencies available in the Nokia kernel are: 250, 500, 550 and 600MHz.&lt;br /&gt;
# Nokia [http://talk.maemo.org/showpost.php?p=601691&amp;amp;postcount=1823 locks the device to 600MHz] during phone calls. This may be a bug. It also [http://talk.maemo.org/showpost.php?p=600721&amp;amp;postcount=1720 affects] Lehto&#039;s kernels.&lt;br /&gt;
# the telephone app is closed-source and broken. After a phone call it sets the maximum to 600Mhz and the minimum to 250MHz (or  125MHz if available) irrespective of what you have set before.&lt;br /&gt;
# when connected via USB the device locks the minimum frequency to 500Mhz.&lt;br /&gt;
# By default the device is configured to use 125MHz as the lowest frequency but it not enabled in the kernel [https://bugs.maemo.org/show_bug.cgi?id=7116 pmconfig bug]&lt;br /&gt;
# if enable 125MHz also set  &amp;quot;echo 1 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load&amp;quot; [http://talk.maemo.org/showpost.php?p=602687&amp;amp;postcount=185 hint]&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=599870&amp;amp;postcount=170 improving responsiveness]&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=599618&amp;amp;postcount=168 safe pmconfig configuration]&lt;br /&gt;
# the warning &amp;quot;WARNING: at arch/arm/mach-omap2/clock34xx.c:443 omap3_noncore_dpll_set_rate+0x28c/0x2dc()&amp;quot; in the kernel logs (dmesg) only happens if the invalid 800MHz frequency was selected. ignore it.&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=603585&amp;amp;postcount=189 saving more battery power when idle]&lt;br /&gt;
# EvilJazz had photoshopped a [http://talk.maemo.org/showpost.php?p=605523&amp;amp;postcount=90 picture of a device being overclocked 1.7GHz]. It&#039;s a JOKE!&lt;br /&gt;
# reading one of the temperature sensors &amp;quot;cat /sys/devices/platform/omap34xx_temp/temp1_input&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Useful stuff=&lt;br /&gt;
&lt;br /&gt;
==Show current CPU frequency==&lt;br /&gt;
&lt;br /&gt;
 awk &#039;{print $1/1000&amp;quot; MHz&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Set maximum CPU frequency==&lt;br /&gt;
&lt;br /&gt;
From root terminal:&lt;br /&gt;
&lt;br /&gt;
 rootsh echo 600000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq | echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replace 600000 with desired maximum frequency. Pay attention to the two exceptions in titan&#039;s kernels (124999 and 599000). The list of available frequencies on your device/kernel can be obtained with command:&lt;br /&gt;
&lt;br /&gt;
 awk &#039;{print $1/1000&amp;quot; MHz&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
&lt;br /&gt;
==Analyzing time_in_state (by rooted) - rev3==&lt;br /&gt;
&lt;br /&gt;
This script prints percentage of frequencies (states) used. It displays all available frequencies and works with all kernels.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 awk &#039;{print &amp;quot;\nCurrent frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
 tis1=`awk &#039;{SUM += $2} END {print SUM}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state`&lt;br /&gt;
 idlefreq=`cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | sed &#039;s/.* 0/a/&#039; | sort | head -n 1 | awk &#039;{print $1}&#039;`&lt;br /&gt;
 tis2=`cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | grep -v $idlefreq | awk &#039;{SUM += $2} END {print SUM}&#039;`&lt;br /&gt;
 echo -e &amp;quot;FREQUENCY\tUSED\t\tWHEN NOT IDLE&amp;quot;&lt;br /&gt;
 awk &#039;{printf (($1/1000)&amp;quot; MHz \t&amp;quot;)}; {if ($2 == 0) printf &amp;quot;&amp;quot;; else printf (&amp;quot;%.1f&amp;quot;,($2*100)/&amp;quot;&#039;&amp;quot;$tis1&amp;quot;&#039;&amp;quot;)}; {if ($2 == 0) printf &amp;quot;&amp;quot;; else printf (&amp;quot;&#039;&amp;quot; %%\t\t&amp;quot;&#039;&amp;quot;)}; {if ($2/&amp;quot;&#039;&amp;quot;$tis2&amp;quot;&#039;&amp;quot; &amp;gt; 1) print &amp;quot;&amp;quot;; else if ($2 == 0) printf &amp;quot;\n&amp;quot;; else printf (&amp;quot;%.1f %\n&amp;quot;,($2*100)/&amp;quot;&#039;&amp;quot;$tis2&amp;quot;&#039;&amp;quot;)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Output example:&lt;br /&gt;
&lt;br /&gt;
 Current frequency: 250 MHz&lt;br /&gt;
 &lt;br /&gt;
 FREQUENCY       USED            WHEN NOT IDLE&lt;br /&gt;
 1200 MHz&lt;br /&gt;
 1100 MHz&lt;br /&gt;
 1000 MHz&lt;br /&gt;
 950 MHz&lt;br /&gt;
 900 MHz&lt;br /&gt;
 850 MHz&lt;br /&gt;
 810 MHz         1.4 %           52.8 %&lt;br /&gt;
 750 MHz         0.0 %           0.9 %&lt;br /&gt;
 700 MHz         0.0 %           1.3 %&lt;br /&gt;
 600 MHz         0.0 %           1.1 %&lt;br /&gt;
 550 MHz         0.1 %           5.6 %&lt;br /&gt;
 500 MHz         1.0 %           38.3 %&lt;br /&gt;
 250 MHz         97.4 %&lt;br /&gt;
 124.999 MHz&lt;br /&gt;
&lt;br /&gt;
==Analyzing time in state, including idle mode stats (by ArbitRabbit)==&lt;br /&gt;
The following script will show the current frequency and statistics for each state, including time spent in idle mode when the CPU is actually sleeping. &lt;br /&gt;
This script works with the special frequency handling in Titan&#039;s kernel.&lt;br /&gt;
&lt;br /&gt;
To run this script as user and be able to set the frequencies you will need to install &amp;quot;[[Root_access|rootsh]]&amp;quot; via apt-get.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;scheduler_stats.sh&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 awk &#039;{print &amp;quot;\nCurrent frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
 awk &#039;{print &amp;quot;Minimum frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 awk &#039;{print &amp;quot;Maximum frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
 &lt;br /&gt;
 tis1=`awk &#039;{SUM += $2} END {printf(&amp;quot;%.0f&amp;quot;,SUM/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state`&lt;br /&gt;
 &lt;br /&gt;
 idle0=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state0/time`&lt;br /&gt;
 &lt;br /&gt;
 idle1=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state1/time`&lt;br /&gt;
 &lt;br /&gt;
 idle2=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state2/time`&lt;br /&gt;
 &lt;br /&gt;
 idle3=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state3/time`&lt;br /&gt;
 &lt;br /&gt;
 totaltime=$(($idle0+$idle1+$idle2+$idle3+$tis1))&lt;br /&gt;
 echo -e &amp;quot;FREQUENCY\tUSED&amp;quot;&lt;br /&gt;
 SUM=0&lt;br /&gt;
 awk &#039;&lt;br /&gt;
        {&lt;br /&gt;
                printf (($1/1000)&amp;quot; MHz \t&amp;quot;);&lt;br /&gt;
                if ($2 == 0)&lt;br /&gt;
                {&lt;br /&gt;
                        printf &amp;quot;0 %\n&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
                else {&lt;br /&gt;
                        SUM+=$2;&lt;br /&gt;
                        printf(&amp;quot;%.3f %\n&amp;quot;,($2/10)/&amp;quot;&#039;&amp;quot;$totaltime&amp;quot;&#039;&amp;quot;);&lt;br /&gt;
                        }&lt;br /&gt;
        }&lt;br /&gt;
        END{&lt;br /&gt;
        printf (&amp;quot;Time spent in idle mode is %2.2f %\n&amp;quot;,(1-((SUM/1000)/&amp;quot;&#039;&amp;quot;$totaltime&amp;quot;&#039;&amp;quot;))*100);&lt;br /&gt;
        }&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sample Output&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Current frequency: 500 MHz&lt;br /&gt;
 &lt;br /&gt;
 Minimum frequency: 500 MHz&lt;br /&gt;
 &lt;br /&gt;
 Maximum frequency: 810 MHz&lt;br /&gt;
 &lt;br /&gt;
 FREQUENCY       USED&lt;br /&gt;
 1200 MHz        0 %&lt;br /&gt;
 1100 MHz        0 %&lt;br /&gt;
 1000 MHz        0 %&lt;br /&gt;
 950 MHz         0 %&lt;br /&gt;
 900 MHz         0 %&lt;br /&gt;
 850 MHz         0 %&lt;br /&gt;
 810 MHz         0.000 %&lt;br /&gt;
 750 MHz         0.000 %&lt;br /&gt;
 700 MHz         0.000 %&lt;br /&gt;
 600 MHz         0.000 %&lt;br /&gt;
 550 MHz         0.000 %&lt;br /&gt;
 500 MHz         0.010 %&lt;br /&gt;
 Time spent in idle mode is 99.99 %&lt;br /&gt;
&lt;br /&gt;
Known Bugs: Requires the Phone to be booted for an hour or so before it results in decent stats.&lt;br /&gt;
&lt;br /&gt;
==Combined helper script (by evilJazz)==&lt;br /&gt;
&lt;br /&gt;
The following script will show the current frequency and statistics. It also accepts two optional parameters that will set the max and/or min frequencies (in MHz unit). Calling the script without these parameters will not set the new clocking. Instead it will just show the current frequencies and statistics.&lt;br /&gt;
&lt;br /&gt;
This script works with the special frequency handling in Titan&#039;s kernel.&lt;br /&gt;
&lt;br /&gt;
To run this script as user and be able to set the frequencies you will need to install &amp;quot;[[Root_access|rootsh]]&amp;quot; via apt-get.&lt;br /&gt;
&lt;br /&gt;
 overclock.sh [max freq] [min freq]&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 max=${1}000&lt;br /&gt;
 min=${2}000&lt;br /&gt;
 &lt;br /&gt;
 # Handle and rewrite special cases in Titan&#039;s kernel...&lt;br /&gt;
 [ &amp;quot;$max&amp;quot; == &amp;quot;600000&amp;quot; ] &amp;amp;&amp;amp; max=599000&lt;br /&gt;
 [ &amp;quot;$min&amp;quot; == &amp;quot;125000&amp;quot; ] &amp;amp;&amp;amp; min=124999&lt;br /&gt;
 &lt;br /&gt;
 if [ $(id -u) -ne 0 ]; then&lt;br /&gt;
   [ &amp;quot;$max&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;echo $max &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&amp;quot; | sudo gainroot&lt;br /&gt;
   [ &amp;quot;$min&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;echo $min &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&amp;quot; | sudo gainroot&lt;br /&gt;
 else&lt;br /&gt;
   [ &amp;quot;$max&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo $max &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
   [ &amp;quot;$min&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo $min &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 awk &#039;{printf(&amp;quot;\nCurrent frequency: %7s MHz\n&amp;quot;, $1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
 awk &#039;{printf(&amp;quot;Minimal frequency: %7s MHz\n&amp;quot;, $1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 awk &#039;{printf(&amp;quot;Maximal frequency: %7s MHz\n\n&amp;quot;, $1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
 &lt;br /&gt;
 sum=$(awk &#039;{SUM += $2} END {print SUM}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state)&lt;br /&gt;
 awk &#039;{printf(&amp;quot;%7s MHz: %5.1f % (%8d)\n&amp;quot;, ($1/1000), ($2 * 100)/&amp;quot;&#039;&amp;quot;$sum&amp;quot;&#039;&amp;quot;, $2)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
 echo&lt;br /&gt;
&lt;br /&gt;
Output example:&lt;br /&gt;
&lt;br /&gt;
 ~ $ ./overclock.sh 600 250&lt;br /&gt;
&lt;br /&gt;
 Current frequency:     250 MHz&lt;br /&gt;
 Minimal frequency:     250 MHz&lt;br /&gt;
 Maximal frequency:     599 MHz&lt;br /&gt;
 &lt;br /&gt;
    1200 MHz:   0.0 % (       0)&lt;br /&gt;
    1100 MHz:   0.0 % (       0)&lt;br /&gt;
    1000 MHz:   0.0 % (       0)&lt;br /&gt;
     950 MHz:   0.0 % (       0)&lt;br /&gt;
     900 MHz:   0.2 % (     271)&lt;br /&gt;
     850 MHz:   0.0 % (       0)&lt;br /&gt;
     810 MHz:   0.0 % (       0)&lt;br /&gt;
     750 MHz:   0.0 % (       0)&lt;br /&gt;
     700 MHz:   0.0 % (       0)&lt;br /&gt;
     600 MHz:   9.0 % (   13663)&lt;br /&gt;
     550 MHz:   0.5 % (     701)&lt;br /&gt;
     500 MHz:  15.4 % (   23379)&lt;br /&gt;
     250 MHz:  75.0 % (  114021)&lt;br /&gt;
 124.999 MHz:   0.0 % (       0)&lt;br /&gt;
&lt;br /&gt;
=Changing the Kernel=&lt;br /&gt;
&lt;br /&gt;
==Installing a modified Kernel==&lt;br /&gt;
&lt;br /&gt;
===Flashing using PC===&lt;br /&gt;
&lt;br /&gt;
1. Power off the N900 completely.&lt;br /&gt;
&lt;br /&gt;
2. Hold &amp;quot;u&amp;quot; on the N900&#039;s keyboard, while holding, connect it to the PC via USB cable.&lt;br /&gt;
&lt;br /&gt;
3. You will see usb icon on top right of white Nokia screen.&lt;br /&gt;
&lt;br /&gt;
4. Now you can let go of &amp;quot;u&amp;quot; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
5. Now use flasher utility with the kernel file located in the same directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 flasher-3.5 -k image_file_name -f -R&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. It should take about 1-2 seconds then it&#039;ll say Done.&lt;br /&gt;
&lt;br /&gt;
7. Now your N900 will show white Nokia screen. (reboot)&lt;br /&gt;
&lt;br /&gt;
8. At this time, you can pull out the USB cable.&lt;br /&gt;
&lt;br /&gt;
9. N900 should finish booting up if all goes well.&lt;br /&gt;
&lt;br /&gt;
10. Test out your phone as usual. (Apps, browser, camera, phone etc etc)&lt;br /&gt;
&lt;br /&gt;
11. If any abnormal events occur frequently (crash, hang, screen corruption etc), turn it off, flash it to a slower kernel and test again.&lt;br /&gt;
note: For Windows7 64bit users, you may need to use WindowsXP mode. ([http://www.youtube.com/watch?v=Bx6dblXl2eo Youtube Tutorial])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Flashing from N900 xterminal===&lt;br /&gt;
&lt;br /&gt;
* do a backup, have a pc nearby and know you are able to flash the n900 with flasher-3.5 - just in case&lt;br /&gt;
&lt;br /&gt;
0. Launch xterminal app then type sudo gainroot (need rootsh installed)&lt;br /&gt;
&lt;br /&gt;
1. type &lt;br /&gt;
 softupd -vv -s --local&lt;br /&gt;
(thats double v)&lt;br /&gt;
&lt;br /&gt;
2. open new terminal&lt;br /&gt;
&lt;br /&gt;
3. type&lt;br /&gt;
 flasher --local -f -k &amp;lt;kernel_zimage_file_with_path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. you see the flashing (takes some time)&lt;br /&gt;
&lt;br /&gt;
5. type &amp;quot;sync&amp;quot; to save changes&lt;br /&gt;
&lt;br /&gt;
6. type &amp;quot;reboot&amp;quot; and enter to restart&lt;br /&gt;
&lt;br /&gt;
7. Test out your phone as usual. (Apps, browser, camera, phone etc etc)&lt;br /&gt;
&lt;br /&gt;
8. If any abnormal events occur frequently (crash, hang, screen corruption etc), turn it off, flash it to a slower kernel and test again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You are fully responsible for any damage caused by overclocking. Not anyone else.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Reverting to the Original Kernel==&lt;br /&gt;
&lt;br /&gt;
If you want to revert to the original kernel, execute:&lt;br /&gt;
&lt;br /&gt;
 apt-get install --reinstall kernel kernel-flasher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Power users]]&lt;/div&gt;</summary>
		<author><name>188.221.97.173</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Overclocking&amp;diff=31206</id>
		<title>Overclocking</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Overclocking&amp;diff=31206"/>
		<updated>2010-04-13T00:43:33Z</updated>

		<summary type="html">&lt;p&gt;188.221.97.173: Added new method to measure Scheduler performance for OC kernels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; &#039;&#039;WORK IN PROGRESS, HELP IF YOU WANT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Overclocking is discussed in [http://talk.maemo.org/showthread.php?t=39753 this thread].&lt;br /&gt;
Benchmark results can be found [http://talk.maemo.org/showthread.php?p=605189 here].&lt;br /&gt;
If you&#039;re more interested in power saving read [http://talk.maemo.org/showthread.php?t=49654 this].&lt;br /&gt;
&lt;br /&gt;
=Warnings=&lt;br /&gt;
&lt;br /&gt;
- Overclocking WILL VOID YOUR WARRANTY&amp;lt;br&amp;gt;&lt;br /&gt;
- The lifetime of your device will get reduced&amp;lt;br&amp;gt;&lt;br /&gt;
- You could lose the data in your device (file system corruption)&amp;lt;br&amp;gt;&lt;br /&gt;
- Every device is an individual, what is stable for others might not be for you&amp;lt;br&amp;gt;&lt;br /&gt;
- If you encounter ANY unusual problems, lower your clock frequency&amp;lt;br&amp;gt;&lt;br /&gt;
- You do it at your own responsibility. No whining afterwards. If you&#039;re unsure, don&#039;t do it.&amp;lt;br&amp;gt;&lt;br /&gt;
- [http://depot.javispedro.com/nit/thewarningtm.jpeg Nokia&#039;s overclocking warning]: 500MHz is the normal frequency. Everything above is not good for your device, even with the stock kernel.&amp;lt;br&amp;gt;&lt;br /&gt;
- Igor Stoppa&#039;s [http://talk.maemo.org/showpost.php?p=596149&amp;amp;postcount=904 warning] and [http://talk.maemo.org/showpost.php?p=603833&amp;amp;postcount=66 comment]&lt;br /&gt;
- [http://talk.maemo.org/showpost.php?p=596274&amp;amp;postcount=937 chip vendors specs]&lt;br /&gt;
&lt;br /&gt;
=Available kernels=&lt;br /&gt;
&lt;br /&gt;
Overclocking requires installation of a custom kernel.&lt;br /&gt;
There are two types of kernels:&lt;br /&gt;
# modified PR1.1 kernels by Lehto and others. The only difference to the stock Nokia kernel is that the change the available hardcoded frequencies.&lt;br /&gt;
# enhanced kernels by titan. They are compatible with PR1.2 (!) , contain lots of additional features (IPv6, NAT etc) and bugfixes. In addition they include a large set of possible frequencies (125MHz-1.2GHz) which you manually set an try out without flashing a new kernel. The defaults are set to the standard 250-600MHz range. The kernel can be installed via HAM from the extras-devel catalouge.&lt;br /&gt;
&lt;br /&gt;
== Installation of Lehto&#039;s PR1.1 kernels ==&lt;br /&gt;
&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=594200&amp;amp;postcount=309 Lehto&#039;s Kernels]&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=595582&amp;amp;postcount=774 talk.maemo.org: Jakiman&#039;s Overclock Guide / Summary]&lt;br /&gt;
&lt;br /&gt;
== Installation of titan&#039;s enhanced kernels ==&lt;br /&gt;
This kernel makes it possible dynamically change the maximum frequency up to 1.2GHz (supported frequencies are 250,500,550,600,700,750,810,850,900,950,1000,1100,1200MHz).&lt;br /&gt;
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.&lt;br /&gt;
You can manually increase the limit until your device fries using, e.g. for 600MHz&lt;br /&gt;
&lt;br /&gt;
[http://talk.maemo.org/showthread.php?t=43420 talk.maemo.org: Discussion of the enhanded kernel]&lt;br /&gt;
&lt;br /&gt;
Note: all commands on this page must be run as root in X Terminal (install rootsh package and enter &amp;quot;sudo gainroot&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Installation of stable [http://talk.maemo.org/showpost.php?p=597569&amp;amp;postcount=1259 kernel (version maemo19)] from extras-testing ===&lt;br /&gt;
[http://maemo.org/packages/package_instance/view/fremantle_extras-testing_free_armel/kernel-flasher-maemo/2.6.28-maemo19/ the package]&lt;br /&gt;
This version maemo19 is good for temporarily testing higher frequencies but a phone call resets the limits. It still includes the invalid 800Mhz frequency.&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=600739&amp;amp;postcount=1722 phone call reset workaround for the older maemo19 kernel]&lt;br /&gt;
&lt;br /&gt;
It requires firmware PR1.1 or newer.&lt;br /&gt;
# Install the package kernel-flasher-maemo (section system in HAM)&lt;br /&gt;
# shutdown and cold boot. There&#039;s no need for reflashing etc.&lt;br /&gt;
&lt;br /&gt;
=== Installation of the kernel (maemo21) from extras-devel ===&lt;br /&gt;
Installation is the same as with the extras-testing kernel.&lt;br /&gt;
This version fixes the phone call reset problem and includes 125MHz (setting 124999),&lt;br /&gt;
but it does still include the invalid 800MHz.&lt;br /&gt;
The files in the [http://talk.maemo.org/showpost.php?p=602586&amp;amp;postcount=1890 latest version of the community kernel] &lt;br /&gt;
fix the 800Mhz issue.&lt;br /&gt;
&lt;br /&gt;
=== Installation of the latest experimental kernels ===&lt;br /&gt;
&lt;br /&gt;
Create and go to an empty directory first. Make sure wget is installed. Run everything as root.&lt;br /&gt;
&lt;br /&gt;
Download of the normal voltage kernel:&lt;br /&gt;
 wget http://maemory.com/N900/overclock/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
[http://talk.maemo.org/showpost.php?p=603490&amp;amp;postcount=2004 The lower voltage versions of the same kernel] &lt;br /&gt;
may conserve power and reduce the damage of overclocking but they may be less stable.&lt;br /&gt;
&lt;br /&gt;
Download of the lower voltage (LV) kernel:&lt;br /&gt;
 wget http://maemory.com/N900/overclock/lv/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/lv/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/lv/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Comparison of LV kernel voltages with stock kernel:&lt;br /&gt;
#&amp;lt;=500 is the same as stock&lt;br /&gt;
#550 is 500 stock (normal voltage)&lt;br /&gt;
#600/700/750/810/850/900/950 is 550 stock (overvoltage)&lt;br /&gt;
#&amp;gt;=1000 is 600 stock (overvoltage)&lt;br /&gt;
&lt;br /&gt;
Download of the ultra low voltage (ULV) kernel (less stable?):&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ulv/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/ulv/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ulv/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Comparison of ULV kernel voltages with stock kernel:&lt;br /&gt;
#&amp;lt;=250 is &amp;lt;idle stock (ultra low voltage)&lt;br /&gt;
#500 is ca. idle stock (lower voltage)&lt;br /&gt;
#550/600 is 250 stock (low voltage)&lt;br /&gt;
#700/750/800 is &amp;lt;500 stock (low voltage)&lt;br /&gt;
#850 is 500 stock (normal voltage)&lt;br /&gt;
#900/950 is 550 stock (overvoltage)&lt;br /&gt;
#&amp;gt;=1000 is 600 stock (overvoltage)&lt;br /&gt;
&lt;br /&gt;
Download of the extremely low voltage (XLV) kernel (less stable?):&lt;br /&gt;
 wget http://maemory.com/N900/overclock/xlv/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/xlv/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/xlv/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Comparison of XLV kernel voltages with stock kernel:&lt;br /&gt;
#&amp;lt;=250 is &amp;lt;idle stock (extremely low voltage)&lt;br /&gt;
#500 is idle stock (lower voltage)&lt;br /&gt;
#550 is ca. idle stock (low voltage)&lt;br /&gt;
#600 is 250 stock (low voltage)&lt;br /&gt;
#700/750/800 is &amp;lt;500 stock (low voltage)&lt;br /&gt;
#850 is 500 stock (normal voltage)&lt;br /&gt;
#900/950 is 550 stock (overvoltage)&lt;br /&gt;
#&amp;gt;=1000 is 600 stock (overvoltage)&lt;br /&gt;
&lt;br /&gt;
Download of the &amp;quot;ideal&amp;quot; kernel (the same as XLV but with minimum 500Mhz and [500,850] defaults):&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ideal/kernel-maemo_2.6.28-maemo21_armel.deb &lt;br /&gt;
 wget http://maemory.com/N900/overclock/ideal/kernel-modules-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
 wget http://maemory.com/N900/overclock/ideal/kernel-flasher-maemo_2.6.28-maemo21_armel.deb&lt;br /&gt;
&lt;br /&gt;
Install with (shut the device down automatically, close all apps and save the data first!):&lt;br /&gt;
 dpkg -i kernel-m*&lt;br /&gt;
 dpkg -i kernel-f*&lt;br /&gt;
 halt&lt;br /&gt;
and boot again.&lt;br /&gt;
&lt;br /&gt;
=== Deinstallation ===&lt;br /&gt;
 sudo gainroot&lt;br /&gt;
 apt-get install --reinstall kernel kernel-flasher&lt;br /&gt;
 apt-get remove kernel-maemo kernel-modules-maemo&lt;br /&gt;
&lt;br /&gt;
=== Temporarly change of the frequency limits ===&lt;br /&gt;
 sudo gainroot&lt;br /&gt;
 echo 250000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 echo 599000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
The last line shows which values were actually set.&lt;br /&gt;
To set 125MHz use 124999, for 600MHz 599999, for everthing else x000 with x=MHz.&lt;br /&gt;
This setting takes effect immediately and is cleared with the next reboot.&lt;br /&gt;
&lt;br /&gt;
=== Permanently change of the frequency limits ===&lt;br /&gt;
WARNING: Permanent overclocking is very dangerous!&lt;br /&gt;
To permanently fix a limit you found to be stable edit the scaling_max_freq setting in /etc/pmconfig&lt;br /&gt;
 vi /etc/pmconfig&lt;br /&gt;
You can also use Leafpad but open it again after saving to make sure everything is ok. There have been clues that sometimes Leafpad cuts off last character when the file is saved.&lt;br /&gt;
 leafpad /etc/pmconfig&lt;br /&gt;
&lt;br /&gt;
The defaults are:&lt;br /&gt;
 # Power management configuration file&lt;br /&gt;
 enable_off_mode 1&lt;br /&gt;
 sleep_while_idle 1&lt;br /&gt;
 sr_vdd1_autocomp 0&lt;br /&gt;
 sr_vdd2_autocomp 0&lt;br /&gt;
 clocks_off_while_idle 1&lt;br /&gt;
 voltage_off_while_idle 1&lt;br /&gt;
 scaling_governor ondemand&lt;br /&gt;
 scaling_max_freq 600000&lt;br /&gt;
 scaling_min_freq 125000&lt;br /&gt;
 sleep_ind 1&lt;br /&gt;
&lt;br /&gt;
=== Other permament settings ===&lt;br /&gt;
not all settings can be stored in pmconfig.&lt;br /&gt;
Create the following file /etc/event.d/overclock for them&lt;br /&gt;
 start on started hildon-desktop&lt;br /&gt;
 stop on starting shutdown&lt;br /&gt;
 service&lt;br /&gt;
 console none&lt;br /&gt;
 script&lt;br /&gt;
   echo 1 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load&lt;br /&gt;
   echo 75 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold&lt;br /&gt;
   echo 150000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate&lt;br /&gt;
   modprobe bq27x00_battery&lt;br /&gt;
 end script&lt;br /&gt;
&lt;br /&gt;
=== Battery ===&lt;br /&gt;
In kernels version &amp;gt;=maemo20 you can read out the current battery info:&lt;br /&gt;
 modprobe bq27x00_battery&lt;br /&gt;
 cat /sys/class/power_supply/bq27200-0/current_now&lt;br /&gt;
&lt;br /&gt;
=== Holding a kernel version ===&lt;br /&gt;
It your manually installed kernel should be not upgraded to the one in extras* try [http://talk.maemo.org/showpost.php?p=603915&amp;amp;postcount=2063 this]:&lt;br /&gt;
 echo kernel-flasher-maemo hold | dpkg --set-selections&lt;br /&gt;
 echo kernel-maemo hold | dpkg --set-selections&lt;br /&gt;
 echo kernel-modules-maemo hold | dpkg --set-selections&lt;br /&gt;
to unlock the version:&lt;br /&gt;
 echo kernel-flasher-maemo install | dpkg --set-selections&lt;br /&gt;
 echo kernel-maemo install | dpkg --set-selections&lt;br /&gt;
 echo kernel-modules-maemo install | dpkg --set-selections&lt;br /&gt;
&lt;br /&gt;
=== Remarks ===&lt;br /&gt;
# The screen calibration in settings crashes immediately. It is a known bug in the calibration app, not in the kernel. It&#039;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.&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=597703&amp;amp;postcount=141 the 125MHz issue]&lt;br /&gt;
# 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.&lt;br /&gt;
# If you for some reason get errors like this during removal or installation  &amp;quot;rm: cannot remove &#039;/lib/modules/2.6.28.10maemo-lv-omap1/modules.*&#039;: No such file or directory&amp;quot;.try this [http://talk.maemo.org/showpost.php?p=603938&amp;amp;postcount=196 workaround]. There was a bug in one of the early LV kernels but it should be fixed in more recent versions.&lt;br /&gt;
# This kernel will not conflict with the future PR1.2 upgrade. The upgrade will, however, overwrite this kernel and you&#039;ll have to install it again.&lt;br /&gt;
&lt;br /&gt;
=Additional information and hints=&lt;br /&gt;
&lt;br /&gt;
# the frequencies available in the Nokia kernel are: 250, 500, 550 and 600MHz.&lt;br /&gt;
# Nokia [http://talk.maemo.org/showpost.php?p=601691&amp;amp;postcount=1823 locks the device to 600MHz] during phone calls. This may be a bug. It also [http://talk.maemo.org/showpost.php?p=600721&amp;amp;postcount=1720 affects] Lehto&#039;s kernels.&lt;br /&gt;
# the telephone app is closed-source and broken. After a phone call it sets the maximum to 600Mhz and the minimum to 250MHz (or  125MHz if available) irrespective of what you have set before.&lt;br /&gt;
# when connected via USB the device locks the minimum frequency to 500Mhz.&lt;br /&gt;
# By default the device is configured to use 125MHz as the lowest frequency but it not enabled in the kernel [https://bugs.maemo.org/show_bug.cgi?id=7116 pmconfig bug]&lt;br /&gt;
# if enable 125MHz also set  &amp;quot;echo 1 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load&amp;quot; [http://talk.maemo.org/showpost.php?p=602687&amp;amp;postcount=185 hint]&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=599870&amp;amp;postcount=170 improving responsiveness]&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=599618&amp;amp;postcount=168 safe pmconfig configuration]&lt;br /&gt;
# the warning &amp;quot;WARNING: at arch/arm/mach-omap2/clock34xx.c:443 omap3_noncore_dpll_set_rate+0x28c/0x2dc()&amp;quot; in the kernel logs (dmesg) only happens if the invalid 800MHz frequency was selected. ignore it.&lt;br /&gt;
# [http://talk.maemo.org/showpost.php?p=603585&amp;amp;postcount=189 saving more battery power when idle]&lt;br /&gt;
# EvilJazz had photoshopped a [http://talk.maemo.org/showpost.php?p=605523&amp;amp;postcount=90 picture of a device being overclocked 1.7GHz]. It&#039;s a JOKE!&lt;br /&gt;
# reading one of the temperature sensors &amp;quot;cat /sys/devices/platform/omap34xx_temp/temp1_input&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Useful stuff=&lt;br /&gt;
&lt;br /&gt;
==Show current CPU frequency==&lt;br /&gt;
&lt;br /&gt;
 awk &#039;{print $1/1000&amp;quot; MHz&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Set maximum CPU frequency==&lt;br /&gt;
&lt;br /&gt;
From root terminal:&lt;br /&gt;
&lt;br /&gt;
 rootsh echo 600000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq | echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replace 600000 with desired maximum frequency. Pay attention to the two exceptions in titan&#039;s kernels (124999 and 599000). The list of available frequencies on your device/kernel can be obtained with command:&lt;br /&gt;
&lt;br /&gt;
 awk &#039;{print $1/1000&amp;quot; MHz&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
&lt;br /&gt;
==Analyzing time_in_state (by rooted) - rev3==&lt;br /&gt;
&lt;br /&gt;
This script prints percentage of frequencies (states) used. It displays all available frequencies and works with all kernels.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 awk &#039;{print &amp;quot;\nCurrent frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
 tis1=`awk &#039;{SUM += $2} END {print SUM}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state`&lt;br /&gt;
 idlefreq=`cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | sed &#039;s/.* 0/a/&#039; | sort | head -n 1 | awk &#039;{print $1}&#039;`&lt;br /&gt;
 tis2=`cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | grep -v $idlefreq | awk &#039;{SUM += $2} END {print SUM}&#039;`&lt;br /&gt;
 echo -e &amp;quot;FREQUENCY\tUSED\t\tWHEN NOT IDLE&amp;quot;&lt;br /&gt;
 awk &#039;{printf (($1/1000)&amp;quot; MHz \t&amp;quot;)}; {if ($2 == 0) printf &amp;quot;&amp;quot;; else printf (&amp;quot;%.1f&amp;quot;,($2*100)/&amp;quot;&#039;&amp;quot;$tis1&amp;quot;&#039;&amp;quot;)}; {if ($2 == 0) printf &amp;quot;&amp;quot;; else printf (&amp;quot;&#039;&amp;quot; %%\t\t&amp;quot;&#039;&amp;quot;)}; {if ($2/&amp;quot;&#039;&amp;quot;$tis2&amp;quot;&#039;&amp;quot; &amp;gt; 1) print &amp;quot;&amp;quot;; else if ($2 == 0) printf &amp;quot;\n&amp;quot;; else printf (&amp;quot;%.1f %\n&amp;quot;,($2*100)/&amp;quot;&#039;&amp;quot;$tis2&amp;quot;&#039;&amp;quot;)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Output example:&lt;br /&gt;
&lt;br /&gt;
 Current frequency: 250 MHz&lt;br /&gt;
 &lt;br /&gt;
 FREQUENCY       USED            WHEN NOT IDLE&lt;br /&gt;
 1200 MHz&lt;br /&gt;
 1100 MHz&lt;br /&gt;
 1000 MHz&lt;br /&gt;
 950 MHz&lt;br /&gt;
 900 MHz&lt;br /&gt;
 850 MHz&lt;br /&gt;
 810 MHz         1.4 %           52.8 %&lt;br /&gt;
 750 MHz         0.0 %           0.9 %&lt;br /&gt;
 700 MHz         0.0 %           1.3 %&lt;br /&gt;
 600 MHz         0.0 %           1.1 %&lt;br /&gt;
 550 MHz         0.1 %           5.6 %&lt;br /&gt;
 500 MHz         1.0 %           38.3 %&lt;br /&gt;
 250 MHz         97.4 %&lt;br /&gt;
 124.999 MHz&lt;br /&gt;
&lt;br /&gt;
==Analyzing time in state, including idle mode stats (by ArbitRabbit)==&lt;br /&gt;
The following script will show the current frequency and statistics for each state, including time spent in idle mode when the CPU is actually sleeping. &lt;br /&gt;
This script works with the special frequency handling in Titan&#039;s kernel.&lt;br /&gt;
&lt;br /&gt;
To run this script as user and be able to set the frequencies you will need to install &amp;quot;[[Root_access|rootsh]]&amp;quot; via apt-get.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;scheduler_stats.sh&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 awk &#039;{print &amp;quot;\nCurrent frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
 awk &#039;{print &amp;quot;Minimum frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 awk &#039;{print &amp;quot;Maximum frequency: &amp;quot;$1/1000&amp;quot; MHz\n&amp;quot;}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
 &lt;br /&gt;
 tis1=`awk &#039;{SUM += $2} END {printf(&amp;quot;%.0f&amp;quot;,SUM/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state`&lt;br /&gt;
 idle0=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state0/time`&lt;br /&gt;
 idle1=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state1/time`&lt;br /&gt;
 idle2=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state2/time`&lt;br /&gt;
 idle3=`awk &#039;{printf (&amp;quot;%.0f&amp;quot;,$1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpuidle/state3/time`&lt;br /&gt;
 totaltime=$(($idle0+$idle1+$idle2+$idle3+$tis1))&lt;br /&gt;
 echo -e &amp;quot;FREQUENCY\tUSED&amp;quot;&lt;br /&gt;
 awk &#039;{printf (($1/1000)&amp;quot; MHz \t&amp;quot;)};{if ($2 == 0) printf &amp;quot;0 %\n&amp;quot;; else printf (&amp;quot;%.3f %\n&amp;quot;,($2/10)/&amp;quot;&#039;&amp;quot;$totaltime&amp;quot;&#039;&amp;quot;)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sample Output&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Current frequency: 500 MHz&lt;br /&gt;
 &lt;br /&gt;
 Minimum frequency: 500 MHz&lt;br /&gt;
 &lt;br /&gt;
 Maximum frequency: 810 MHz&lt;br /&gt;
 &lt;br /&gt;
 FREQUENCY       USED&lt;br /&gt;
 1200 MHz        0 %&lt;br /&gt;
 1100 MHz        0 %&lt;br /&gt;
 1000 MHz        0 %&lt;br /&gt;
 950 MHz         0 %&lt;br /&gt;
 900 MHz         0 %&lt;br /&gt;
 850 MHz         0 %&lt;br /&gt;
 810 MHz         0.000 %&lt;br /&gt;
 750 MHz         0.000 %&lt;br /&gt;
 700 MHz         0.000 %&lt;br /&gt;
 600 MHz         0.000 %&lt;br /&gt;
 550 MHz         0.000 %&lt;br /&gt;
 500 MHz         0.010 %&lt;br /&gt;
 &lt;br /&gt;
Known Bugs: Requires the Phone to be booted for an hour or so before it results in decent stats.&lt;br /&gt;
&lt;br /&gt;
==Combined helper script (by evilJazz)==&lt;br /&gt;
&lt;br /&gt;
The following script will show the current frequency and statistics. It also accepts two optional parameters that will set the max and/or min frequencies (in MHz unit). Calling the script without these parameters will not set the new clocking. Instead it will just show the current frequencies and statistics.&lt;br /&gt;
&lt;br /&gt;
This script works with the special frequency handling in Titan&#039;s kernel.&lt;br /&gt;
&lt;br /&gt;
To run this script as user and be able to set the frequencies you will need to install &amp;quot;[[Root_access|rootsh]]&amp;quot; via apt-get.&lt;br /&gt;
&lt;br /&gt;
 overclock.sh [max freq] [min freq]&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 max=${1}000&lt;br /&gt;
 min=${2}000&lt;br /&gt;
 &lt;br /&gt;
 # Handle and rewrite special cases in Titan&#039;s kernel...&lt;br /&gt;
 [ &amp;quot;$max&amp;quot; == &amp;quot;600000&amp;quot; ] &amp;amp;&amp;amp; max=599000&lt;br /&gt;
 [ &amp;quot;$min&amp;quot; == &amp;quot;125000&amp;quot; ] &amp;amp;&amp;amp; min=124999&lt;br /&gt;
 &lt;br /&gt;
 if [ $(id -u) -ne 0 ]; then&lt;br /&gt;
   [ &amp;quot;$max&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;echo $max &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&amp;quot; | sudo gainroot&lt;br /&gt;
   [ &amp;quot;$min&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;echo $min &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&amp;quot; | sudo gainroot&lt;br /&gt;
 else&lt;br /&gt;
   [ &amp;quot;$max&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo $max &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
   [ &amp;quot;$min&amp;quot; != &amp;quot;000&amp;quot; ] &amp;amp;&amp;amp; echo $min &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 awk &#039;{printf(&amp;quot;\nCurrent frequency: %7s MHz\n&amp;quot;, $1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
 awk &#039;{printf(&amp;quot;Minimal frequency: %7s MHz\n&amp;quot;, $1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&lt;br /&gt;
 awk &#039;{printf(&amp;quot;Maximal frequency: %7s MHz\n\n&amp;quot;, $1/1000)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq&lt;br /&gt;
 &lt;br /&gt;
 sum=$(awk &#039;{SUM += $2} END {print SUM}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state)&lt;br /&gt;
 awk &#039;{printf(&amp;quot;%7s MHz: %5.1f % (%8d)\n&amp;quot;, ($1/1000), ($2 * 100)/&amp;quot;&#039;&amp;quot;$sum&amp;quot;&#039;&amp;quot;, $2)}&#039; /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
 echo&lt;br /&gt;
&lt;br /&gt;
Output example:&lt;br /&gt;
&lt;br /&gt;
 ~ $ ./overclock.sh 600 250&lt;br /&gt;
&lt;br /&gt;
 Current frequency:     250 MHz&lt;br /&gt;
 Minimal frequency:     250 MHz&lt;br /&gt;
 Maximal frequency:     599 MHz&lt;br /&gt;
 &lt;br /&gt;
    1200 MHz:   0.0 % (       0)&lt;br /&gt;
    1100 MHz:   0.0 % (       0)&lt;br /&gt;
    1000 MHz:   0.0 % (       0)&lt;br /&gt;
     950 MHz:   0.0 % (       0)&lt;br /&gt;
     900 MHz:   0.2 % (     271)&lt;br /&gt;
     850 MHz:   0.0 % (       0)&lt;br /&gt;
     810 MHz:   0.0 % (       0)&lt;br /&gt;
     750 MHz:   0.0 % (       0)&lt;br /&gt;
     700 MHz:   0.0 % (       0)&lt;br /&gt;
     600 MHz:   9.0 % (   13663)&lt;br /&gt;
     550 MHz:   0.5 % (     701)&lt;br /&gt;
     500 MHz:  15.4 % (   23379)&lt;br /&gt;
     250 MHz:  75.0 % (  114021)&lt;br /&gt;
 124.999 MHz:   0.0 % (       0)&lt;br /&gt;
&lt;br /&gt;
=Changing the Kernel=&lt;br /&gt;
&lt;br /&gt;
==Installing a modified Kernel==&lt;br /&gt;
&lt;br /&gt;
===Flashing using PC===&lt;br /&gt;
&lt;br /&gt;
1. Power off the N900 completely.&lt;br /&gt;
&lt;br /&gt;
2. Hold &amp;quot;u&amp;quot; on the N900&#039;s keyboard, while holding, connect it to the PC via USB cable.&lt;br /&gt;
&lt;br /&gt;
3. You will see usb icon on top right of white Nokia screen.&lt;br /&gt;
&lt;br /&gt;
4. Now you can let go of &amp;quot;u&amp;quot; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
5. Now use flasher utility with the kernel file located in the same directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 flasher-3.5 -k image_file_name -f -R&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. It should take about 1-2 seconds then it&#039;ll say Done.&lt;br /&gt;
&lt;br /&gt;
7. Now your N900 will show white Nokia screen. (reboot)&lt;br /&gt;
&lt;br /&gt;
8. At this time, you can pull out the USB cable.&lt;br /&gt;
&lt;br /&gt;
9. N900 should finish booting up if all goes well.&lt;br /&gt;
&lt;br /&gt;
10. Test out your phone as usual. (Apps, browser, camera, phone etc etc)&lt;br /&gt;
&lt;br /&gt;
11. If any abnormal events occur frequently (crash, hang, screen corruption etc), turn it off, flash it to a slower kernel and test again.&lt;br /&gt;
note: For Windows7 64bit users, you may need to use WindowsXP mode. ([http://www.youtube.com/watch?v=Bx6dblXl2eo Youtube Tutorial])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Flashing from N900 xterminal===&lt;br /&gt;
&lt;br /&gt;
* do a backup, have a pc nearby and know you are able to flash the n900 with flasher-3.5 - just in case&lt;br /&gt;
&lt;br /&gt;
0. Launch xterminal app then type sudo gainroot (need rootsh installed)&lt;br /&gt;
&lt;br /&gt;
1. type &lt;br /&gt;
 softupd -vv -s --local&lt;br /&gt;
(thats double v)&lt;br /&gt;
&lt;br /&gt;
2. open new terminal&lt;br /&gt;
&lt;br /&gt;
3. type&lt;br /&gt;
 flasher --local -f -k &amp;lt;kernel_zimage_file_with_path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. you see the flashing (takes some time)&lt;br /&gt;
&lt;br /&gt;
5. type &amp;quot;sync&amp;quot; to save changes&lt;br /&gt;
&lt;br /&gt;
6. type &amp;quot;reboot&amp;quot; and enter to restart&lt;br /&gt;
&lt;br /&gt;
7. Test out your phone as usual. (Apps, browser, camera, phone etc etc)&lt;br /&gt;
&lt;br /&gt;
8. If any abnormal events occur frequently (crash, hang, screen corruption etc), turn it off, flash it to a slower kernel and test again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You are fully responsible for any damage caused by overclocking. Not anyone else.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Reverting to the Original Kernel==&lt;br /&gt;
&lt;br /&gt;
If you want to revert to the original kernel, execute:&lt;br /&gt;
&lt;br /&gt;
 apt-get install --reinstall kernel kernel-flasher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Power users]]&lt;/div&gt;</summary>
		<author><name>188.221.97.173</name></author>
	</entry>
</feed>