Ah, sorry, I misunderstood how U-Boot is configured.
Yes, U-Boot tries to load the next stage (e.g., boot.scr and kernel.img on an OpenWrt image) from mmc1 (SD) first, then mmc0 (eMMC).
Kernel tries to mount rootfs by UUID, so UUID needs to be unique.
Boot order on bootrom (in Rockchip CPU) is fixed, generally it loads TPL/SPL from SPI > eMMC > SD (> USB).
Boot order on SPL (from U-Boot) can be vary, generally it is configured to load U-Boot proper from "same-as-spl" > SD > eMMC.
Boot order on U-Boot proper can be vary, generally it is configured to load "next thing" from mmc1 > mmc0 > nvme > scsi > usb > pxe > dhcp > spi.
Boot order on "next thing" depends on how it works, e.g. root= bootargs for Linux kernel.
I guess TPL/SPL/U-Boot are loaded from eMMC, then U-Boot loads "next thing" from SD first.
Openwrt is strict on following manufacturer guidelines which is to always disable 1 cluster of the a76 cores. You could apply this patch to your build from ImmortalWRT.
True, sorry I should have clarified this in my reply.
My e52c have an additonal A76 core working more-or-less, but its not within specs, as it either scales to its min or max frequency, not in-between, so theres a reason why they’re disabled in the first place.
Even after sysupgrade -n and new config owut and attended sysupgrade complain:
ERROR: sysupgrade validation failed: stderr = Wed Dec 3 12:30:44 GMT 2025 upgrade: The device is supported, but the config is incompatible to the new image (1.0->1.1). Please upgrade without keeping config (sysupgrade -n). Wed Dec 3 12:30:44 GMT 2025 upgrade: Network interface names have been changed Wed Dec 3 12:30:44 GMT 2025 upgrade: Reading partition table from bootdisk... zcat: write error: Broken pipe zcat: write: Broken pipe Wed Dec 3 12:30:44 GMT 2025 upgrade: Reading partition table from image... Image check failed.
there are some errors in kernel log, tested on a couple of snapshots:
Wed Dec 3 12:30:44 GMT 2025 upgrade: The device is supported, but the config is incompatible to the new image (1.0->1.1). Please upgrade without keeping config (sysupgrade -n). Wed Dec 3 12:30:44 GMT 2025 upgrade: Network interface names have been changed
The network interface names change from eth0 and eth1 to lan / wan recently on master, so you can’t restore your config as-is, you can try to download the backup file and edit the revelant config files, or re-configure from scratch.
It would be nice to see it in the next Openwrt release, i guess 24.10.5?
As for the mentioned problems…
First with sysupgrade was solved by adding “option compat_version '1.1'“ to the /etc/config/system. Solution was found in this thread: "The device is supported, but this image is incompatible for sysupgrade"
Without that, owut and attended sysupgrade would fail and had to be forced to install.
I don’t know much about the OpenWRT upgrade mechanism but seems to me that sysupgrade doesn’t know that the current config is compatible with the new interface names. I would expect that after first snapshot has been installed without keeping the config that check is not necessary anymore. I even reflashed the sdcard to be sure no config file survived but the problem was still there. Solved now
Second problem, that warning in dmesg about “gic_populate_ppi_partitions”, it seems to not affect any router function. Does it need to be reported as bug and where, openwrt team or upstream (Radxa, linux kernel,…)?
I just followed this guide on the Radxa website, flashed the OpenWrt img file on the eMMC, but still mostly use OpenWrt from the SD card. The boot order remained the same, namely SD > eMMC.
Never tried an update on the eMMC, so can’t comment on that one.
If you have (or flashed) something including U-Boot on eMMC, U-Boot is loaded from eMMC. Then, U-Boot loads OpenWrt (or something) from microSD card if available.
Please see messages on serial console carefully. I don't understand what the problem is.
Hi,
Yes exactly that commit
Sorry i regularly check git, but that somehow slipped through without me noticing!
I looked at the guide on the official website, and that’s where it states to use rkdeveloptool, a loader then the img file.
I just created a new snapshot build, how would i dd it to the eMMC ?
I have openwrt-rockchip-armv8-radxa_e52c-squashfs-sysupgrade.img,
and an untouched iStoreOS partition scheme.
mmcblk0 179:32 0 14.7G 0 disk
├─mmcblk0p1 179:33 0 64M 0 part
├─mmcblk0p2 179:34 0 256M 0 part
└─mmcblk0p3 179:35 0 2G 0 part
EDIT: ignore me, i figured it out
Thank you for the idea, that’s easier than rkdeveloptool.
Ok guys, it would really be nice if we had official page for this device
Then maybe i would not have to follow the guide on the Radxa site to flash on emmc with that preloader image. It was not hard, but what was a PITA is to crimp the two halves of some old USB cables to make the USB A-A cable needed for the flash
Thank you for your time and support for this device.
Do you maybe know why the SOC is not scaling under 1Ghz?
Is it because vendor Radxa BL and kernel or is it openwrt specific?
More standard linux distributions (I did try Armbian) allow the CPU to scale all the way down to 408 MHz. In idle my device is running around 4-5 °C cooler than in openwrt.
I can understand if it is some Openwrt specific thing, perhaps to lower some latency when CPU has to ramp up under load?
Current temps in stable 24 °C environment, device idle, latest Openwrt snapshot:
root@E52C_SD:~# sensors | grep "°C" | sort
Big Core 0: +45.3°C
Big Core 2: +45.3°C
Little Cores: +45.3°C
RTL8125 Port 1: +50.5°C (high = +120.0°C)
RTL8125 Port 2: +50.5°C (high = +120.0°C)
SoC Center: +45.3°C
SoC Package: +44.4°C