Installation
ArchR Flasher GUI or manual dd
You only need a microSD card (32 GB or more recommended; 8 GB minimum). 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 can verify the written data.
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 can verify 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
32 GB or larger is recommended, 8 GB is the minimum. On 32 GB and up, the first boot creates ARCHR_ROMS, an exFAT partition for the ROMs that opens on any computer. Cards of 16 GB or less have no room for it: everything works, but the ROMs stay inside the ext4 STORAGE partition, reachable from a PC only over the network (Samba or SSH).
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 installs it as overlays/mipi-panel.dtbo on the boot partition.
You can skip this step on Linux, macOS and Windows. The Flasher then copies no overlay and keeps the image's panel configuration. If you select a file that is missing or cannot be read, flashing stops before writing to the card.
Without an overlay, 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 usually 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 writes the image, optionally verifies the written data (Verify after writing), and installs the selected overlay. Verification and preparation details vary by operating system.
Verification takes extra time and helps catch a bad card or a truncated write.
Boot
Insert the SD into the device and power on. The first boot does an automatic partition resize and reboots once. After the second boot you land in archr-launcher.
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.
Verify and decompress
Verify the downloaded .img.gz against its checksum before decompressing and writing. This verifies the download, not the written card.
# replace <date> with the real file name
sha256sum -c ArchR-R36S.aarch64-<date>.img.gz.sha256
gunzip ArchR-R36S.aarch64-<date>.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
Use the exact filename of the selected image in if=, not a wildcard, and verify the destination disk.
# replace <date> and /dev/sdX
sudo dd if=ArchR-R36S.aarch64-<date>.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 archr-launcher.
First boot
After flashing, the first power-on does the following automatically and then reboots:
1. parted resizepart -> /storage grows (to the full SD, or to 8 GiB)
2. e2fsck + resize2fs -> ext4 filesystem grows
3. ARCHR_ROMS -> exFAT partition with the rest of the card, if there is room
4. tune2fs -U random -> fresh filesystem UUID
5. fatlabel -i -r -> fresh volume ID on the boot partition
6. rebootThe exFAT ARCHR_ROMS partition holds the ROMs and is mounted on /storage/roms; Windows, macOS and Linux can read it with the card in a PC. A card too small for both (16 GB or less) keeps the old layout, with STORAGE taking the whole card. See Adding ROMs.
The 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 archr-launcher. 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 archr-launcher 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
A current Python 3 release is the only requirement (Python 3.5 is not compatible). 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.
When your DTB differs from the ArchR base
Some settings can differ between the ArchR base and your stock DTB: a LED pin, the stick range, the panel reset pin, the PMIC interrupt. On the website the generator lists every difference before it writes the overlay, with both values side by side, and you pick which one to keep for each. The stock value is selected by default, since it describes your board. Keep the ArchR value when the stock one is known to be wrong, for example a LED on a pin that lights nothing.
In the offline edition, --list prints the differences, and --keep-base takes the keys to keep on the ArchR value, separated by commas:
python3 archr_dtbo.py rk3326-r36s-linux.dtb SDCLONE --list
python3 archr_dtbo.py rk3326-r36s-linux.dtb SDCLONE --keep-base joypad/abs_ry-p-tuning -o mipi-panel.dtboInstall 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 |
SDRG351V | Anbernic RG351V (panel only, on the RG351V base) |
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. Often a 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.
R36S Soysauce Y3506 V06 (boards from 2026) with a black screen. Its new panel has a standby pin that overlays made before 2026-11-12 leave asleep. Generate the overlay again from the console's original .dtb, with R36S Soysauce chosen.
Boot loops or hangs after first reboot. For first-boot resizing, inspect /flash/fs-resize.log. /storage/.boot_last_hang records the last traced step of an interrupted autostart run; it can be stale and does not prove which script caused the failure. 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.