Arch R Flasher
Flash. Select panel. Play.
Cross-platform desktop app for flashing Arch R onto R36S and clone gaming consoles. Handles image download, SD card writing, and display panel configuration in one step.
Features
- Two tabs: Flash (full image write) and Overlay (change panel on existing SD)
- 24 display panels: 12 original R36S + 12 clone variants, data-driven selection
- Customizations: display rotation, analog stick inversion, headphone detect polarity
- Image download: fetches latest release from GitHub with SHA256 verification and caching
- Compression support: handles both
.img.gzand.img.xzimages - Cross-platform: Windows, Linux, macOS with native privilege escalation
- In-app updates: automatic update checking and installation
- 5 languages: English, Portuguese (BR), Spanish, Chinese, Russian
- Retry logic: automatic retry on transient SD card I/O errors
Download
Get the latest release for your platform from Releases.
| Platform | File |
|---|---|
| Windows | Arch.R.Flasher_x64-setup.exe |
| Linux (deb) | arch-r-flasher_amd64.deb |
| Linux (AppImage) | arch-r-flasher_amd64.AppImage |
| macOS | Arch.R.Flasher_aarch64.dmg |
Usage
Overlays
| Boards | Variation | Overlays |
|---|---|---|
| R36S-V12 2023-08-18 | Original | panel0.dtbo |
| R36S-Y02 2024-11-27 | Original | unknown |
| R36S-Y02 2025-02-18 | Original | panel0.dtbo |
| Y3506_V03_20241210 | SoySauce / Original | panel5.dtbo / panel6.dtbo |
| Y3506_V03_20241104 | SoySauce / Original | unknown |
| Y3506_V03_20250317 | SoySauce / Original | panel6.dtbo |
| Y3506_V04_20250529 | SoySauce / Original | panel6.dtbo |
| 2025-07-22_1402 | SoySauce / Original | panel6.dtbo |
| Y3506_V05_20251215 | 2551 | SoySauce / Original | panel5.dtbo |
| Y3506_V05_20251215 | 2601 | SoySauce / Original | unknown |
| R36S-V21 2024-12-18 | Original | panel4.dtbo |
| R36S-V22 2024-12-18 | Original | panel4v22.dtbo |
| RK3326-D3 | Unknown | panel4.dtbo |
| R36S-V30 2025-10-18 | Original | unknown |
| G80C-MB V1.1-20250319 | Clone | clone_panel_8.dtbo |
| G80CA-MB V1.2-20250422 | Clone | clone_panel_8.dtbo / clone_panel_9.dtbo |
| G80CA-MB V1.2-20250423 | Clone | clone_panel_8.dtbo / clone_panel_9.dtbo |
| G80CA-MB V1.3-20251212 | Clone | clone_panel_8.dtbo / clone_panel_9.dtbo |
| G80D-MB V1.0-20250609 | Clone | clone_panel_10.dtbo |
| R36S-V12 | Clone | clone_panel_8.dtbo |
| R36S-V20 2025-05-18 | Clone | clone_panel_1.dtbo / clone_panel_3.dtbo |
| R36S-V20 2025-09-18 | Clone | unknown |
| R36S-V12 2023-08-18 variant 1 | Clone | clone_panel_4.dtbo |
| R36S-V12 2023-08-18 variant 2 | Clone | clone_panel_2.dtbo |
| R36S-V12 2023-08-18 variant 3A | Clone | unknown |
| R36S-V12 2023-08-18 variant 3 | Clone | clone_panel_1.dtbo |
| R36S-Power-MB 01 - 060625 | Clone | clone_panel_8.dtbo |
Flash Tab
- Select console type -- R36S Original (12 panels) or R36S Clone (12 panels)
- Select image -- download latest from GitHub or pick a local
.img/.img.xz/.img.gzfile - Select your display panel
- Optionally adjust customizations (rotation, stick inversion, HP detect)
- Select target SD card
- Click FLASH
The app decompresses images, writes to SD, and injects the correct panel overlay (DTBO) into the BOOT partition.
Overlay Tab
Change the display panel on an already-flashed Arch R SD card without reflashing:
- Insert an Arch R SD card
- App auto-detects the BOOT partition and shows current panel + settings
- Select a new panel and/or adjust customizations
- Click APPLY
Building from Source
Requirements
- Rust (stable)
- Tauri CLI:
cargo install tauri-cli
Linux
sudo apt install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev
macOS
Xcode Command Line Tools.
Windows
WebView2 (pre-installed on Windows 11).
Build
# Development
cargo tauri dev
# Release (generates installer for current platform)
cargo tauri build
Architecture
archr-flasher/
src-tauri/
src/
main.rs # Tauri entry point + IPC commands
panels.rs # Panel definitions (24 panels, data-driven)
disk.rs # Removable disk detection (Linux/macOS/Windows)
flash.rs # Image writing + privilege escalation + retry
github.rs # GitHub Releases API + image download
overlay.rs # SD card panel overlay read/write
panel_config.rs # DTBO read/customization (built-in FAT32 reader)
dtbo_builder.rs # FDT binary builder (no external tools)
Cargo.toml
tauri.conf.json
src/
index.html # UI (two tabs: Flash + Overlay)
style.css # Dark theme
main.js # Frontend logic (vanilla JS)
i18n/ # Translations (en, pt-BR, es, zh, ru)
.github/
workflows/ # CI/CD
How It Works
Flash flow:
- Download or select
.img.xz/.img.gzimage - Decompress to app cache directory (streaming, 4MB chunks)
- Read source panel DTBO from image's FAT32 BOOT partition
- If customizations are set, build a modified DTBO with injected properties
- Write image to SD card via platform-specific privileged script (3 retries)
- Mount boot partition (with retry) and inject DTBO as
overlays/mipi-panel.dtbo
Overlay flow:
- Detect mounted Arch R BOOT partition
- Read current
mipi-panel.dtbo-- identify panel viapanel_descriptionhash - User selects new panel + customizations
- Build DTBO and write to
overlays/mipi-panel.dtbo
Privilege Escalation
| Platform | Method | Notes |
|---|---|---|
| Linux | pkexec |
No terminal window needed |
| macOS | osascript (AppleScript) |
Native admin prompt |
| Windows | Admin manifest at startup | No runtime UAC prompt |
Panel DTBO System
The app includes a built-in FDT binary builder and a minimal FAT32 reader -- no dtc, mtools, or device-tree-compiler dependency needed. Customizations (rotation, stick inversion, HP detect polarity) are injected as DT properties into the panel overlay, preserving all original hardware nodes (reset-gpios, pinctrl, power supply).
Supported Panels
Original R36S (12 panels)
| Panel | Overlay |
|---|---|
| Panel 0 | panel0.dtbo |
| Panel 1 | panel1.dtbo |
| Panel 2 | panel2.dtbo |
| Panel 3 | panel3.dtbo |
| Panel 4 | panel4.dtbo |
| Panel 4 V22 | panel4-v22.dtbo |
| Panel 5 | panel5.dtbo |
| Panel 6 | panel6.dtbo |
| R35S Rumble | r35s-rumble.dtbo |
| R36S Plus | r36s-plus.dtbo |
| R46H (1024x768) | r46h.dtbo |
| RGB20S | rgb20s.dtbo |
Clone R36S (12 panels)
| Panel | Overlay |
|---|---|
| Clone 1 (ST7703) | clone_panel_1.dtbo |
| Clone 2 (ST7703) | clone_panel_2.dtbo |
| Clone 3 (NV3051D) | clone_panel_3.dtbo |
| Clone 4 (NV3051D) | clone_panel_4.dtbo |
| Clone 5 (ST7703) | clone_panel_5.dtbo |
| Clone 6 (NV3051D) | clone_panel_6.dtbo |
| Clone 7 (JD9365DA) | clone_panel_7.dtbo |
| Clone 8 G80CA (ST7703) | clone_panel_8.dtbo |
| Clone 9 (NV3051D) | clone_panel_9.dtbo |
| Clone 10 (ST7703) | clone_panel_10.dtbo |
| R36 Max (ST7703 720x720) | r36_max.dtbo |
| RX6S (NV3051D) | rx6s.dtbo |
Licenses
Copyright (C) 2026-present Arch R
Licensed under the terms of the GNU GPL Version 2.