github archr-linux/Arch-R v2.0-rc1
Arch R v2.0 RC-1

10 hours ago

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.dtbo on 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
sync

Credits

Built on ROCKNIX, which is built on JELOS, CoreELEC, and LibreELEC. Thanks to Hardkernel, Rockchip, Mesa, RetroArch, Libretro, and EmulationStation.

Don't miss a new Arch-R release

NewReleases is sending notifications on new releases.