Overclocking
(uq) |
(elaborated) |
||
Line 1: | Line 1: | ||
<nowiki>#</nowiki> ''WORK IN PROGRESS, HELP IF YOU WANT'' | <nowiki>#</nowiki> ''WORK IN PROGRESS, HELP IF YOU WANT'' | ||
+ | |||
+ | Overclocking is discussed in [http://talk.maemo.org/showthread.php?t=39753 this thread]. | ||
+ | If you're more interested in power saving read [http://talk.maemo.org/showthread.php?t=49654 this]. | ||
=Warnings= | =Warnings= | ||
Line 9: | Line 12: | ||
- If you encounter ANY unusual problems, lower your clock frequency<br> | - If you encounter ANY unusual problems, lower your clock frequency<br> | ||
- You do it at your own responsibility. No whining afterwards. If you're unsure, don't do it.<br> | - You do it at your own responsibility. No whining afterwards. If you're unsure, don't do it.<br> | ||
+ | - [http://depot.javispedro.com/nit/thewarningtm.jpeg Nokia's overclocking warning]: 500MHz is the normal frequency. Everything above is not good for your device, even with the stock kernel. | ||
=Available kernels= | =Available kernels= | ||
- | Overclocking | + | Overclocking requires installation of a custom kernel. |
+ | There are two types of kernels: | ||
+ | # modified PR1.1 kernels by Lehto and others. The only difference to the stock Nokia kernel is that the change the available hardcoded frequencies. | ||
+ | # 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. | ||
- | = | + | == Installation of Letho's PR1.1 kernels == |
- | + | ||
- | + | ||
+ | [http://www.saunalahti.fi/crailt/index.html Lehto's Kernels] | ||
[http://talk.maemo.org/showpost.php?p=595582&postcount=774 talk.maemo.org: Jakiman's Overclock Guide / Summary] | [http://talk.maemo.org/showpost.php?p=595582&postcount=774 talk.maemo.org: Jakiman's Overclock Guide / Summary] | ||
- | + | == Installation of titan's enhanced kernels == | |
[http://talk.maemo.org/showthread.php?t=43420 talk.maemo.org: Compiling custom kernels for P1.1 (with fiasco-gen)] | [http://talk.maemo.org/showthread.php?t=43420 talk.maemo.org: Compiling custom kernels for P1.1 (with fiasco-gen)] | ||
- | + | [http://talk.maemo.org/showpost.php?p=602586&postcount=1890 latest version of the community kernel] | |
+ | [http://talk.maemo.org/showpost.php?p=603490&postcount=2004 Lower voltage versions of the same kernel] | ||
- | [http://talk.maemo.org/showpost.php?p= | + | [http://talk.maemo.org/showpost.php?p=597569&postcount=1259 stable community kernel in extras-testing] |
+ | [http://maemo.org/packages/package_instance/view/fremantle_extras-testing_free_armel/kernel-flasher-maemo/2.6.28-maemo19/ the package] | ||
+ | This version maemo19 is good for temporarily testing higher frequencies but a phone call resets the limits. It still includes the invalid 800Mhz frequency. | ||
+ | [http://talk.maemo.org/showpost.php?p=600739&postcount=1722 phone call reset workaround for the older maemo19 kernel] | ||
- | + | The kernel in extras-devel is more recent. | |
- | [http://talk.maemo.org/showpost.php?p= | + | [http://talk.maemo.org/showpost.php?p=597703&postcount=141 the 125MHz 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. | |
- | + | 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. | |
- | + | ||
- | + | ||
- | + | ||
- | [http:// | + | 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. | ||
+ | |||
+ | =Additional information and hints= | ||
+ | |||
+ | # Nokia [http://talk.maemo.org/showpost.php?p=601691&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&postcount=1720 affects] Letho's kernels. | ||
+ | # 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] | ||
+ | # [http://talk.maemo.org/showpost.php?p=599870&postcount=170 improving responsiveness] | ||
+ | # [http://talk.maemo.org/showpost.php?p=599618&postcount=168 safe pmconfig configuration] | ||
+ | # the warning "WARNING: at arch/arm/mach-omap2/clock34xx.c:443 omap3_noncore_dpll_set_rate+0x28c/0x2dc()" in the kernel logs (dmesg) only happens if the invalid 800MHz frequency was selected. ignore it. | ||
+ | # [http://talk.maemo.org/showpost.php?p=603585&postcount=189 saving more battery power when idle] | ||
=Useful stuff= | =Useful stuff= |
Revision as of 08:56, 11 April 2010
# WORK IN PROGRESS, HELP IF YOU WANT
Overclocking is discussed in this thread. If you're more interested in power saving read this.
Contents[hide] |
Warnings
- Overclocking WILL VOID YOUR WARRANTY
- The lifetime of your device will get reduced
- You could lose the data in your device (file system corruption)
- Every device is an individual, what is stable for others might not be for you
- If you encounter ANY unusual problems, lower your clock frequency
- You do it at your own responsibility. No whining afterwards. If you're unsure, don't do it.
- Nokia's overclocking warning: 500MHz is the normal frequency. Everything above is not good for your device, even with the stock kernel.
Available kernels
Overclocking requires installation of a custom kernel. There are two types of kernels:
- modified PR1.1 kernels by Lehto and others. The only difference to the stock Nokia kernel is that the change the available hardcoded frequencies.
- 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.
Installation of Letho's PR1.1 kernels
Lehto's Kernels talk.maemo.org: Jakiman's Overclock Guide / Summary
Installation of titan's enhanced kernels
talk.maemo.org: Compiling custom kernels for P1.1 (with fiasco-gen)
latest version of the community kernel
Lower voltage versions of the same kernel
stable community kernel in extras-testing the package This version maemo19 is good for temporarily testing higher frequencies but a phone call resets the limits. It still includes the invalid 800Mhz frequency. phone call reset workaround for the older maemo19 kernel
The kernel in extras-devel is more recent.
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 workaround There was a bug in one of the early LV kernels but it should be fixed in more recent versions.
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.
Additional information and hints
- Nokia locks the device to 600MHz during phone calls. This may be a bug. It also affects Letho's kernels.
- By default the device is configured to use 125MHz as the lowest frequency but it not enabled in the kernel pmconfig bug
- improving responsiveness
- safe pmconfig configuration
- the warning "WARNING: at arch/arm/mach-omap2/clock34xx.c:443 omap3_noncore_dpll_set_rate+0x28c/0x2dc()" in the kernel logs (dmesg) only happens if the invalid 800MHz frequency was selected. ignore it.
- saving more battery power when idle
Useful stuff
Show current CPU frequency
awk '{print $1/1000" MHz"}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
Set maximum CPU frequency
From root terminal:
echo $((600*1000)) > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
Replace 600 with desired maximum frequency. The list of available frequencies on your device/kernel can be obtained with command:
awk '{print $1/1000" MHz,",$2/1000" MHz,",$3/1000" MHz,",$4/1000" MHz,",$5/1000" MHz"}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
If the last value returned is 0 MHz, this means that you have only 4 available frequencies.
Analyzing time_in_state
This script generates readable output (percentage) of states used. It is designed for 5 available states. If you have 4 available frequencies (stock kernel) simply remove 7th line and lower "head -n 4" to "head -n 3" in 3rd line.
#!/bin/sh awk '{print "\nCurrent frequency: "$1/1000" MHz\n"}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq sum=`awk '{SUM += $2} END {print SUM}' /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state` sum2=`cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | head -n 4 | awk '{SUM += $2} END {print SUM}'` cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | head -n 1 | awk '{printf (($1/1000)" MHz: overall "); printf ("%.1f",($2 * 100)/"'"$sum"'"); printf ("'" %%, when not idle "'"); printf ("%.1f %\n",($2 * 100)/"'"$sum2"'")}' cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | head -n 2 | tail -n 1 | awk '{printf (($1/1000)" MHz: overall "); printf ("%.1f",($2 * 100)/"'"$sum"'"); printf ("'" %%, when not idle "'"); printf ("%.1f %\n",($2 * 100)/"'"$sum2"'")}' cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | head -n 3 | tail -n 1 | awk '{printf (($1/1000)" MHz: overall "); printf ("%.1f",($2 * 100)/"'"$sum"'"); printf ("'" %%, when not idle "'"); printf ("%.1f %\n",($2 * 100)/"'"$sum2"'")}' cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | head -n 4 | tail -n 1 | awk '{printf (($1/1000)" MHz: overall "); printf ("%.1f",($2 * 100)/"'"$sum"'"); printf ("'" %%, when not idle "'"); printf ("%.1f %\n",($2 * 100)/"'"$sum2"'")}' cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state | tail -n 1 | awk '{printf (($1/1000)" MHz: overall "); printf ("%.1f %\n\n",($2 * 100)/"'"$sum"'")}'
Output example:
Current frequency: 125 MHz 800 MHz: overall 5.0 %, when not idle 70.0 % 550 MHz: overall 0.2 %, when not idle 2.0 % 500 MHz: overall 2.0 %, when not idle 25.0 % 250 MHz: overall 0.3 %, when not idle 3.0 % 125 MHz: overall 92.5 %
Changing the Kernel
Installing a modified Kernel
Flashing using PC
1. Power off the N900 completely.
2. Hold "u" on the N900's keyboard, while holding, connect it to the PC via USB cable.
3. You will see usb icon on top right of white Nokia screen.
4. Now you can let go of "u" on the keyboard.
5. Now use flasher utility with the kernel file located in the same directory.
flasher-3.5 -k image_file_name -f -R
6. It should take about 1-2 seconds then it'll say Done.
7. Now your N900 will show white Nokia screen. (reboot)
8. At this time, you can pull out the USB cable.
9. N900 should finish booting up if all goes well.
10. Test out your phone as usual. (Apps, browser, camera, phone etc etc)
11. If any abnormal events occur frequently (crash, hang, screen corruption etc), turn it off, flash it to a slower kernel and test again. note: For Windows7 64bit users, you may need to use WindowsXP mode. (Youtube Tutorial)
Flashing from N900 xterminal
- do a backup, have a pc nearby and know you are able to flash the n900 with flasher-3.5 - just in case
0. Launch xterminal app then type sudo gainroot (need rootsh installed)
1. type
softupd -vv -s --local
(thats double v)
2. open new terminal
3. type
flasher --local -f -k <kernel_zimage_file_with_path>
4. you see the flashing (takes some time)
5. type "sync" to save changes
6. type "reboot" and enter to restart
7. Test out your phone as usual. (Apps, browser, camera, phone etc etc)
8. If any abnormal events occur frequently (crash, hang, screen corruption etc), turn it off, flash it to a slower kernel and test again.
You are fully responsible for any damage caused by overclocking. Not anyone else.
Reverting to the Original Kernel
If you want to revert to the original kernel, execute:
apt-get install --reinstall kernel kernel-flasher