Installation
Most users should also install z13gui
z13ctl is the engine; z13gui is the recommended way to drive it for everyone except command-line veterans. It's a touch-friendly graphical overlay covering every feature — lighting, fan curves, TDP, undervolt, profiles, and battery limit. Install z13ctl first (this page), then add z13gui (see GUI Frontend below).
Prerequisites
- Linux kernel with
hidrawsupport (standard on all mainstream distributions) - 2025 ASUS ROG Flow Z13 (USB IDs
0b05:18c6and0b05:1a30)
InputPlumber conflict (Bazzite, ChimeraOS, Nobara)
On gaming distributions that ship InputPlumber, the z13ctl daemon's button watcher will fail to open the Armoury Crate button device. InputPlumber ships a built-in profile for the ROG Flow Z13 that grabs the device exclusively. See InputPlumber compatibility for the override instructions.
Optional: ryzen_smu kernel module (for undervolting)
CPU undervolting via AMD Curve Optimizer requires the ryzen_smu kernel
module. Without it, all other features work normally — undervolt commands will
return a helpful error explaining how to install the module.
Strix Halo requires the amkillam fork
The original leogx9r/ryzen_smu does not support Strix Halo (the SoC in
the 2025 Z13). You must use the
amkillam/ryzen_smu fork. z13ctl
detects the wrong fork at startup and reports
undervolt as unavailable.
| Distribution | Package | Source |
|---|---|---|
| Arch / CachyOS | ryzen_smu-dkms-git |
AUR (amkillam fork) |
| Other distros | build from source | github.com/amkillam/ryzen_smu |
# Arch / CachyOS
yay -S ryzen_smu-dkms-git
# Other distros (build from amkillam fork)
git clone https://github.com/amkillam/ryzen_smu.git
cd ryzen_smu
make
sudo make install
Install
Download the latest linux_amd64 archive from the
Releases page, then extract
and install:
One-time permissions setup (requires root):
Then log out and back in (or run newgrp users) for the group membership
to take effect in your current session.
Install the systemd user service (socket activation):
Install the z13ctl-bin package with your preferred AUR helper:
The package installs the binary, udev rules, systemd units, and the sysfs
permissions service automatically, restarting the latter so an upgrade
applies any new permission grants without a reboot. After installing, add
your user to the users group if not already a member:
Then log out and back in for the group membership to take effect.
Alternatively, download the .pkg.tar.zst package directly from the
Releases page and install with
pacman:
Download the .deb package from the
Releases page, then install:
The package installs the binary, udev rules, systemd units, and the sysfs
permissions service automatically, restarting the latter so an upgrade
applies any new permission grants without a reboot. After installing, add
your user to the users group if not already a member:
Then log out and back in for the group membership to take effect.
Download the .rpm package from the
Releases page, then install:
The package installs the binary, udev rules, systemd units, and the sysfs
permissions service automatically, restarting the latter so an upgrade
applies any new permission grants without a reboot. After installing, add
your user to the users group if not already a member:
Then log out and back in for the group membership to take effect.
Verify the installation
This should print the discovered hidraw devices and confirm Aura support. If it prints nothing, see Troubleshooting below.
GUI Frontend
Highly recommended for most users. Install
z13gui alongside z13ctl — a touch-friendly
GTK4 overlay that communicates with z13ctl through its daemon and exposes every
feature graphically. While the raw z13ctl CLI is ideal for scripting and
advanced tuning, beginners and anyone who prefers a point-and-tap interface will
find the more advanced features (custom fan curves, TDP, undervolting) far
easier to use through z13gui. See the
z13gui README for installation
instructions.
Requires the daemon
z13gui talks to z13ctl over its daemon socket, so make sure the
systemd user service is installed and enabled (the AUR, .deb,
and .rpm packages do this for you).
Next steps
You're installed and ready to go. Head to the Quick Start guide to set your first lighting effect, fan curve, and performance profile.
What setup does
sudo z13ctl setup performs four steps:
- Writes
/etc/udev/rules.d/99-z13ctl.rules— grants theusersgroupMODE=0660/GROUP=userson the ASUS HID and input device nodes; usesRUN+=chgrp/chmodto set permissions on the platform-profile attribute, hwmon fan curve attributes (asus_custom_fan_curve+asuspwm_enable), and asus-nb-wmi PPT power limit attributes when the drivers load. - Reloads udev and applies permissions immediately to all currently present
files — including
ryzen_smusysfs files for undervolting (if the module is loaded). - Writes
/etc/systemd/system/z13ctl-perms.serviceand enables it — aType=oneshotservice that runschgrp+chmod g+wat boot onBAT*/charge_control_end_threshold, the asus-armoury firmware attributes (boot_sound,panel_overdrive), the asus-nb-wmippt_*power limits, and theryzen_smu_drvfiles. - Starts the service immediately so battery limit, TDP, and undervolt are accessible right away.
Why a separate oneshot service?
The charge_control_end_threshold and ppt_* attributes are added by the
asus_nb_wmi kernel driver late in its probe() sequence — after all
observable udev child-device events have already fired. The
firmware-attribute current_value files may likewise be created after their
parent's ADD event, and the ryzen_smu files are kobjects under
/sys/kernel/, not udev-managed devices. No udev hook can reliably target
any of them. The z13ctl-perms.service unit is a self-contained workaround
that runs at sysinit.target. It has no dependency on the z13ctl binary and
can be inspected at any time:
Use --dry-run to preview all changes without root or any side effects:
Uninstall
Remove the user service first:
systemctl --user disable --now z13ctl.socket z13ctl.service
rm -f ~/.config/systemd/user/z13ctl.socket \
~/.config/systemd/user/z13ctl.service
systemctl --user daemon-reload
Then remove the binary and system files:
sudo rm /usr/local/bin/z13ctl
sudo rm /etc/udev/rules.d/99-z13ctl.rules
sudo udevadm control --reload-rules
sudo systemctl disable --now z13ctl-perms.service
sudo rm /etc/systemd/system/z13ctl-perms.service
sudo systemctl daemon-reload
Troubleshooting
z13ctl list prints nothing
The device was not found. Check that the kernel loaded the hid and hidraw
modules:
If /dev/hidraw* devices exist but none match the ASUS USB IDs, the device
is present but not recognized. This tool targets the 2025 ROG Flow Z13
specifically (USB IDs 0b05:18c6 and 0b05:1a30).
Permission denied
Run sudo z13ctl setup and log out/in to apply the group membership.
Verify with:
Daemon logs "button watcher stopped; retrying … permission denied"
Something else is managing the Armoury Crate button device and z13ctl cannot open it. On gaming distributions, InputPlumber is a common cause. See InputPlumber compatibility for the fix.
Armoury Crate button does nothing, and the log shows no error
z13ctl reads the button device non-exclusively, so a process holding an exclusive
EVIOCGRAB on it receives every event instead — with nothing for z13ctl to
report. Check what else has the device open:
Daemon not starting