ASUS Linux
ASUS Linux is a suite of tools designed to improve the performance and functionality of ASUS laptops when running Linux. It comes in 2 main parts, asusctl and supergfxctl, the former interacts with the asus-wmi and the asus-armoury kernel modules to control BIOS level features and the latter is used to control the dedicated GPU in dual GPU systems.
The project is maintained by Luke Jones and is hosted on GitLab.
ASUS Linux is a founding member of the Open Gaming Collective. Their Discord server is now the server for the OGC.
Software
ASUS Linux provides many packages, please see subsections below. They recommend users to install Linux firmware, Microcode and power-profiles-daemon. They primarily recommend the use of KDE Plasma and then GNOME for the best and most complete experience.
There is a custom repository which contains prebuilt binaries available: Unofficial user repositories#OGC, provided by Luke Jones.
This repository is the officially recommended way of installing the asus-linux utilities by the asus-linux developers, it was created and is being maintained by them.
See the Arch Guide and FAQ for instructions on utilities and common fixes.
asusctl
asusctlAUR is a CLI utility for ASUS ROG & TUF laptop, to name some of the important features it gives users control over:
- Integrated GPU MUX Control
- Keyboard RGB Lighting Profile (but limited compared to the Windows AURA/Armoury Crate)
- Fan Curves
- Battery Charge Limit
- Panel Overdrive
- AniMe Matrix Screens
For usage instructions see asusctl.
rog-control-center
rog-control-centerAUR is a GUI frontend for asusctl and supergfxctl.
Custom kernel
- The linux-g14 kernel has been deprecated and replaced by the OGC kernel.
- The asus-armoury driver has been included in the mainline Linux kernel since version 6.19. If the Armoury driver is the only feature you require, installing a custom kernel is no longer necessary.
The OGC repository provides a custom kernel through linux-ogc and linux-ogc-headers packages that is focused on gaming and performance improvements.
GPU
For NVIDIA GPUs, see PRIME, NVIDIA, and NVIDIA/Tips and tricks.
Graphics switching is preferably done with PRIME#Desktop environment integration as it is NVIDIA recommendation.
cardwire
cardwireAUR is a GPU manager, created as a successor to the deprecated supergfxctl project, for Linux using eBPF LSM hooks to block GPUs. A git version of the package is available at cardwire-gitAUR. See documentation.
supergfxctl
supergfxctlAUR is a CLI utility for managing GPU switching functionality on ASUS hybrid laptops, particularly dedicated GPU MUX control.
For usage instructions see supergfxctl.
nvidia-laptop-power-cfg
nvidia-laptop-power-cfg is a set of udev rules and modprobe configs designed to make it easier for NVIDIA GPU owners to easily configure their device with their respective proprietary drivers.
It is intended for Ampere architecture (RTX 2000) or later devices, but can be configured for Turing architecture (GTX 1000) cards also with the following changes after installation of the package:
/etc/modprobe.d/nvidia.conf
options nvidia_drm modeset=1 options nvidia NVreg_EnableGpuFirmware=0 NVreg_EnableS0ixPowerManagement=1 NVreg_DynamicPowerManagement=0x02
/usr/lib/udev/rules.d/80-nvidia-pm.rules
# Remove NVIDIA USB xHCI Host Controller devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{remove}="1"
# Remove NVIDIA USB Type-C UCSI devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{remove}="1"
# Remove NVIDIA Audio devices, if present
#ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{remove}="1"
# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"
# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"
Depending on your architecture:
- You may want to enable and start
nvidia-suspend.service,nvidia-hibernate.service,nvidia-resume.serviceandnvidia-powerd.service - You may want to also enable
nvidia-suspend-then-hibernate.service - If S0ix power management is supported (check with
# cat /proc/driver/nvidia/gpus/bus_address/power) you may benefit from nvidia-settings and vulkan-icd-loader
Verify your configurations from NVIDIA and NVIDIA/Tips and tricks.
See also
- Project homepage - https://asus-linux.org/
- Project GitLab page - https://gitlab.com/asus-linux