Native mainline Linux 7.2.7 (plus about 100 device patches) with Arch Linux ARM on the ASUS ROG Phone 5 (Qualcomm SM8350 / Snapdragon 888). The phone UI is Phosh; an optional GNOME "desktop mode" runs on an external monitor. The same installation also works as a small server: SSH, Tailscale, an nftables firewall and a 128 GiB persistent root filesystem.
This is a device-specific, experimental port. Android does not run underneath: the mainline kernel runs directly on the hardware.
As of 2026-10-01 (bundle main-k111-d10-261001a: kernel 7.2.7-rog5-k111,
DTB d10): 38 components ready, 10 partial, 8 untested, 16 missing. Green is
ready, yellow partial, blue needs a test, red missing
(what's left and tests to do):
| Area | Status |
|---|---|
| Boot | From local storage via a signed slot-B boot chain with automatic fallback (try-once selector) |
| Display | AMOLED panel; Phosh at 1080x2448 |
| Input | Touchscreen |
| Wireless | Wi-Fi (NetworkManager), Bluetooth |
| Audio | Speakers at full strength behind the amplifiers' speaker-protection DSP (factory calibration); built-in microphones |
| Sensors | Through the SLPI sensor DSP |
| Power | Charging with a 70-80 % limit and bypass at the limit; suspend-to-idle (about 79 mA while suspended) |
| Watchdog | Haven/Gunyah hardware watchdog |
| USB | Side USB-C as host, including hubs (survives suspend); bottom USB-C as USB 2.0 host that switches its 5 V on by itself |
| External display | USB-C DisplayPort alt mode on 4 lanes (HBR2); a native DP monitor offers 3840x1080 at 60/100 Hz and 5120x1440 at 60 Hz; HDMI converters at 1920x1080@60 |
| Desktop mode | GNOME on the external monitor, started from a launcher on the unlocked phone; the phone screen becomes a touchpad |
| GPU | Hardware acceleration with Mesa freedreno/turnip (Adreno 660); Turnip patched with 8-bit storage buffers for DXVK 3 |
| CPU | Scheduling with the stock capacity/energy model |
| Apps | Steam (native arm64 client); x86 games through FEX, including Proton 9 |
| Benchmark | This port | Typical Android SD888 |
|---|---|---|
| Geekbench 6 CPU, single-core | 1580 | ~1450-1500 |
| Geekbench 6 CPU, multi-core | 4191 | ~3550-3650 |
| Geekbench 6 Vulkan, normal thermal limits | ~4660-4780 | ~4509 |
Geekbench 6 Vulkan, rog5-perf-mode performance |
5405 |
The Vulkan result requires the included drirc turnip workaround
tu_restrict_subgroup_size_64 (see configs/drirc/).
Sustained GPU speed is limited by the case (skin) temperature policy; see
test-results/2026-09-29-gpu-performance.md.
- Deep sleep (CXPC / DDR collapse) is not reached (~79 mA suspended).
- AMOLED brightness has coarse steps only; the panel runs at 60 Hz only.
- HDMI converters stay dark above the HBR link rate (1080p60 maximum).
- Switching between the phone and desktop mode closes all apps.
- Wi-Fi needs ~11 s to reconnect after wake.
- The full list is in what's left and user irritations.
Cellular modem, cameras, fingerprint reader, NFC.
docs/install-guide.md covers the whole path from a stock ROG Phone 5 (ZS673KS, all RAM/storage variants): unlocking, your own signing key, building the kernel and the root filesystem, the per-phone device profile, the boot chain, first boot, setup and Steam. The alpha is not yet installable by other owners from this repository alone: the guide lists the pieces of the first install that still depend on unpublished files, and docs/fresh-install-rehearsal.md records what a from-scratch build on a PC covers today.
GNOME desktop mode on an external monitor, driven by the phone:
- Slot B: the ASUS bootloader starts a signed recovery wrapper (the ASUS 5.4 kernel with a small recovery initramfs).
- The wrapper reads a selector with a try-once primary and a fallback bundle, verifies the Ed25519-signed bundle (kernel image, DTB, initramfs, manifest) and kexecs into mainline Linux. A primary that does not commit a healthy boot is not retried; the next boot uses the fallback.
- The root filesystem is a read-only Arch Linux ARM image with a persistent
overlay stored on
userdata. - Slot A keeps stock ASUS Android as the rescue and charging route.
Warning
Never boot slot A Android normally. Its fstab expects an encrypted f2fs
userdata marked formattable, so Android would format the partition that now
holds the Linux root overlay. See the stock-capture section of the
2026-09-24 report and the manual
rescue steps in development.
The signing key is kept outside the repository.
Bundles are named <role>-k<kernel>-d<dtb>-<YYMMDD><letter> (for example
main-k111-d9-261001a): role main (the try-once default) or safe (the
fallback), kernel build kNNN (from k111 on also in uname -r, e.g.
7.2.7-rog5-k111) and DTB dN. scripts/host/rog5-make-bundle.py builds
one; docs/bundles.md lists every bundle, kernel build and
DTB with its state.
| Path | Purpose |
|---|---|
patches/ |
Kernel series (linux-7.2.7/ is production; asus-5.4.210/ is the provenance of the pinned ASUS wrapper kernel) |
dts/ |
SM8350 / ROG Phone 5 device trees and overlays |
configs/ |
Kernel fragments, systemd units, Phosh and GNOME desktop settings, firewall, udev, drirc, test registry |
initramfs/ |
Boot-time init, slot-B loader, persistent-root attestation, updater and rescue sources |
packaging/ |
Arch packaging (patched phoc) and phone service units |
scripts/host/ |
Builders, packaging, RAM trials, orchestration (rog5-dev) and host tests |
scripts/device/ |
On-phone helpers and their unit tests |
tools/ |
Out-of-tree modules and native helpers (touch, haptics, LEDs, sensors, Wi-Fi/BT activation, KMS, standby probes, status map) |
containers/ |
The historical kernel-builder recipe the aarch64 trial-state test verifies |
third_party/ |
Vendored tools with their upstream notices |
tests/, test-fixtures/ |
Fixtures for the repository test suites |
test-results/ |
Dated, redacted hardware and offline evidence (month index) |
docs/ |
Documentation (see below); superseded documents are in docs/history/ |
build/, artifacts/ |
Build outputs and local artifacts, ignored by Git |
Start at the documentation index. Status is in
current state, generated from
docs/status/components.json.
Development covers building, the fast module loop,
making a kernel the default and manual rescue. ROADMAP.md lists
outstanding priorities.
No project-wide license has been selected yet; existing per-file notices apply. See licensing and provenance. Proprietary firmware, signing keys, credentials and per-device backups are not in this repository.
Code and documents retired on 2026-09-29 (Linux 7.1.4, the headless-server,
network-root and recovery-candidate eras, and the abandoned Denial shell) are
listed in docs/history/archived-files.tsv
and summarized in docs/history/cleanup-2026-09-29.md.


