Skip to content

Instantly share code, notes, and snippets.

@csgordon
Last active August 4, 2024 01:40
Show Gist options
  • Save csgordon/9e715afba4af29425f0dca8eac200936 to your computer and use it in GitHub Desktop.
Save csgordon/9e715afba4af29425f0dca8eac200936 to your computer and use it in GitHub Desktop.
Notes on running with the Radxa Zero 3w

Available Images

SD Card Boot

If you only want an SD card boot, burning an SD card as with classic (pre-5) Raspberry Pis and other SBCs is sufficient.

eMMC Boot

You first need to download and install different firmware, to tell the machine to boot from eMMC. I used https://dl.radxa.com/rock3/images/loader/rock-3a/rk356x_spl_loader_ddr1056_v1.10.111.bin. The official link used to be quite hard to find, but this is now linked directly from https://docs.radxa.com/en/zero/zero3/low-level-dev/rkdeveloptool (Check which ROCK family your CPU is from!)

You'll also need your preferred image, decompressed.

rkdevelop(tool)

Radxa has multiple tools for installing to eMMC. Windows has rkdevtool. MacOS and Linux have rkdeveloptool. I don't use Windows, so what follows is the instructions from the rkdeveloptool page:

sudo rkdeveloptool db <loader>
sudo rkdeveloptool wl 0 <image>

The db line installs the SPL image. The second line writes the actual OS image to eMMC, and if you later install a different image, only the second line is required. The loader and OS images must be decompressed.

Some people have reported only needing to write the bootloader once. But I personally have had issues where rkdeveloptool will refuse to write a new image to eMMC without also re-imaging the bootloader immediately beforehand.

Supposedly a Zero 3w in maskrom mode should show up as an external USB storage device under Linux, in which case typical steps for blasting an image to storage (dd, balenaEtcher, etc.) should work.

UART Serial

Getting a serial console on the Radxa Zero 3w is well-documented, but doesn't work with all USB TTL adapters, because the firmware is set to use a dramatically higher baud rate than standard, and not all adapters support this. In particular, the general standard is 115200, but the hardware uses 1500000 (over 10x higher)!

Armbian

The first few times I walked away from my system running Armbian and came back, the screen was black and I could not wake it up. This appears to be a weird configuration quirk of Armbian's XFCE build, at least for this board. XFCE's power settings were configured to blank the screen after 10 minutes, but there was no program to handle a "wake-up call." For now I've fixed this by turning on xscreensaver, which was off by default.

One other thing I have only partially gotten working is USB gadget mode. I bought this board hoping to do something like https://taoofmac.com/space/blog/2023/10/07/1830 so I could bring a small Linux machine with me when I traveled to conferences (lots of research software only works on Linux, and I'm sick of fighting with emulation). While that post repeats the same general guidance as the Radxa wiki and reports doing this for Armbian (on the original Radxa Zero), it doesn't work with my mac as a client. I haven't had time to dig into whether this is an issue on the Armbian side or the Mac side. I've seen a couple random posts mention something about enabling the USB port in armbian-config, but I don't see a relevant setting there. Don't have time to try it while writing these notes, but it is also possible I may need to fiddle with the device tree node to explicitly set that port to OTG (e.g., https://variwiki.com/index.php?title=Linux_USB_OTG&release=am62-yocto-dunfell-5.10.140_08.06.00.42-v1.0), though I would have expected that to be the default on this board's DTB.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment