Installation
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
battery permissions service automatically. 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
battery permissions service automatically. 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
battery permissions service automatically. 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.
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+wonBAT*/charge_control_end_thresholdandryzen_smu_drvsysfs files at boot. - Starts the service immediately so battery limit and undervolt are accessible right away.
Why a separate oneshot service for battery and ryzen_smu?
The charge_control_end_threshold sysfs attribute is added by the
asus_nb_wmi kernel driver late in its probe() sequence — after all
observable udev child-device events have already fired. The ryzen_smu
files are kobjects under /sys/kernel/, not udev-managed devices. There
is no udev hook that can reliably target either. 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"
Another process may be holding an exclusive grab on the Armoury Crate button device. On gaming distributions, InputPlumber is a common cause. See InputPlumber compatibility for the fix.
Daemon not starting