yazzy

Plain ol' reading

EDK2: UEFI For The ROCK 5 ITX+

VennStone, View all posts ・ 2025-08-25 ・ interfacinglinux.com

Reddit LinkedIn

I am a huge fan of my Rock 5 ITX+. It wraps an ATX power connector, a 4-pin Molex, PoE support, 32 GB of eMMC, front-panel USB 2.0, and two Gen 3×2 M.2 slots around a Rockchip 3588 SoC that can slot into any Mini-ITX case. Thing is, I never put it in a case because the microSD slot lives on the side of the board, and pulling the case out and removing the side panel to install a new OS got old with a quickness.

I originally wanted to rackmount the critter, but adding a deracking difficulty multiplier to the microSD slot minigame seemed a bit souls-like for my taste. So what am I going to do? Grab a microSD extender and hang that out the back? Nay! I’m going to neuralyze the SPI flash and install some Kelvin Timeline firmware that will allow me to boot and install generic ARM Linux images from USB.

At least, that’s the plan 🙂


EDK2 RK3588

EDK2-RK3588 is a UEFI firmware implementation based on EDK2 for various RK3588 boards. It delivers a PC-like, standardised boot experience, supporting multiple operating systems, such as Windows, Linux, BSD, and VMware ESXi. At least, that’s what it says on the tin.

EDK2 UEFI for Rockchip 3588
EDK2 UEFI for Rockchip 3588

In a perfect world, I could write the EDK2 firmware to a microSD and try before you buy. Welp, that’s not going to work on the Rock 5 ITX+ because it’s a wee bit, what’s a polite way to put this, special. Not only does the microSD trick not work, it also refuses to let me boot the EDK2 firmware from eMMC.

Time to break out the neuralyzer!


ARMBIAN

To pull off this roundabout feat of engineering, I first need to boot the Rock 5 ITX+ to a desktop, and there is exactly one correct answer to that problem: Armbian 25.2.2 Noble Gnome with kernel 6.1.

Once booted to the desktop, it’s time to crack open a copy of Chromium, head over to the EDK2-RK3588 GitHub page, and download the latest rock-5-itx UEFI release.

EDK2 RK3588 GitHub page.
EDK2 RK3588 GitHub page.

Remember the “specialness” I talked about earlier? Yeah, the Rock 5 ITX+ exposes the SPI flash as a standard 17 MB block device, meaning I can flash the UEFI image with GNOME Disks.

Gnome disk utility.
Gnome disk utility.

Granted, I’m still flashing the SPI, so I had to remind myself not to freak out when it seized up at the start, then proceeded to write the image at the speed of smell. The whole process ended up taking about a minute.

SPI flash with Gnome disk utility.
SPI flash with Gnome disk utility.

All that’s left to do at this point is power down the system, pop out the microSD, and reapply the electrons. Saying a prayer to an elder deity is optional but highly recommended.


UEFI BOOT

After a mild panic attack, I realised the EDK2 boot screen only shows up on when connected to the first HDMI output. I was finally greeted by a Radxa splash screen, and tapping Escape got me into the setup menu.

EDK2 booting on the ROCK 5 ITX+.
EDK2 booting on the ROCK 5 ITX+.

There’s a gang of settings to play around with, but for the time being I’m only focused on one, ACPI / Device Tree.

It’s located in Device Manager > Rockchip Platform Configuration > ACPI / Device Tree. Here I could tell the Rock 5 ITX+ to boot using ACPI, Device Tree, or both.

EDK2 device tree settings.
EDK2 device tree settings.

I decided to keep the Config Table Mode set to both, with Device Tree Configuration set to Mainline, and DTB override and firmware fixups enabled.


GENERIC ARM LINUX

The whole point of this experiment was to be able to download generic ARM images for any distribution and install them as I would on my x86-64 desktop PC. The thing is, there’s a miniboss hiding in plain sight on the EDK2-RK3588 GitHub page.

Kernel 6.15 requirement.
Kernel 6.15 requirement.

Basically, if I want a hardware-accelerated desktop (or anything else), I’m going to need a distribution shipping with kernel 6.15+, and while that might seem comical to anyone reading from the future, Debian 13 was released this week and it’s rocking 6.12.

Limited by the technology of my time.
Limited by the technology of my time.

The kernel 6.15+ requirement rules out the current releases of Armbian, openSUSE, Ubuntu, and Fedora. Thankfully, both Ubuntu (Daily) and Fedora (Rawhide) have bleeding-edge builds, so I’m crossing my pinky toes, hoping that one of them works.


