Skip to content

About

Native Linux bring-up for ASUS ROG Phone 5

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ROG Phone 5 native Linux

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.

Status

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):

Component status map

What works

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

Benchmarks

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.

Partial / known issues

  • 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.

Not yet / out of scope

Cellular modem, cameras, fingerprint reader, NFC.

Installing

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.

Screenshots

GNOME desktop mode on an external monitor, driven by the phone:

GNOME desktop mode on an external monitor

GNOME Activities overview

GNOME Text Editor in desktop mode

How it boots

  1. Slot B: the ASUS bootloader starts a signed recovery wrapper (the ASUS 5.4 kernel with a small recovery initramfs).
  2. 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.
  3. The root filesystem is a read-only Arch Linux ARM image with a persistent overlay stored on userdata.
  4. 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.

Repository layout

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

Documentation

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.

Licensing and provenance

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.

About

Native Linux bring-up for ASUS ROG Phone 5

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages