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 fallbackNot 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.dtboThe 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
| Feature | Service | Default |
|---|---|---|
| WiFi | iwd + connman | auto-on if config present |
| Bluetooth audio + gamepad | bluez | enabled |
| Local play | RetroArch netplay | UDP discovery |
| Remote play | Tailscale / ZeroTier / WireGuard | opt-in via UI |
| Sync ROMs/saves | Syncthing | opt-in |
| Web server | simple-http-server | opt-in |
| Samba (file share) | smbd + nmbd + wsdd | opt-in |
| SSH | sshd | opt-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 playFirst 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_armregulator-max bumped to 1.45 V (RK817 DCDC_REG2 spec is 1.5 V max) mali_kbasePM 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=2on microSD I/O queue (irq landing on the issuing core)- BFQ scheduler with
low_latency=1andread_ahead_kb=2048