One board, two architectures: Armbian on the Milk-V Duo S
The Milk-V Duo S is a very cheap and small board. It runs a Sophgo SG2000 with
an Arm Cortex-A53 and a RISC-V C906, 512 MB of RAM, and a physical slide switch decides which
one boots. Armbian now supports both architectures. PR #10326 landed the port (175 files) as two thin board targets – milkv-duos-arm and milkv-duos-riscv – over a single shared family include, so the bootloader pins can't drift apart. PR #10510 moved the edge branch to kernel 7.1.
Standing on the shoulders of others
There are at least 2 projects the port owes a lot to: queenkjuul/milkv-duo-ubuntu (Ubuntu on a mainline kernel 7.0, RISC-V) and Fishwaldo/sophgo-sg200x-debian (Debian sid, vendor kernel 5.10). Armbian takes the mainline route, adds arm64, and builds the entire boot chain from source: no prebuilt fip.bin.
What the patches add
Kernel (57 patches per branch, one series for both architectures – the arm64
device tree includes the RISC-V ones): thermal sensor, watchdog, PWM, eFuse, DMA, MDIO mux, I2S, mailbox, the C906L coprocessor, correct eMMC and
microSD pin muxing, USB gadget mode, ramoops, and overlays for the 26-pin header (I²C, SPI, UART, PWM) and USB device mode.
U-Boot (vendor 2021.10): distroboot: the standard armbianEnv.txt + boot.scr mechanism works and overlays are chosen at boot rather than at build (like in other implementations), plus a fix for the SD slot being powered down when empty.
1050 MHz as a default RISC-V speed. Provided by a build optionSOPHGO_CPU_OVERDRIVE.
Both bootloaders ship in every image, so one image boots from microSD or eMMC – but flashing to the eMMC still requires special treatment using sophgo-emmc-install.
./compile.sh build BOARD=milkv-duos-arm BRANCH=edge
Usage example
The board runs under 1 W, so it can make a nice always-on serial console.
milkv-duos-uart turns a Duo S into a recorder for Rockchip boards (or any others!): enable the UART2 overlay, connect three pins, and it keeps a 32 MiB RAM ring buffer you can follow, dump as history, or attachand use like a normal console. This way a guest's boot log can survive even it it dies.