Raspberry Pi Zero 2 VMOD

Table of contents

Clocking problems require modding solutions1

Since my Raspberry Pi Zero 2 isn’t the jackpot of the official silicon lottery and it can’t go higher than 1,405 MHz, even with sub-zero temperatures (about -25 °C), I want to give the Zero 2 one last time to shine.

Bypassed VDD_CORE (Powering the RPi, Part 3)

The built-in overvoltage-feature for the processor (over_voltage) inside /boot/config.txt works from 0 (1.200 V) to 8 (1.400 V).
In order to get a higher clock speed, I needed more voltage.

Like in my last two articles (Powering the RPi, Part 1 and Part 2) about possible and working voltage-modifications, the RPi Zero 2 is no exception for hooking up an external power source to inject a voltage.

The schematics2 tell you, that C162 is a good spot to hook your external voltage. Unfortunatelly the PCB is not labeled, so I had to measure where to find the VDD_CORE.
For V_DDR you have to find C268.

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

The measured locations are shown in these pictures. Red for VDD_CORE and purple for V_DDR.

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

Setup

Before mouting my Prometeia to the modded board, I tested it with air-cooling. No hard overclocking just looking, if the RPi Zero 2 will survive an injected voltage.

Turns out, it will survive and I easily broke the 1,350 MHz barrier. With about 1.500 V (+100 mV) I overclocked the RPi to about 1.4 GHz and ended the air-cooling session.
I used an ElmorLabs AMPLE 20A Power Card3 as my external power source. It worked really well. Great piece of hardware.

If you see this, the image is broken :(

Time to mount my Prometeia SSPC and look what this little Pi could take.

If you see this, the image is broken :(

The journey ended at 1,495 MHz at about 1.525 mV and a really frosty RPi Zero 2.

If you see this, the image is broken :(

This is not the final ending. I had to stop testing.

Results

With added +125 mV, I was able to gain an extra 90 MHz. Not impressive, but it’s some kind of progress.
Running under these circumstances, the setup was not stable. I could run some benchmarks, but there must be a round #2.

Cooling Clock_Speed Clock_Change VDD_CORE Result Result_Change
Air 1,000 MHz 100 % 1.200 V 2,270 pts. 100 %
Air 1,350 MHz 135 % 1.400 V 2,619 pts. 115 %
SSPC 1,405 MHz 141 % 1.400 V 2,670 pts. 118 %
SSPC 1,495 MHz 150 % 1.525 V 2,756 pts. 121 %

If you see this, the image is broken :(

Weird behavior

When I reached 1,450 MHz things got a little bit weird.
Any MHz higher than 1,450 ended in a lower frequency. The ARM-frequency was off, but PLLB was right. Changing arm_freq and rebooting didn’t help.

Normal behavior: The saved arm_freq (1,450 MHz) inside /boot/config.txt is identical as the current frequency the system is running with. PLLB shows a two times higher clock, which is normal, since it have a divider of 2.

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

Wierd behavior: I wanted 1,455 MHz, PLLB does show the right value of 2,910 MHz, but the read-out frequency is off. It shows 1,446,41 MHz.

If you see this, the image is broken :(

Weird behavior: Same for 1,475 MHz. PLLB shows the right value (2,950 MHz) but 1,445.82 MHz are read-out. Nice to see, that this frequency is lower than the previous one.

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

Then I overclocked the RAM and the arm_freq was magically repaired. I have no idea why and if it’s causality or just correlation.

If you see this, the image is broken :(

Maybe I’ll wait for a new firmware-release. If the behavior doesn’t change, I’ll file an issue and keep you updated.

Conclusion

I didn’t find a software limitation, probably there is one at 1,600 MHz, but therefore I have to gain an additional 105 MHz.
Maybe when I have a few more Zero 2s and find one which clocks better, we find a barrier.

For now, I know what to do. Bypassing VDD_CORE works, 1.5 GHz is near and V_DDR wasn’t touched at all.

I’ll keep you updated!