ARCH R

Features

Hardware specs, software stack, and what's pre-installed

Hardware

SoC          Rockchip RK3326 (4× Cortex-A35, in-order dual-issue)
CPU          1416 MHz default · 1512 MHz with "Enable CPU Overclock"
GPU          Mali-G31 MP2 (Bifrost), pinned at 650 MHz during gameplay
DRAM         1 GB DDR3L @ 924 MHz
Display      640×480 MIPI DSI (43 panel revisions covered)
Audio        RK817 codec, speaker, headphone jack, USB audio, HDMI audio
Network      WiFi 802.11n + Bluetooth (RTL/AP6611S/etc.), auto-detect
Battery      3200 mAh (rk817-battery + rk817-charger), LED warning at low
Storage      microSD (hot-swap supported, image works on any size 8 GB+)

Software stack

Kernel       6.12 LTS (BSP fork, board auto-detect via SARADC)
GPU driver   Panfrost (default) or libmali (toggle in ES)
              ├─ Mesa 26.0.5 with +speed +lto, NEON-optimised
              └─ zlib-ng for SIMD inflate/deflate (ROM zip 10–30% faster)
Init         systemd 255
Frontend     EmulationStation
Backend      RetroArch + 18 standalone emulators
Shell        bash + GNU coreutils (full PortMaster compatibility)

CMA: 96 MB (raised from 64 MB after audit found V4L2/Mali allocations were tight in idle).

ZRAM: 512 MB lzo-rle (chosen over zstd because Cortex-A35 in-order runs lzo-rle 3–4× faster).


Pre-installed emulators

SNES, NES, GB/GBC/GBA, NDS, MD, MS, GG, PCE, NeoGeo, Atari (2600/5200/7800/Lynx/Jaguar),
WonderSwan, PC-FX, ColecoVision, Intellivision, Vectrex, ScummVM, DOS

PSX           pcsx_rearmed (default), beetle_psx_hw, swanstation, duckstation (software)
N64           Mupen64Plus standalone (GLideN64 performance / Rice fallback)
PSP           PPSSPP standalone (frameskip 3, FPS cap 30, GLTHREAD on)
Dreamcast     Flycast standalone (240 res, threaded rendering, GLTHREAD on)
Saturn        yabasanshiro standalone (experimental on A35)
Arcade        MAME 2003+, FBNeo, FBA-CPS1/CPS2/Neogeo
NDS           DraStic (default), melonDS as fallback

Not included on RK3326: GameCube, Wii, Wii U: Cortex-A35 doesn't run them at usable framerates, so they're hidden from the menu.


Display panels

43 pre-generated MIPI panel overlays:

  • 15 original (R36S V20–V22 board revisions, OGS variants)
  • 18 clone (K36, R33S, RX6S, R36 Max, multiple panel families)
  • 10 soysauce (Y3506-based hardware)

Overlay names mirror the motherboard revision exactly:

R36S-V21_2024-12-18_2551.dtbo
G80CA-MB_V1.3-20251212_Panel_8.dtbo
RX6S-2024_05_15-Panel_5.dtbo

The panel overlay is selected by the ArchR Flasher at write time. The same image works on every board of a variant; only the overlay differs per panel.


Network features

FeatureServiceDefault
WiFiiwd + connmanauto-on if config present
Bluetooth audio + gamepadbluezenabled
Local playRetroArch netplayUDP discovery
Remote playTailscale / ZeroTier / WireGuardopt-in via UI
Sync ROMs/savesSyncthingopt-in
Web serversimple-http-serveropt-in
Samba (file share)smbd + nmbd + wsddopt-in
SSHsshdopt-in (ES toggle)

All "opt-in" services are paused automatically during gameplay so they don't compete with the emulator for CPU cycles.


Boot timeline

0.0 s    U-Boot start
0.7 s    Initramfs splash + DTB selection
~7 s     Kernel hand-off
~9 s     systemd target
~12 s    archr-autostart (quirks + governor + display)
~17 s    EmulationStation
~19 s    Ready to play

First boot adds ~10 s for the partition resize and creates ROM directories, only on the very first power-on after flashing.


What's tuned for the RK3326

Highlights of the RK3326-specific work (full list in Technical):

  • GPU OPP 650 MHz turbo at 1.150 V (same voltage as 600 MHz, avoided the original BSP 1.175 V which was unstable on some chips)
  • CPU OPP 1512 MHz at 1.400 V with vdd_arm regulator-max bumped to 1.45 V (RK817 DCDC_REG2 spec is 1.5 V max)
  • mali_kbase PM patch, eliminates the regulator/clock unbalance warnings that were causing audio crackle in Mario 64
  • BOOT partition 272 MB FAT32 with 4 KB clusters (above 65525 spec minimum + boot sector & backup auto-synced)
  • rq_affinity=2 on microSD I/O queue (irq landing on the issuing core)
  • BFQ scheduler with low_latency=1 and read_ahead_kb=2048

On this page