Hi everyone,
I’m working on overclocking my Orange Pi Zero 3 (Allwinner H618) running DietPi (kernel 6.6.44-current-sunxi64) by editing the Device Tree (.dtb) to include higher CPU frequencies beyond the default maximum of 1.512GHz.
Here’s what I’ve done so far:
- Decompiled
sun50i-h618-orangepi-zero3.dtb
from /boot/dtb-*/allwinner/
- Added new OPP entries up to 2.0GHz (e.g. 1600000000, 1700000000…) with matching format and safe voltage values
- Recompiled and placed the updated
.dtb
back in the correct /boot/dtb-*/allwinner/
directory
- Verified that the system uses the correct DTB (
strings /proc/device-tree/compatible
shows sun50i-h618
)
Despite all of this:
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
still shows only up to 1512000
- The new OPPs are not being registered by the kernel
- I’ve tried
opp-supported-hw
, voltage variations, and matching opp-microvolt-speedX
formatting with no success
I suspect the kernel may be hard-limiting the max frequency via cpufreq-dt
or some regulator constraint.
Questions:
- Has anyone successfully enabled custom OPPs on this board?
- Is there a kernel patch or build config that allows additional OPPs for the H618?
- Are there any logs or dmesg indicators I should focus on?
Any insights or working examples would be really appreciated 
Thanks in advance!
– Nils
I ran it at 1.6 and 1.7.
It was unstable and froze too often, not suitable for gaming I guess, or needs some work with other factors than I applied.
Don’t have access right now. I’ll give the dtb tomorrow
This is it for now:
EDIT opp-table CPU
opp-1632000000 {
clock-latency-ns = <0x3b9b0>;
opp-hz = <0x00 0x61465800>;
opp-microvolt-speed0 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed1 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed2 = <0x124f80 0x124f80 0x124f80>;
};
opp-1752000000 {
clock-latency-ns = <0x3b9b0>;
opp-hz = <0x00 0x686d6600>;
opp-microvolt-speed0 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed1 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed2 = <0x10c8e0 0x10c8e0 0x10c8e0>;
};
opp-hz is what changes the frequency.
1512MHz = 5a1f4a00
1704MHz = 6590fa00
1752Mhz = 686d6600
1800MHz = 6b49d200
2000MHz = 77359400
All Kudo’s go to AngryMiner on the Orange Pi zero Discord
Which parts did you edit? Only a section here? https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi
I guess I’d need to read about opp-microvolt-speed*
meaning.
And I guess the regulator would need to be adjusted as well when using values above 1100000
microvolt there: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts#n78
We could theoretically add 1-2 device tree overlays for this. But of course does not make sense if it does not run stable.
I don’t remember exactly, I think so. I was also tinkering on the @CPU section, but I think that was wrong, if I remember well.
This is a comparison between an ancient version and the one I edited, it seems so.
dts-diff2.txt (4.8 KB)
PS: Indeed it was unstable and freezing. I got it from someone (AngryMiner) from the Orange Pi-zero discord, but he was indeed mentioning about the possible improvements on the voltages. If there is more info, I can run tests.
my problem is when i do it more than 1512 the pi didnt start
opp-1600000000 {
clock-latency-ns = <0x3b9b0>;
opp-hz = <0x00 0x5f5e1000>;
opp-microvolt-speed0 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed1 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed2 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-supported-hw = <0x3f>;
};
but this ddidnt work what i am doing wrong ?
The table you are showing looks different from the one i posted above.
again my example:
opp-1632000000 {
clock-latency-ns = <0x3b9b0>;
opp-hz = <0x00 0x61465800>;
opp-microvolt-speed0 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed1 = <0x10c8e0 0x10c8e0 0x10c8e0>;
opp-microvolt-speed2 = <0x124f80 0x124f80 0x124f80>;
};