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

If you see this, the image is broken :( If you see this, the image is broken :(

My standard benchmark is the x264 Benchmark from GAT, some days ago I wrote a short blog 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.

If you see this, the image is broken :( If you see this, the image is broken :( If you see this, the image is broken :(

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…

If you see this, the image is broken :(


  1. Plasti Dip ↩︎

  2. Raspberry Pi Forum ↩︎