Install it and your ROG behaves like a laptop. No G‑Helper, no Armoury Crate, no flipping modes by hand.
Experimental. Built for the ROG Zephyrus G16 and G14, tested on a GA605KM. Other ASUS laptops share most of it.
YouTube on battery, all fixes combined
of 1 % battery drops that woke the RTX
fastest fan at idle on battery
Close the lid, unplug, walk away. After 20 minutes asleep it hibernates, and opens back up where you left off.
was: the battery drained flat in sleep, and hibernate never actually powered off (NVIDIA #1412, HibernateMode=shutdown)
It wakes when you plug in a monitor or start a game, and sleeps the rest of the time.
was: woken for 20–25 s every time the battery dropped 1 % (NVIDIA #1299)
YouTube and mpv decode on the Radeon iGPU's video engine, the most efficient place for it, so the RTX stays asleep and the CPU stays idle. About 9 W for YouTube on battery.
was: 14 W, with software decode or a woken RTX
The fans stay off while you read, write or browse.
was: 2,000–3,800 rpm at idle. Under sustained load it now holds 86 °C instead of throttling at 95 °C, for about 6 % lower clocks
Brushing the touchpad won't wake it; a click will.
was: 129k touchpad wake events in one boot (ASUF1209 wake disarmed)
Game on USB-C or a smaller barrel charger without stutter. It holds charging while the charger can't keep up, so power stays steady.
was: on USB-C, the adapter flapped on and off about once a second, charging toggled with it, and the EC clamped the CPU to 735 MHz
Native resolution, and your windows are where you left them after a replug.
was: windows rendered off-screen after an HDMI replug (Hyprland #16140)
Fn+Super locks Super in the keyboard's firmware. We pass the state through and show a toast, so it no longer looks like a dead key.
was: stock hid-asus ate the lock report, so Super silently stopped working
Brightness and patterns from the G16 Control widget in the bar.
The ALC285 gets its whole range, and PipeWire runs at realtime priority.
was: Master hid 12.75 dB of volume
Measured on a GA605KM (Ryzen AI 7 350, RTX 5060 Laptop), mostly on battery, with repeated A/B runs where noted. The fixes were applied locally on kernel 7.2.5 and nvidia-open 610; the packaged builds carry the same patches on newer bases and haven't been installed yet.
██ before ██ after
stock 610/615 ████████████████████████████████ 13 of 13 drops woke the RTX (20–25 s each) with #1299 ▏ 0 of 3; suspended in 179/179 samples
idle desktop on battery, 42 → 39 %. Average drain didn't move outside noise, so this is a wake-up count, not a watt claim.
fan 1 ██████████████████▌ 2200 rpm ▏ 0 rpm fan 2 ███████████████▏ 1800 rpm ▏ 0 rpm fan 3 ████████████████████████████████ 3800 rpm ▏ 0 rpm (7 in rerun)
asus-wmi quiet + amd-pmf balanced, idle at 28 °C (the balanced curve doesn't need fans below 54 °C, yet ran them anyway). Median −0.79 W over 4 cycles. Bursts unchanged: 5.04 GHz, 54 W all-core peak.
Do temps climb? No. This is the EC's quiet fan table rather than a fan stop: under load the fans start at 86 °C and hold it there.
tctl, steady ████████████████████████████████ 95.0 °C throttling ████████████████████████████▉ 86.0 °C not throttled apu power ████████████████████████████████ 39.2 W ███████████████████████████▏ 33.3 W all-core clock ████████████████████████████████ 3421 MHz █████████████████████████████▉ 3206 MHz (−6 %) fans, peak ████████████████████████████████ 6800 rpm from the first second ███████████████████▊ 4200 rpm from 86 °C
8 min of all-core load (16 busy loops) per fan table, back to back on battery at 67 %, kernel 7.2.8-9.3, sampled every 5 s; steady state is the median of the last 2 min. Before is the balanced table, after the quiet one, both with amd-pmf balanced. Repeated on 7.2.8-9.4 (86.0 °C at 31 W), and in 60 s loads after two hibernate resumes (86.1 °C peak at 32–33 W). #42
power daemons, cpu ████████████████████████████████ 2.4 % of a core ███▌ 0.27 % rog-power ████████████████████████████████ 1.6 % █████ 0.25 % idle-power ████████████████████████████████ 0.75 % ▏ 0.002 % voxtype wakeups ████████████████████████████████ 240/s █████▏ 39/s bar widget helper ████████████████████████████████ 155 ms, 135 forks ███▋ 18 ms, 12 forks menu package check ████████████████████████████████ 160–165 ms █ 5–6 ms launcher gpu probe ████████████████████████████████ woke the RTX ~17 s ▏ 3 ms, no wake
daemon CPU: 120 s samples. wakeups and helpers: single samples or 3 warm runs.
software ████████████████████████████████ 1.24 s (1.18–1.30 user) radeon vcn ███████████████▍ 0.60 s (0.35–0.43 user + 0.21 sys)
mean of 3 runs. mpv playback: 4–9× less CPU across H.264, HEVC, VP9 and AV1.
stock ████████████████████████████████ 48.5 W limit ignored fan curve on ████████████████▍ 25.0 W held flat (24.997–25.009)
barrel charger, performance profile. Firmware ignores PPT unless the custom fan curve is enabled.
██ shipped ██ too small ██ rejected
epp power vs balance_power ██████████████│ −0.86 shipped, 4/4 rounds quiet fans on battery █████████████│ −0.79 shipped, median of 4 wi-fi power_save █████│ −0.30 too small core parking ██│ −0.15 too small irq steering ██│ −0.13 too small windows-style freq caps █│ −0.05 too small pci runtime pm / aspm │ ~0 noise teo idle governor │██████ +0.35 worse, rejected −1 W 0 +1 W
We keep the ones that pay. YouTube on battery went from 14 W to ~9.2 W with several fixes combined; we don't credit that to any one of them.
Served from the x86_64 release. Versions are upstream's plus .1, so they install over stock and step aside when upstream catches up.
| package | version | fixes | upstream |
|---|---|---|---|
| linux-omarchy | 7.2.8-9.4 | Win-lock pass-through in hid-asus; touchpad interrupts per batch, not per byte; GA605KM power-limit ranges; amdgpu display backports; sleep with an HDMI monitor attached (GPIO 16 wake quirk) | Win-lock sent to linux-input; the rest backports or not submitted yet |
| nvidia-open-dkms | 615.78.08-1.3 | RTX no longer woken by battery ticks; hibernate powers off; nvkms semaphore leak | #1299, #1412, #1368 open |
| hyprland | 0.56.2-4.2 | render offset after HDMI replug | #16140 merged, unreleased |
| omarchy, omarchy-settings | 4.0.6-1.2 | asusd hand-off, USB-C/barrel power policy, external power-manager owner, quiet fans on battery, iGPU video decode, full-scale speakers, rtkit | #15667, #15668, #15669 open; the rest in the delta index |
| omarchy-asus-g16 | 1.0.0-1 | touchpad wake, hibernate mode, nvidia-powerd start limit | G16-specific |
| asus-rog-nkey-winlock | 0.1.0-9 | Win-lock toast or auto-unlock | G16-specific |
| omarchy-asus-keyring | 20261018-1 | the repo's signing key | n/a |
linux-omarchy and the NVIDIA driver, so keep a second kernel (e.g. Arch linux) as a boot fallback. Key fingerprint 0B44FF7CCDD929F61BE4A2E436FE6B28AB24EC88.One panel in the Omarchy bar for the laptop's hardware: keyboard and lid Slash LEDs; per-charger keyboard, refresh rate, screen backlight and CPU power limits; battery charge limit; Fn+Super. Each section hides when your laptop doesn't have it. It's an Omarchy plugin, so it installs and updates the Omarchy way:
omarchy-plugin-add https://github.com/omarchy-asus/omarchy-asus-plugin --enable
Source and docs: omarchy-asus/omarchy-asus-plugin. Written on the ROG Zephyrus G16; needs asusd for the LEDs, charge limit and power limits.
See the open pull requests.
Got a G16, a G14, or another ASUS laptop? A lot is shared between models, so your fix may already be here, or yours may help ours. Open an issue with the output of cat /sys/class/dmi/id/product_name, uname -r and omarchy version, and what's broken. Small PRs tested on real hardware are welcome.
cat /sys/class/dmi/id/product_name prints.