Raspberry Pi Safe Overclocking
UPDATE: Click here for Raspberry Pi 2 Overclocking
Disclaimer: My recommendations are based on testing done with various configurations on two Raspberry Pi Model B version 2 boards. Both run Arch Linux ARM 24/7 without issue. Be warned, as with most hardware and software modifications, individual results may vary.
For the last month or two, I’ve been playing around with overclocking my Raspberry Pi boards. I’m sort of obsessed with performance tuning. As such, even before starting various Pi projects, my main focus has been on squeezing-out noticeable performance gains without compromising stability. Today, I’d like to share my /boot/config.txt settings and hopefully get some feedback as to how they perform on your Raspberry Pi.
Raspberry Pi Safe Overclock – config.txt
arm_freq=1000 sdram_freq=500 core_freq=500 over_voltage=6 temp_limit=75 boot_delay=0 disable_splash=1
Select a gpu_mem config option below based on if you are using a desktop manager vs just shell. No GUI (eg. command line only)
gpu_mem=16
With GUI (eg. OpenELEC, Raspbmc, etc.)
gpu_mem=256
The reason I call these settings “safe” is that they don’t void the warranty and also I’ve had no crashes or reboots while using them. Refer to this page for explanations.
Benchmark Results
Here are my nbench benchmark results using the above settings on the Arch-WiPi image…
[root@ArchWiPi nbench-byte-2.2.3]# ./nbench BYTEmark* Native Mode Benchmark ver. 2 (10/95) Index-split by Andrew D. Balsa (11/97) Linux/Unix* port by Uwe F. Mayer (12/96,11/97) TEST : Iterations/sec. : Old Index : New Index : : Pentium 90* : AMD K6/233* --------------------:------------------:-------------:------------ NUMERIC SORT : 290.57 : 7.45 : 2.45 STRING SORT : 45.148 : 20.17 : 3.12 BITFIELD : 1.2101e+08 : 20.76 : 4.34 FP EMULATION : 60.482 : 29.02 : 6.70 FOURIER : 3019.1 : 3.43 : 1.93 ASSIGNMENT : 4.0523 : 15.42 : 4.00 IDEA : 1048.3 : 16.03 : 4.76 HUFFMAN : 600.57 : 16.65 : 5.32 NEURAL NET : 4.2778 : 6.87 : 2.89 LU DECOMPOSITION : 125.81 : 6.52 : 4.71 ==========================ORIGINAL BYTEMARK RESULTS========================== INTEGER INDEX : 16.769 FLOATING-POINT INDEX: 5.358 Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0 ==============================LINUX DATA BELOW=============================== CPU : ARMv6-compatible processor rev 7 (v6l) L2 Cache : OS : Linux 3.10.27-2-ARCH C compiler : gcc version 4.8.2 20131219 (prerelease) (GCC) libc : libc-2.18.so MEMORY INDEX : 3.783 INTEGER INDEX : 4.513 FLOATING-POINT INDEX: 2.971 Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38 * Trademarks are property of their respective holder.
As a bonus, if you are just searching for modest speed improvements without any risk to hardware, then use these settings:
arm_freq=800 #arm_freq_min=400 sdram_freq=500 #sdram_freq_min=250 core_freq=300 #core_freq_min=150 boot_delay=0 disable_splash=1 initial_turbo=60 #Does not set warranty bit. But will allow faster initial boot
You can uncomment arm_freq_min, core_freq_min and sdram_freq_min if your Pi will be idle for extended periods (eg as a server running 24/7). This will allow it to use less resources when idle and as a result lower temperatures. If for some reason something goes wrong and you can’t boot, don’t wipe your card. Instead, simply remove it from Pi > plug into your Linux computer > browse to /boot/config.txt to find and correct any errors/typos in config or revert changes. Note that the *freq_min settings only work for setting below-default values. So for example to set arm_freq_min higher than the default minimum of 700Mhz, one would have to VOID WARRANTY by adding force_turbo=1. Don’t do this unless your project involves pushing the limits and make sure you have a plan in place to manage higher temps. Enjoy!
Looking for extreme speed?! (UPDATED: 05/31/2014)
Try my current config.txt settings for OpenELEC Xbmc. Warning: Use at your own risk…
gpu_mem=256 force_turbo=1 #Voids warranty! arm_freq=1000 sdram_freq=500 core_freq=500 over_voltage=6 temp_limit=75 #Will throttle to default clock speed if hit. boot_delay=0 disable_splash=1
Using force_turbo=1 no matter what the other config settings are, will void the warranty on your $35 board. ;) However, I’ve set temp_limit=75 to ensure that the overclocking values won’t be pushed during high temperatures, instead will be throttled back to default. This has yet to break any of my boards, I’ve also never hit the 75C temp limit. Results may vary but this reduces the lag experienced with force_turbo=0 (default on-demand overclocking). Note that the default safe temp_limit is 85 Celsius.
[Blog image courtesy geektopia.es]