Installation
ArchR Flasher GUI or manual dd
You only need a microSD card (8 GB or more, 16 GB recommended) and a few minutes. The recommended path is the ArchR Flasher: it downloads the right image variant for your board, installs the panel overlay you generated on the site, and reads the card back to verify the write.
Option 1, ArchR Flasher (recommended)
The Flasher is a small desktop app (Tauri) that downloads the latest release, writes the SD card, installs your panel overlay and verifies the write. Available for Linux, macOS and Windows.
The overlay is no longer bundled with the image. You build it once for your board on the Overlay Generator and hand the resulting mipi-panel.dtbo to the Flasher.
Download the Flasher
Get the latest release from archr-flasher releases.
- Linux:
.AppImage(no install) or.debfor Debian/Ubuntu/derivatives - macOS:
.dmg - Windows:
.msiinstaller
Plug your microSD
8 GB or larger. The Flasher will erase everything on the card before writing, back up anything you need first.
Pick your console
The first screen asks which console you have: R36S Original, R36S Clone or R36S Soysauce. That choice decides which of the two images is downloaded, and it is also the option string the Overlay Generator expects.
Pick the image
Let the Flasher download the latest release, or point it at an .img.gz you already have.
Pick the panel overlay
Generate mipi-panel.dtbo for your board on the Overlay Generator, then select the file here. The Flasher copies it to overlays/mipi-panel.dtbo on the boot partition after writing the image.
You can skip this step, but then the console boots with the panel description that comes in the base device tree, which only works on some boards. A blank or scrambled screen after the boot logo means you need the overlay.
Generate the overlay from the .dtb of your console's own original card. A .dtb taken from dArkOS, ArkOS RE, ArkOS4Clones or any other system describes a different setup and will not match your hardware.
Write
Pick the SD card and click Flash. The Flasher measures the card speed, wipes the card, writes the image, installs the overlay, and (if Verify after writing is on) reads the card back and compares its SHA-256 against the image.
Verification adds a minute or two and is what catches a bad card or a truncated write.
Boot
Insert the SD into the device, power on. First boot does an automatic partition resize and reboots once, total ~30 s. After the second boot you land in EmulationStation.
Option 2, Manual dd
If you prefer the command line or are on Windows (use Rufus, Etcher, or the Raspberry Pi Imager equivalent).
Download an image
From Arch-R releases grab one of:
<Ver of="imageBase" />-original.img.gz, for the original boards<Ver of="imageBase" />-clone.img.gz, for clone boards
The date in the filename is the release date, so a newer release has a different name.
Decompress
gunzip ArchR-R36S.aarch64-*.img.gzIdentify the SD device
lsblk
# look for your card, usually /dev/sdX or /dev/mmcblkXDouble-check the device path. Writing to the wrong disk will erase it.
Write
sudo dd if=ArchR-R36S.aarch64-*.img of=/dev/sdX bs=4M conv=fsync status=progress
syncInstall the panel overlay
The image ships no panel overlay. Generate mipi-panel.dtbo for your board on the Overlay Generator, then copy it into the boot partition:
sudo mount /dev/sdX1 /mnt
sudo cp mipi-panel.dtbo /mnt/overlays/mipi-panel.dtbo
sudo umount /mntThe path and filename are fixed: extlinux.conf loads FDTOVERLAYS /overlays/mipi-panel.dtbo and nothing else. A file saved anywhere else is never read.
Boot
Insert and power on. First boot resizes and reboots; second boot reaches ES.
First boot
After flashing, the first power-on does the following automatically and then reboots:
1. parted resizepart -> /storage uses the full SD
2. e2fsck + resize2fs -> ext4 filesystem grows
3. tune2fs -U random -> fresh filesystem UUID
4. fatlabel -i -r -> fresh volume ID on the boot partition
5. rebootThe resize log lives at /flash/fs-resize.log if you ever need to inspect it.
The second boot creates ROM directories (one per system) and lands in EmulationStation. From there you can add ROMs and enable SSH.
Variants explained
| Variant | U-Boot | Device trees in the image |
|---|---|---|
original | Rockchip BSP loader | R36S, R36S Soysauce, R33S, Odroid Go Advance (and the v11 board), Odroid Go Super, Anbernic RG351M, Anbernic RG351V, GameForce Chi, MagicX XU10, Powkiddy RGB10 |
clone | Mainline v2025.10 | Generic R36S clone (K36 and similar), Powkiddy RGB10X, MagicX XU-Mini-M, Odroid Go Advance |
The two images differ in the bootloader and in the device trees they carry. Kernel, rootfs, RetroArch and EmulationStation are identical.
Panel overlay generator
The Overlay Generator builds mipi-panel.dtbo from the DTB of your console's original firmware. It runs entirely in your browser, but it has to download a WebAssembly Python runtime of about 8.6 MB first. On a slow or filtered connection that download may never finish and the page stays stuck asking you to reload.
The offline edition is the same generator packaged as a terminal script, about 100 KB, with no runtime to download.
Download the bundle
Grab archr-dtbo-offline.zip (about 100 KB) and extract it anywhere.
Everything it needs travels inside it:
archr_dtbo.py, the same script the website runsarchr-bases/, the three base DTBs the generator mirrors fromfdt/, the device tree library (pure Python, BSD licensed)generate.sh(Linux, macOS) andgenerate.bat(Windows)README.txt
Check Python
Python 3.5 or newer is the only requirement. No pip, no network access.
python3 --version # Linux / macOS
python --version # WindowsOn Windows, install it from python.org and tick Add python.exe to PATH during setup.
Do not run pip install fdt. The library is already in the folder, and the bundle is meant to work with no network at all.
Generate the overlay
Open a terminal in the extracted folder and run:
# Linux / macOS
python3 archr_dtbo.py rk3326-r36s-linux.dtb SDORIG -o mipi-panel.dtbo
# Windows
python archr_dtbo.py rk3326-r36s-linux.dtb SDORIG -o mipi-panel.dtboFirst argument: the DTB from your console's original firmware. Second: the option string for your console (see the table below). -o: where the overlay is written; without it the overlay goes to standard output.
The generate.sh and generate.bat wrappers do exactly the same thing. On Linux and macOS the wrapper may need its executable bit back if your unzip tool dropped it: chmod +x generate.sh.
Install the result
Copy the generated file to the ARCHR partition of the card as overlays/mipi-panel.dtbo. That exact folder and filename is what extlinux.conf already points at (FDTOVERLAYS /overlays/mipi-panel.dtbo), so there is nothing else to configure. An overlay saved under a different name, or in a different folder, is simply never loaded and the console still boots to a blank screen.
Console option strings
| Option string | Console |
|---|---|
SDORIG | R36S Original |
SDCLONE | R36S Clone |
SDORIG-NAm | R36S Soysauce |
Extra flags are appended with a dash, exactly as the website builds them, for example SDCLONE-LSi. If you don't know your string, open the Overlay Generator on any working connection, pick your options and copy the string it shows.
Common errors
| Message | What it means |
|---|---|
python: command not found, 'python' is not recognized | Python is missing or not on PATH. On some Linux systems the command is python3, not python. |
No module named 'fdt' | The script was moved out of the folder. Keep archr_dtbo.py, fdt/ and archr-bases/ together. |
anti-gap: base not available | The archr-bases folder is missing or was moved. The overlay is still produced, but without the pass that fills in board details from the matching ArchR base. |
Troubleshooting
Black screen after the boot logo. Wrong or missing panel overlay. Generate the overlay again from your console's own original .dtb and copy it to /flash/overlays/mipi-panel.dtbo, or use the Overlay tab of the Flasher, which writes it to a card that is already flashed.
Boot loops or hangs after first reboot. Capture cat /storage/.boot_last_hang after the eventual successful boot, it names the script that hung. See Troubleshooting.
"BOOT FAILED" on a clone device with the original image. You picked the wrong variant. Use the clone image.
Flasher says "image checksum mismatch". The download was corrupt. Click "Flash" again; the Flasher re-downloads and retries.