Hey everyone, I’ve been working on a custom edk2 UEFI BIOS for the Orion O6 (not supporting O6N currently) that lets you adjust CPU, GPU, DSU, NPU, and other frequencies and voltages directly from the BIOS settings menu — no recompilation needed.
What it does:
- Tune frequency and voltage for 11 DVFS domains (CPU Little/Mid/Big, GPU Core/Top, DSU, NPU, VPU, MMHUB) from
the BIOS Power Management menu - Adjust per-rail TDP power caps (CPU, GPU, DSU, SOC)
- Change DDR frequency (DDR5-1600 through DDR5-6400) from BIOS
- Changes are patched to SPI flash and applied on the next cold boot — no rebuild required
- 16 thermal zones exposed to Linux (stock only exposes 5) — all CPU clusters, GPU, NPU, VPU, DDR, and board sensors
- Full CPU cache topology (PPTT) so Linux reports correct L1/L2/L3 cache sizes
- DSU performance counters available via perf
- Native PCIe AER and PME support
- SMMU hardware dirty/access bit tracking fixed
- Support for all known board revisions including newer RAM types (Hive Semi, Hynix, Rayson)
- Many other ACPI fixes — see the full changelog in the README
V2.1 Update
Safe overclocking — no more bricking from bad settings (mostly):
The biggest change in V2.1 is the addition of a hidden safe sustained OPP entry for every domain. The system now always boots at a known-stable frequency (800 MHz for CPU, 250 MHz for GPU, etc.) regardless of what values you have set in the BIOS. If you set an unstable frequency that crashes Linux, just reboot — you will always get back to the BIOS settings where you can
fix the values. You no longer need an external SPI programmer to recover from bad CPU, GPU, or most other OPP settings.
DSU exception: The DSU is the one domain where this safety net does not work. The SCP firmware always boots the DSU at its highest configured OPP entry, ignoring the safe sustained setting. If you set an unstable maximum DSU frequency, the board will not boot and you will need an external SPI flash programmer to recover. The stock DSU maximum of 1300 MHz is tested and stable — do not increase it unless you know what you are doing.
Other V2.1 changes:
- AMD GOP driver updated from v1.68 to v2.10 — supports newer AMD GPUs
- Ext4 driver updated — 3+ years of upstream bug fixes from tianocore mainline
- USB VBUS power cycling on Linux reboot — USB devices now properly re-enumerate after a Linux-initiated reboot
- Hardware Information improvements — split CPU speed into Max and Sustained frequency, added domain frequency display for
all DVFS domains, expanded memory chip identification to all known board revisions - Frequency display accuracy — fixed rounding errors so frequencies in the BIOS and reported to Linux match the values you
set (e.g. 2800 MHz displays as 2800, not 2801) - ACPI as default boot mode — fresh flash or NVRAM reset now defaults to ACPI instead of Device Tree
- Frequency/voltage step size — OPP entries now adjust in 10 MHz / 10 mV increments instead of 1
- Automatic Python detection — build system auto-detects python3 or python, no manual configuration needed
Important warning: While V2.1 makes overclocking much safer, you should still have an external 1.8V SPI flash programmer available as a safety net — especially if you plan to change DSU settings. Read the README carefully before changing any values.
Repo: GitHub - Neol00/edk2-cix-unlocked ( GitHub - Neol00/edk2-cix-unlocked: Custom UEFI (EDK2) firmware for the Radxa Orion O6 single board computer (CIX CD8180 / Sky1 SoC). This firmware adds a BIOS settings menu for configuring OPP (Operating Performance Point) tables and TDP power caps, allowing per-domain frequency and voltage tuning without recompiling the BIOS image. · GitHub )
The README has full build instructions, flashing guide, a detailed explanation of how the OPP patching works, overclocking safety tips, and a complete list of changes.
Feedback and testing welcome! Let me know if you run into any issues. I am very curious how high you guys can clock your CPU and still be stable, so please share your results!