Raspberry Pi 4 at 2,500 MHz (2.5 GHz)
Table of contents
A long journey
2020 was not my year for overclocking, something was going on…something with a virus, right?
But on February 3rd (and 4th) 2021 I decided it was time to get my old Prometeia out of the basement.
Back in October 2019 (yes, more a year before…) I tested my candidates and it turns out one was capable at clocking at 1,975 MHz at 1.05 V (over_voltage=8
) with air-cooling. Not bad, but there was definitely room for more.
I made a quick HWBOT Prime run at 4282.59 pps and got 5h 28m 32.939s at the x264 Benchmark.
Sub-Zero
The RPi4 was already prepared for sub-zero temperatures, I used a sprayable rubber coating called Plasti Dip.1
My standard benchmark is the x264 Benchmark from GAT, some days ago I wrote a short article about it.
With clocks in the probably mid-2000 MHz one run takes about 3-4 hours, so some sort of protection against water on the RPi is good to have.
I hooked the Pi on my Prometeia and I was able to get solid 2,500 MHz at 1.05 V (over_voltage=8
) stable to boot and run the HWBOT Prime benchmark and scored 4806.50 pps.
Notice: The frequency provided by vcgencmd measure_clock arm
and the temperature provided by vcgencmd measure_temp
are correct. HWBOT Prime has some problems reading the correct values for clock speeds above a certain point and temperatures below zero. It is a RPi-thing.
With x264-stable 2,400 MHz I managed to run the benchmark at 3h 17m 56.479s.
Limits
In October 2019 the a RPi4B could reach was 2,147 MHz, due to software limitation inside the firmware.
The value of the clock speed was stored as a 32 bit integer, so the maximum was 2,147,483,647 Hz, or 2,147 MHz short.2
Beside this limitation, there is a second border, which keeps the RPi from going to fast. The ARM-clock is limited by the PLLB. A PLL, phase-locked loop, is a control system to generate the clock of a circuit.
The clocks on a Raspberry Pi are generated by different PLLs and PLLB is exclusively for the ARM-processor. Unfortunatelly this PLL has a maximal value, which can’t be changed on the fly. This value divided by 2 is the highest clock the ARM-processor can reach.
In the beginning of RPi4 the max. value was 3.5 GHz, so 1,750 MHz was the highest clock you could use on the ARM.
From firmware-release to firmware-release the value was raised, from 3.5 to 4.0 GHz and now up to 5.0 GHz. With the use of a 64 bit integer to store the clock speed you can now reach up to 2,500 MHz until the value is raised again by the developers of the firmware.
I filed the issue #1537 on GitHub at the firmware-repository.
When will the max. value of the PLLB be raised? I don’t know. I don’t know why and when they allow us to get higher and higher clocks.
The perfect outcome would be a complete open PLLB or an option of the overclocking-settings inside the /boot/config.txt
file.
Fail
As I wrote above I was able to reach 2,500 MHz and reached the limit, which is currently possible.
For this I used over_voltage=8
to get a VDD_CORE of 1.05 V. Later on the evening of Febraury 4th I tried over_voltage=10
, over_voltage=12
and over_voltage=14
and got 1.1 V. There is no difference from 10 to 15, but you get +50 mV VDD_CORE.
Why on earth didn’t I get the message, that you can go higher than 8?
Now, without the RPi4B bound to my Prometeia, simply using air-cooling, I was able to get 2,500 MHz “HWBOT Prime”-stable and 2,300 MHz x264-stable on the BCM2711B0.
I guess I have to remount the RPi4B to my Prometeia, again. With +50 mV I got additional 325 MHz at the x264 Benchmark on air-cooling. With sub-zero temperatures 2,500 MHz should easily be possible.
Time for a faceplam…