diff --git a/README.md b/README.md index 8f131ecfeb..0a154095b1 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@

- Arch Linux-based gaming distribution for handheld devices. + Arch Linux gaming distribution for handheld devices.

@@ -14,17 +14,22 @@ --- -Arch R is a custom Linux distribution for the **R36S** handheld gaming console and all its variants, built on top of [ROCKNIX](https://github.com/ROCKNIX/distribution) with an **Arch Linux-based** build environment. It supports **16 board profiles** and **20 display panels** across original and clone hardware. +Arch R is an **Arch Linux** distribution for the **R36S** handheld gaming console and its many variants. In the same spirit as SteamOS, it pairs a genuine Arch userland (pacman, systemd, up-to-date packages) with a curated console experience: flash it, turn the device on, play. System updates are delivered through the built-in updater, kernel included; reflashing is only needed for a fresh install or recovery. + +The image build pipeline descends from the LibreELEC family of embedded build systems (through JELOS and ROCKNIX), but the operating system it assembles is Arch Linux ARM, not a JELOS derivative. ## Features -- Arch Linux-based build system with Docker support. -- Kernel 6.12 LTS with board auto-detection via SARADC. -- Mesa Panfrost open-source GPU driver (GLES 3.1, no proprietary blobs). -- EmulationStation frontend with RetroArch and 18+ cores pre-installed. -- Full audio support with speaker/headphone auto-switch. -- Battery monitoring with capacity reporting and LED warning. -- MIPI panel overlays for every known motherboard revision, generated on demand by the online overlay generator at https://arch-r.io/overlay-generator/ (or during flashing by the Arch R Flasher). +- Genuine Arch Linux ARM base with pacman and signed package repositories (stable, next and dev channels). +- Built-in system updater in EmulationStation; kernel and device trees update through it too, with checksum-verified writes to the boot partition. +- Mainline kernel 6.12 LTS with board auto-detection via SARADC. +- Memory clock trained at 666MHz from boot (twice the BSP-era default) and tuned Mali-G31 graphics. +- EmulationStation frontend with RetroArch and 18+ cores pre-installed, plus PortMaster. +- Full audio support with speaker/headphone auto-switch across board revisions. +- Power button light sleep: screen and backlight fully off, instant wake. +- Power LED control (on, off, heartbeat) on every supported family. +- USB WiFi dongle support, including the common RTL8188EUS family (TP-Link, Edimax). +- MIPI panel overlays for every known motherboard revision, generated on demand by the online overlay generator at https://arch-r.io/overlay-generator/ (or during flashing by the Arch R Flasher). The generator also extracts board-specific wiring (audio amplifier, jack detect, LEDs, PMIC interrupt) from your stock DTB. - Separate images for original and clone boards, both with hardware auto-detection. - Integrated cross-device local and remote network play. - Fine-grained control for battery life and performance. @@ -40,13 +45,12 @@ Arch R is a custom Linux distribution for the **R36S** handheld gaming console a | Board | Image | |-------|-------| -| R36S (original), R33S | Original | +| R36S (original), R33S, R36S Soysauce | Original | | Odroid Go Advance / v1.1 / Super | Original | | Anbernic RG351V / RG351M | Original | -| GameForce Chi, MagicX XU10 | Original | -| K36 / R36S clones / EE Clone | Clone | -| Powkiddy RGB10 / RGB10X / RGB20S | Clone | -| MagicX XU-Mini-M, BatLexp G350 | Clone | +| GameForce Chi, MagicX XU10, Powkiddy RGB10 | Original | +| K36 / R36S V20 clones / EE Clone | Clone | +| Powkiddy RGB10X, MagicX XU-Mini-M | Clone | ### Display Panels @@ -59,15 +63,22 @@ Download the latest images from [Releases](https://github.com/archr-linux/Arch-R - **Original image** -- for genuine R36S and compatible boards. - **Clone image** -- for K36 clones and compatible boards. -Flash to a MicroSD card: +The easiest path is the [Arch R Flasher](https://github.com/archr-linux/archr-flasher), which downloads, verifies, flashes and installs your panel overlay in one go. Manual flashing works too: ```bash -xz -d ArchR-R36S-*.img.xz +gzip -d ArchR-R36S-*.img.gz sudo dd if=ArchR-R36S-*.img of=/dev/sdX bs=4M status=progress sync ``` -Insert the SD card and power on. The correct board DTB is selected automatically. +Always verify the download against the published `SHA256SUMS` before flashing. Insert the SD card and power on; the correct board DTB is selected automatically. + +## Updates + +- **In place (default after install)**: EmulationStation > Updates, or `archr-update` over SSH. Updates come from the signed pacman repository; after each transaction the boot partition is synchronized automatically, so kernel and device-tree fixes arrive without reflashing. User overlays and configuration are never touched. +- **Reflash**: for fresh installs, recovery, or the rare low-level bootloader change (TPL/U-Boot, e.g. a DDR frequency change), which lives outside the filesystem. + +Release channel is configurable (stable, next, dev) under updates settings. ## Building from Source @@ -90,7 +101,7 @@ make docker-image-build make docker-RK3326 ``` -Output images are generated in `target/`. +Output images are generated in `target/`. Add `OFFICIAL=yes` for release-stamped images. ### Build Commands @@ -105,23 +116,23 @@ Output images are generated in `target/`. Arch R separates **board configuration** from **panel configuration**: -- **Board DTB** = hardware profile (GPIOs, PMIC, joypad, audio codec). Selected automatically by U-Boot via SARADC. -- **Panel overlay** = display init sequence and timings. Applied on top of the board DTB at boot time. +- **Board DTB** = hardware profile (GPIOs, PMIC, joypad, audio codec). Selected automatically by U-Boot via SARADC. One generic DTB per hardware family; board-revision differences are carried by the overlay. +- **Panel overlay** = display init sequence, timings and board-specific wiring extracted from the stock DTB. Applied on top of the board DTB at boot time. -This means the same image works on all boards of a variant. Only the panel overlay needs to match the specific display. +This means the same image works on all boards of a variant. Only the overlay needs to match the specific device. ### Boot Flow ``` Power On - U-Boot (BSP or mainline) - boot.scr: read SARADC hwrev, select board DTB + U-Boot (mainline, legacy BSP loader for clone boards) + boot script: read SARADC hwrev, select board DTB sysboot: load kernel + DTB + overlay from extlinux.conf Kernel 6.12 + initramfs - mount root (ext4) + storage + mount root (ext4) + storage, resolved by partition label switch_root to systemd systemd - archr-autostart (quirks, governors, audio) + archr-autostart (quirks by device-tree model, governors, audio) EmulationStation ``` @@ -130,7 +141,7 @@ Power On | Partition | Filesystem | Label | Purpose | |-----------|-----------|-------|---------| | 1 | FAT32 | ARCHR | Boot (kernel, DTBs, overlays, boot.scr) | -| 2 | ext4 | ARCHR_ROOT | Root filesystem | +| 2 | ext4 | ARCHR_ROOT | Root filesystem (Arch Linux ARM) | | 3 | ext4 | STORAGE | User data, ROMs, configs | ## Community @@ -139,7 +150,7 @@ Contributions are welcome. Please open issues or pull requests on [GitHub](https ## Licenses -**Arch R** is a fork of [ROCKNIX](https://github.com/ROCKNIX/distribution), which is a fork of [JELOS](https://github.com/JustEnoughLinuxOS/distribution/). All upstream licenses apply. +The Arch R operating system is Arch Linux ARM plus original Arch R software. The image build tooling in this repository descends from [ROCKNIX](https://github.com/ROCKNIX/distribution) and [JELOS](https://github.com/JustEnoughLinuxOS/distribution/); the licenses of that inherited tooling continue to apply to the portions derived from it. You are free to: @@ -168,12 +179,12 @@ Like any Linux distribution, this project is not the work of one person. It is t Special thanks to: -- **[ROCKNIX](https://github.com/ROCKNIX/distribution)** -- the upstream distribution that Arch R is forked from. ROCKNIX provided the complete build system, device support, EmulationStation integration, and the foundation for handheld gaming on Linux. -- **[JELOS](https://github.com/JustEnoughLinuxOS/distribution/)** -- the project that ROCKNIX was originally forked from. -- **[CoreELEC](https://coreelec.org/)** and **[LibreELEC](https://libreelec.tv/)** -- the embedded Linux distributions whose build system forms the backbone of this project. +- **[Arch Linux](https://archlinux.org/)** and **[Arch Linux ARM](https://archlinuxarm.org/)** -- the operating system Arch R is built on. +- **[ROCKNIX](https://github.com/ROCKNIX/distribution)** and **[JELOS](https://github.com/JustEnoughLinuxOS/distribution/)** -- the projects whose build tooling and RK3326 device knowledge Arch R inherited and still learns from. +- **[CoreELEC](https://coreelec.org/)** and **[LibreELEC](https://libreelec.tv/)** -- the embedded Linux distributions whose build system forms the backbone of the image pipeline. - **[Hardkernel](https://www.hardkernel.com/)** -- for the Odroid Go Advance BSP U-Boot and kernel device trees. -- **[Rockchip](https://www.rock-chips.com/)** -- for the RK3326 SoC and rkbin firmware. -- **[Mesa](https://mesa3d.org/)** -- for the Panfrost open-source GPU driver. +- **[Rockchip](https://www.rock-chips.com/)** -- for the RK3326 SoC, rkbin firmware and the libmali GPU driver. +- **[Mesa](https://mesa3d.org/)** -- for the open-source graphics stack. - **[RetroArch](https://www.retroarch.com/)** and **[Libretro](https://www.libretro.com/)** -- for the emulation framework and cores. - **[EmulationStation](https://emulationstation.org/)** -- for the frontend. - All developers and contributors across the open-source community who made this possible.