Overclocking my old “Raspberry Pi 3 Model B”
The Raspberry Pi 4 boards now cost around $200, sometimes more! Some of us may opt to dust off our old Raspberry Pi 3’s instead of purchasing a new version 4.
You may remember my original overclocking posts for Raspberry Pi and the Raspberry Pi 2. This Raspberry Pi 3 overclock post seeks to overclock the 2016 Raspberry Pi 3 Model B. Squeezing out extra performance without compromising stability. If you have 2018 Model B+ then read here: Stop trying to overclock the Raspberry Pi 3 B+
It’s highly recommended that you use a capable power supply with 2.5 amps or better. I’d recommend the CanaKit 5V 2.5A Raspberry Pi 3 Power Supply. Now, on to the /boot/config.txt edits.
As usual, I do not link to or recommend devices or services that I haven’t either personally used or spent extensive time researching. As such, I include affiliate links only to products I have confidence in.
Raspberry Pi 3 – Before overclocking
The Linux kernel ondemand governor used in the Raspberry Pi will increase the CPU speed to the maximum configured default value whenever theres adequate load.
Therefore, you can reduce lag and improve performance by disabling this CPU scaling feature and forcing the board to always use the default maximums.
The default idle config for the Raspberry Pi 3 board is arm_freq=600 and core_freq=250. The arm_freq setting still adds heat to the board when pushed beyond the default max of 1.2Ghz, so we are not touching that.
This keeps the Raspberry Pi 3 board running at max defaults, which are arm_freq=1200 and core_freq=400. To do this, set these lines in your config.txt:
force_turbo=1 #Voids Warranty! boot_delay=1 #helps to avoid sdcard corruption when force_turbo is enabled.
This is less risky than playing around with other overclock settings. See below.
More speed?! Raspberry Pi 3 Overclock – 1.35GHz
arm_freq=1350 core_freq=500 over_voltage=4 disable_splash=1 #force_turbo=1 #Voids Warranty! (uncomment to avoid CPU scaling down to 600Mhz) #boot_delay=1 #helps to avoid sdcard corruption when force_turbo is enabled. #sdram_freq=500 #uncomment to test. Works only with some boards.
Raspberry Pi 3 gpu_mem (1GB memory) allocation
gpu_mem (GPU memory) is measured in megabytes and sets the memory split between the CPU and GPU; the CPU gets the remaining memory. The minimum value is 16.
For example, if you use the Raspberry Pi 3 as a gaming emulator or media player or a desktop environment (LXDE, XFCE, Maynard, etc.), then you’ll want to increase gpu_mem to at least 256. On the other hand, if you use the Raspberry Pi as a web server to build a drone or simply a console-based project, you should lower gpu_mem to 16.
In other words, if your needs are graphical, increase GPU’s memory; if not, lower it to the minimum.
Web server, wireless access point, firewall, weather station, etc.
or for GUI usage, e.g. OpenELEC, Raspbmc, RetroPie, XFCE, etc.
Raspberry Pi 3 Overclock options
- arm_freq– Frequency of ARM in MHz. (Raspberry Pi 3 Overclock)
- core_freq -Frequency of GPU processor core in MHz. It has an impact on ARM performance since it drives the L2 cache.
- sdram_freq -Frequency of SDRAM in MHz.
- over_voltage – ARM/GPU core voltage adjust. Values above 6 are only allowed when force_turbo or current_limit_override are specified (which sets the warranty bit).
- force_turbo – Disables dynamic cpufreq driver and minimum settings below. Voids Warranty.
- initial_turbo -Enables turbo mode from boot for a value in seconds (max 60) or until cpufreq sets a frequency. Default 0
- arm_freq_min – Minimum value of arm_freq used for dynamic clocking.
- core_freq_min – Minimum value of core_freq used for dynamic clocking.
- sdram_freq_min – Minimum value of sdram_freq used for dynamic clocking.
- temp_limit – Overheat protection. Sets clocks and voltages to default when the SoC reaches this Celsius value. Setting this higher than default voids the warranty. Default 85
- disable_splash – If set to 1, avoids the rainbow splash screen on boot.
- boot_delay – Wait for x number of seconds to start.elf before loading kernel. Default 1
- gpu_mem – GPU memory in megabytes. Sets the memory split between the ARM and GPU. ARM gets the remaining memory.
Raspberry Pi 3 Model B specifications
- A 1.2GHz 64-bit quad-core ARMv8 CPU
- 802.11n Wireless LAN
- Bluetooth 4.1
- Bluetooth Low Energy (BLE)
- 1GB RAM
- 4 USB ports
- 40 GPIO pins
- Full HDMI port
- Ethernet port
- Combined 3.5mm audio jack and composite video
- Camera interface (CSI)
- Display interface (DSI)
- Micro SD card slot (now push-pull rather than push-push)
- VideoCore IV 3D graphics core
I was super lucky to get a model 4B 8GB just before the prices went up. I also won the “silicon lottery”. Being able to overclock mine up to an astronomical 2.35 GHz CPU and 0.8GHz GPU stably with the Argon Case holding up really nicely (It never goes above 55 degrees celsius for me at my current configuration)
The issue with my Pi 3 (I’m thinking it may be defective) is that it freezes randomly after an hour or two… I don’t know why but it does which is bad for projects requiring stability like a web server.