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.

Safe/Stable Raspberry Pi Overclocking


Raspberry Pi Safe Overclock – config.txt


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)


With GUI (eg. OpenELEC, Raspbmc, etc.)


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
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
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc, 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:

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 XbmcWarning: Use at your own risk…

force_turbo=1 #Voids warranty!
temp_limit=75 #Will throttle to default clock speed if hit.

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]


Top ↑