Arch R v2.0 RC-1
Complete architectural rewrite. Arch R is now built on the ROCKNIX/LibreELEC embedded Linux build system instead of custom shell scripts. Every layer of the stack has been rebuilt, from the toolchain to the boot flow.
This is a release candidate. Core functionality (boot, display, controls, emulation, WiFi) has been tested on real R36S original and clone hardware. Report issues at https://github.com/archr-linux/Arch-R/issues.
Architecture Change
The entire build system has been replaced. v1.0 used a collection of shell scripts (build-all.sh, build-kernel.sh, build-rootfs.sh, etc.) that sequentially compiled each component and assembled the image. v2.0 uses the ROCKNIX/LibreELEC package build system, where every component is a declarative package with automatic dependency resolution, incremental builds, and full Docker containerization.
| v1.0 Beta 2 | v2.0 RC-1 | |
|---|---|---|
| Build system | Shell scripts (build-all.sh) | ROCKNIX/LibreELEC package system |
| Total packages | ~15 major components | 669 packages |
| Libretro cores | 18+ (manually built) | 78 (individually packaged) |
| Docker builds | Not supported | make docker-RK3326
|
| Build environment | Native cross-compile + QEMU chroot | Arch Linux Docker container |
| Incremental builds | Timestamp stamps | Deep hash stamps |
The practical difference: adding a new package, patching an emulator, or updating the kernel is now a single .mk file change instead of editing build scripts. Reproducible builds work out of the box with Docker.
Kernel
Still Linux mainline LTS (6.12 series), but now compiled through the package system instead of a standalone script. Device tree sources are managed as kernel patches with automatic Makefile registration. The initramfs is generated by the build system from BusyBox with mdev, blkid, and findfs built in.
U-Boot
Original R36S boards still use BSP U-Boot 2017.09 (required by the Rockchip boot ROM), but the build now patches board.c and hwrev.c at compile time to load DTBs from the dtbs/ directory and support FAT32 long filenames (CONFIG_SUPPORT_VFAT=y).
Clone boards use mainline U-Boot v2025.10.
Root Filesystem
Changed from SquashFS (read-only compressed, loopback mounted) to ext4 (read-write). The old SYSTEM image loopback mount has been removed. The init script now mounts the root partition directly as ext4.
Partition layout:
| Partition | Filesystem | Label | Size |
|---|---|---|---|
| 1 | FAT32 | ARCHR | 256 MB |
| 2 | ext4 | ARCHR_ROOT | 4.6 GB |
| 3 | ext4 | STORAGE | Expands to fill card |
systemd
Fully integrated. v1.0 ran systemd in a minimal configuration with most services disabled. v2.0 has proper service ordering, dependency chains, and RequiresMountsFor directives on all services that access /storage. Key services:
machine-id.service(generates on first boot, before dbus)systemd-timesyncd(NTP sync)systemd-resolved(DNS resolution with fallback servers)connman.service(network management with iwd WiFi backend)archr-autostart.service(quirks, governors, audio setup)save-sysconfig.service(settings persistence)
dbus reliability issues from v1.0 (machine-id symlink to unmounted /storage) have been resolved.
Network and WiFi
Replaced NetworkManager with Connman + iwd. iwd handles WiFi management (scanning, connecting, DHCP) while Connman provides the network abstraction layer.
New WiFi drivers included:
- AIC8800: WiFi + Bluetooth USB dongle (with firmware and udev modeswitch)
- RTL8831: WiFi 6 USB dongle
- Kernel built-in: RTW88 USB variants, RTL8192DU, RTL8XXXU
WiFi passwords with special characters ($, #, !) now work correctly. The ES WiFi menu uses single-quoted passphrase handling to prevent shell expansion.
EmulationStation
Updated to a patched fork with:
- Security hardening: shell argument escaping on all 26
executeScript()calls - Memory improvements: smart pointers for font textures, single-pass VRAM cleanup, weak_ptr race condition fix, SVG malloc replaced with std::vector
- Performance: 70+ copy-by-value loops converted to const references across SystemData, FileData, and GuiComponent
- Locale support: glibc built-in gettext detection fixed (was silently disabled in v1.0)
- Branding: all ROCKNIX references replaced
Mesa / GPU
Mesa 26.0.3 Panfrost, compiled as a package with proper sysroot handling. GLES 3.1 on the Mali-G31. No proprietary blobs.
Display Panels
Expanded from 20 to 24 panels:
- 12 original R36S panels (added Panel 6, R35S Rumble, R36S Plus, RGB20S)
- 12 clone panels (unchanged)
Panel overlays are pre-generated and included in both images. Panel selection is done via the Arch R Flasher or by manually copying the correct .dtbo to overlays/mipi-panel.dtbo.
Joypad Driver
The archr-joypad driver now uses archr-singleadc-joypad as its compatible string (matching the device tree). This was a silent breakage in v1.0 Beta 2 that caused controls to not work on some clone boards.
ZRAM
Enabled by default at 512 MB. Provides swap space without wearing the SD card.
Emulators
78 libretro cores pre-installed, covering:
NES, SNES, Game Boy, GBA, Genesis/Mega Drive, Master System, Game Gear, TurboGrafx-16, Neo Geo, Neo Geo Pocket, Atari (2600/5200/7800/Lynx/Jaguar), ColecoVision, Intellivision, MSX, Amstrad CPC, ZX Spectrum, Commodore 64, Amiga, DOS (DOSBox), ScummVM, PlayStation, N64, Dreamcast (Flycast), PSP (PPSSPP), Nintendo DS, Saturn (Yabause), Arcade (MAME, FBNeo), Wonderswan, Virtual Boy, PC Engine, and more.
32-bit ARM compatibility layer included for cores that require it (pcsx_rearmed, box86).
What Changed from v1.0 Beta 2
For users coming from v1.0 Beta 2:
- Clean flash required. The partition layout, root filesystem type, and boot flow have all changed. There is no upgrade path from v1.0.
- Panel selection is the same. Copy your panel DTBO to
overlays/mipi-panel.dtboon the BOOT partition, or use the Flasher app. - ROMs and saves from v1.0 can be copied to the STORAGE partition after flashing.
- WiFi now uses iwd instead of NetworkManager. Saved networks will need to be re-entered.
Known Issues
- Storage partition auto-expansion runs on first boot (may take a few seconds depending on SD card size).
- Some WiFi dongles may require re-plugging after first boot.
Downloads
| File | Description |
|---|---|
ArchR-R36S.aarch64-20260320-original.img.gz
| For genuine R36S, OGA, OGS, RG351V/M, Chi, R33S, XU10 |
ArchR-R36S.aarch64-20260320-clone.img.gz
| For K36 clones, RGB10/RGB10X/RGB20S, XU-Mini-M, R36Max, EE clone, G350 |
Flash with the Arch R Flasher (v1.1.0) or manually:
gunzip ArchR-R36S-*-original.img.gz
sudo dd if=ArchR-R36S-*-original.img of=/dev/sdX bs=4M status=progress
syncCredits
Built on ROCKNIX, which is built on JELOS, CoreELEC, and LibreELEC. Thanks to Hardkernel, Rockchip, Mesa, RetroArch, Libretro, and EmulationStation.