[!CAUTION] USE AT YOUR OWN RISK: This software removes voltage limits set in the Raspberry Pi firmware, presumably to prevent the SoC from frying itself. Use of this software can and most probably will cause damage to your Raspberry Pi.
You have been warned.
Click the image above to watch a video about this project, or read this blog post for more details.
This project was initially conceived by @jonatron, and the first tests were written up in this blog post: Beating Jeff's 3.14 GHz Raspberry Pi 5.
The Raspberry Pi 5's bootloader / firmware contains a hard-coded 1.000V limit, and because the firmware is signed by Broadcom/Raspberry Pi, you can't patch the bootloader itself. But you can patch the system memory once booted, and that's exactly what the code in this project does.
That does create a winkle, however: the arm_freq
setting, which controls the CPU clocks, has to be set to the overclock value we're aiming for, but most Pi 5's are unstable at clocks above 3.0-3.2 GHz with the default 1.000V limits. (Some Raspberry Pi 5's can't even hit 2.6 or 2.8 GHz reliably!)
Part of the setup process involves downclocking the Pi during boot as early as possible, so it will boot with a stable clock. Then, once the voltage limit is raised, we can lift the clock limit.
removelimit
Clone this repository and compile the app:
git clone https://github.com/geerlingguy/pi-overvolt.git && cd pi-overvolt
./compile.sh
This will generate a removelimit
binary in the pi-overvolt directory.
slowcpu
systemd serviceWe need to slow down the Pi's clock as early in the boot process as possible, since the voltage limit is in place. Do that with the slowcpu
service that runs on boot.
Copy the slowcpu.service
file into place:
sudo cp slowcpu.service /lib/systemd/system/slowcpu.service
Then copy the slowcpu
script into place:
sudo cp slowcpu /slowcpu
Enable the new systemd unit so it will run on boot:
sudo systemctl enable slowcpu.service
Try rebooting your Pi with different over_voltage_delta
and arm_freq
values, increasing each beyond 50000
and 3000
respectively (the default arm_freq
is 2400
—not all Pi 5's can even overclock beyond 2.8 GHz!):
over_voltage_delta=55000
arm_freq=3300
[!CAUTION] THERE IS NO TURNING BACK! You can easily fry your Pi. Do not proceed unless that's a sacrifice you're willing to make!
When you're ready to run a benchmark, remove the voltage limit, flush the GPU's cache, set the frequency limit to your maximum frequency, and enable the performance
governor to ensure the Pi doesn't throttle its clock at idle:
cd pi-overvolt && sudo ./removelimit && vcgencmd cache_flush
echo 3300000 | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
vcgencmd measure_volts core
vcgencmd measure_clock arm
vcgencmd measure_temp
/sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
While running these tests, I run watch -n 1 ./stats.sh
using the file included in this repository to monitor clocks, voltage, temps, and uptime while running benchmarks.
Date | User | Single Core | Multicore | Settings | Link |
---|---|---|---|---|---|
2024-07-25 | geerlingguy | 1121 | 2219 | over_voltage_delta=70000 , arm_freq=3400 , gpu_freq=1100 |
result |
Sorted list of Pi 5 Geekbench 6 results: Single core | Multi core
MIT