github archr-linux/Arch-R v2.0-rc3
Arch R v2.0 RC-3

4 hours ago

Arch R v2.0 RC-3

Major release focused on CPU performance, graphics stack maturity, and system reliability. Built as official image on 2026-04-29, validated on real R36S hardware (V21 board) across the full v2-v27 internal build series.

CPU Overclock toggle — 1.4 GHz → 1.5 GHz on demand

A new Enable CPU Overclock switch in the ES menu (System Settings → Performance) lifts the cap from 1416 MHz to 1512 MHz when you need it. Default is OFF — cooler, longer battery life. Flip it on for PSP / Dreamcast / box86 ports that want every Hz.

Behind the scenes:

  • DT OPP 1512 MHz validated stable at 1.4 V (BSP default 1.35 V was unreliable on some chips)
  • vdd_arm regulator-max raised 1.35 V → 1.45 V (RK817 DCDC_REG2 spec is 0.7-1.5 V) — without this the kernel rejects the OPP silently
  • set_cpu_max_freq highest reads scaling_available + scaling_boost frequencies — turbo OPPs hide in the second file even after cpufreq/boost=1
  • /usr/bin/turbomode rewritten — no longer forces governor=performance on every toggle

GPU stack

  • Mesa 26.0.5 with +speed +lto build flags
  • 7 drm-panfrost patches backported from mainline (SYSTEM_TIMESTAMP, cycle counter, BO labelling) — required by Mesa 26 for GL_TIMESTAMP and VK_KHR_calibrated_timestamps
  • GPU OPP 650 MHz turbo at 1.150 V (same voltage as 600 MHz — the BSP value of 1.175 V was triggering reboots on some chips)
  • mali_kbase PM patch (002-fix-unbalanced-regulator-clk-pm) — eliminates unbalanced disables for vdd_logic and Enabling unprepared clk_gpu warnings, fixes audio crackle in Mario 64
  • gpudriver --start auto-fallback — if Panfrost or libmali fails to bind, the script switches to the other driver so you always get a graphical system
  • MESA_GLTHREAD per-emulator whitelist — enabled on Flycast and PPSSPP standalone (GPU-bound + multi-threaded internally), kept off elsewhere to avoid regressing fence-heavy 2D libretro cores

Performance

  • zlib-ng 2.2.4 as drop-in for zlib (libz.so.1 ABI preserved) — NEON SIMD inflate/deflate, ~10-30 % faster ROM zip extraction on Cortex-A35
  • CMA raised 64 → 96 MBCmaFree was 8 MB at idle on 64 MB (87 % used), V4L2 and Mali surface allocations were tight; now ~30 MB free
  • KSM paused during gameplayrunemu.sh saves /sys/kernel/mm/ksm/run, sets to 0, restores on exit. Eliminates p99 frametime spikes from KSM scanning on Cortex-A35 in-order
  • CPU governor + boost restore on game exitquit() is defensive (falls back to ondemand if system.cpugovernor is empty); turbo state is persisted per the user's switch

Boot reliability

  • archr-autostart.service TimeoutStartSec=60s — if any quirk script hangs, emustation comes up anyway instead of blocking forever
  • drm_tool list with 10 s timeout in 055-hdmi-check — was a known cause of intermittent boot stalls on slow microSDs
  • Persistent boot trace at /storage/.boot_last_step and /storage/.boot_last_hang — if your device ever hangs at boot, after the next successful boot cat /storage/.boot_last_hang names the script that hung. Useful for bug reports.

Emulator tuning

  • GBA: gpsp default on RK3326 (was mGBA — too heavy for A35); mGBA stays as accuracy alternative
  • GameCube / Wii / Wiiware hidden from ES on RK3326 — Cortex-A35 doesn't run them at usable framerates, the menu now reflects that honestly
  • gptokeyb kill made defensive in 5 standalone start scripts (drastic, flycast, melonds, dolphin_gc, dolphin_wii) — no more spurious errors when pidof returns empty
  • PPSSPP, Flycast, DuckStation, Mupen64Plus defaults retuned per RK3326 — see docs.archr.io/configure for the full matrix

Network

  • VPN service auto-pause during gameplay — Tailscale, ZeroTier, WireGuard, simple-http-server all suspended on game launch, resumed on exit. No CPU contention, no WiFi airtime competition
  • ConditionPathExists= added to syncthing, tailscaled, zerotier-one, simple-http-server — opt-in services don't accidentally start without the toggle file
  • systemd-timesyncd poll preguiçosoPollIntervalMaxSec=86400 (24 h), daemon idles after first sync and gets paged out of RAM

PortMaster

  • Python3 + xz as explicit dependencies — PortMaster GUI (harbourmaster) needs import lzma; previously implicit and could fail
  • start_portmaster.sh made idempotentrm -rf + existence guards, no more "directory not empty" errors on second run
  • udev rule 91-uinput.rules/dev/uinput mode 0666, so gptokeyb works under the archr user without manual chmod per port

Bug fixes

  • fs-resize corruption — earlier RC3 internal builds tried to "modernize" the BOOT FAT (4 KB clusters, fsck.fat -a -w after fatlabel) and ended up triggering "Filesystem corruption has been detected!" on the device. Reverted to the v22 baseline that ships clean
  • gpudriver typo (DTB_OVERLAY=""DTB_OVERLAY_LOAD="") caused brick when the user picked Panfrost on devices without an overlay
  • runemu.sh exit governor — was leaving CPU pinned at performance after game exit when system.cpugovernor was unset
  • DT patch hunk count corrected — a wrong @@ header was making patch silently drop subsequent hunks (the dmc node was missing in v10 builds)

Documentation

  • Website (https://arch-r.io) reorganised: 17 docs across 5 sections, including new guides for ROMs, Controls, PortMaster, SSH, Samba, Netplay, RetroAchievements, Cloud Sync (Syncthing + rclone + NFS), VPN, Themes, Shaders, HDMI, CPU Overclock, GPU driver
  • Light theme added to the website (toggle in the nav bar)
  • SEO baseline — sitemap, robots.txt, OG images, JSON-LD (Organization + WebSite + SoftwareApplication)

Installation

Download the image for your R36S variant and flash it using Arch R Flasher v1.3.0 or any SD card imaging tool.

  • R36S Original: ArchR-R36S.aarch64-20260429-RC3-original.img.gz
  • R36S Clone (K36, EE Clone, Powkiddy RGB10/RGB10X/RGB20S, MagicX XU-Mini-M, BatLexp G350): ArchR-R36S.aarch64-20260429-RC3-clone.img.gz
  • R36S Soysauce (Y3506-based hardware): use the original image; the Flasher selects the correct soysauce panel overlay automatically

Checksums (SHA-256)

  ArchR-R36S.aarch64-20260429-RC3-original.img.gz
  ArchR-R36S.aarch64-20260429-RC3-clone.img.gz

Report issues at https://github.com/archr-linux/Arch-R/issues

Don't miss a new Arch-R release

NewReleases is sending notifications on new releases.