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>;
};
So overlays could look like this for 1.6 GHz:
# Create the directory for user overlays
mkdir -p /boot/overlay-user
cd /boot/overlay-user
# Create the overlay source file
cat << '_EOF_' > oc-1600.dts
/dts-v1/;
/plugin/;
/ {
compatible = "xunlong,orangepi-zero2w", "allwinner,sun50i-h618";
fragment@0 {
target = <&cpu_opp_table>;
__overlay__ {
opp-1632000000 {
clock-latency-ns = <244144>; /* 8 32k periods */
opp-hz = /bits/ 64 <1632000000>;
opp-microvolt-speed0 = <1100000>;
opp-microvolt-speed1 = <1100000>;
opp-microvolt-speed2 = <1200000>;
};
};
};
};
_EOF_
# Compile the overlay binary file
dtc -I dts -O dtb -o oc-1700.dtbo -@ oc-1600.dts
# Enable the user overlay via U-Boot environment file
G_CONFIG_INJECT 'user_overlays=' 'user_overlays=oc-1600' /boot/dietpiEnv.txt
And this for 1.7 GHz:
# Create the directory for user overlays
mkdir -p /boot/overlay-user
cd /boot/overlay-user
# Create the overlay source file
cat << '_EOF_' > oc-1700.dts
/dts-v1/;
/plugin/;
/ {
compatible = "allwinner,sun50i-h618";
fragment@0 {
target = <&cpu_opp_table>;
__overlay__ {
opp-1632000000 {
clock-latency-ns = <244144>; /* 8 32k periods */
opp-hz = /bits/ 64 <1632000000>;
opp-microvolt-speed0 = <1100000>;
opp-microvolt-speed1 = <1100000>;
opp-microvolt-speed2 = <1200000>;
};
opp-1704000000 {
clock-latency-ns = <244144>; /* 8 32k periods */
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt-speed0 = <1100000>;
opp-microvolt-speed1 = <1100000>;
opp-microvolt-speed2 = <1100000>;
};
};
};
};
_EOF_
# Compile the overlay binary file
dtc -I dts -O dtb -o oc-1700.dtbo -@ oc-1700.dts
# Enable the user overlay via U-Boot environment file
G_CONFIG_INJECT 'user_overlays=' 'user_overlays=oc-1700' /boot/dietpiEnv.txt
Where are the opp-microvolt
speeds coming from? Those should be essential for stability as well. The chip uses “speed2” by default, and the Orange Pi Zero 2W device tree does not override it: Making sure you're not a bot!
Not sure whether 1.2V for 1.6 GHz and 1.7V for 1.7 GHz makes sense, usually I would assign higher voltage for higher clock rate, of course, but there can be reasonable exceptions in rare cases.
To compare with upstream table: Making sure you're not a bot!
From AngryMiner; Orange Pi zero Discord.
I invited him. All I can do 
1 Like