FEDORA RAWHIDE

If you haven’t heard of Rawhide, it’s bleeding-edge Fedora, aimed at advanced users, testers, and anyone trying to shove Fedora onto an ARM SBC running EDK2 firmware in the glorious year of his noodly appendage, 2025.

Out of the gate, Fedora was being fussy, requiring me to switch the Config Table to Device Tree just to get a display. Even then, it took a reboot (or two) before finally gracing me with display output.

EDK2 settings.
EDK2 settings.

Once I defeated GRUB, it was smooth sailing. Pick a language, select the installation drive, agree to murderate some databits, and exit to the desktop. All that’s left to do is power off the system, remove the flash drive, and reapply the electrons.

Fedora Rawhide installer.
Fedora Rawhide installer.

After the reboot, I was greeted by a non-functioning GNOME desktop. Well, it wasn’t completely broken, as I could wiggle the mouse pointer, and that is how things remained until Mr 🙁 showed up.

Fedora Rawhide crash.
Fedora Rawhide crash.

One of the superpowers you develop while working with ARM SBCs is the ability to get up and walk away in case it’s having an extended think, knowing the solution is simply to wait it out.

After however long it took me to make a cup of tea, I came back to a task failed successfully and was finally able to complete the setup.

Fedora Rawhide installer.
Fedora Rawhide installer.

A quick poke around the GNOME Control Center revealed that networking, power, and display options were intact and operational.

GNOME network settings.
GNOME network settings.

Then I clicked on sound. I’m going to assume this is solvable by enabling some third-party repository, but that’s for someone else to figure out.

GNOME volume control.
GNOME volume control.

UBUNTU 25.10

I’ve talked an egregious amount of smack about Ubuntu over the decades, 73.6% of it deserved, but credit where it’s due: they’ve put serious time and energy into making their desktop work on both ARM and RISC-V.

So I wasn’t terribly surprised that GRUB appeared after I reset the EDK2 firmware to its defaults, followed by the installer’s splash screen.

Ubuntu 25.10 GRUB menu.
Ubuntu 25.10 GRUB menu.

If you have installed Ubuntu before, there is nothing of note here. Like Fedora, it offered the option to install the system on NVMe or eMMC, along with settings to enable third-party repositories.

Ubuntu 25.10 installer.
Ubuntu 25.10 installer.

Another rummage in the GNOME Control Center revealed that networking, power, and display options were intact and operational. Unlike Fedora, Ubuntu dispelled the myth that sound does not work on Linux. At least on ARM, out of the box… on a bleeding edge distro.

GNOME network panel
GNOME network panel

I also want to point out that Vulkan worked on both Ubuntu 25.10 and Fedora Rawhide. The open-source drivers still have some catching up to do, but they are most certainly getting there and are more than enough to provide a smooth desktop experience.

vkmark2 on rockchip 3588 open-source drivers
vkmark2 on rockchip 3588 open-source drivers

NETBSD?

I also grabbed a copy of NetBSD daily, and it booted right up. I didn’t bother trying to install it, but it picked up the ethernoodles, so you could probably get up to, something?

NetBSD booting.
NetBSD booting.

VERDICT

This all started because I wanted to put the Rock 5 ITX+ into a rackmount case and have a way to swap out the OS without pulling it from the rack and fiddling with the SD card. And yes, while writing this, all I can think about is how long it will take for someone to point out the existence of SD card extenders in the YouTube comments.

I won’t fault them for doing so. A simple SD extender plus a little arts and crafts with a Dremel would have been my solution if I needed a working fix yesterday.

But I really wanted to see where EDK2 RK3588 stands, since Collabora is hard at work upstreaming support for the RK3588 to the Linux kernel, and that’s going to be the SoC where everything JustWorks™ in a year or so.

Right now, EDK2 + RK3588 isn’t there yet, but it’s not that far off either. It’s the worst of all states, kinda works if you squint a little. The big hangup is kernel 6.15, but that only matters if you need HDMI output with hardware acceleration. Building a headless fileserver? You’re already good to go.

It looks like the Rock 5 ITX+ has escaped the rack, for now.


PRODUCT LINKS

All the links in this article go directly to the sources they reference. There are no affiliate links and no backlinks to unrelated articles because I absolutely loathe how common that has become. If you want to support Interfacing Linux, you can use the affiliate links listed below or join the Patreon.


Some posts contain affiliate links. If you click on an affiliate link and later make a purchase, I may receive a small commission.

Have questions about your Linux setup? Ask in the forums.