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.
There is a custom repository which contains prebuilt binaries available: Unofficial user repositories#g14, 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 ASUS Linux project maintains a set of kernel patches specific to ASUS mobile devices and packages them into a kernel. Typically using the custom kernel is not required. However, on very recent laptop models, some hardware features may not function correctly without it.
- If you added the G14 unofficial repository, you can install the AUR packages above directly through pacman.
- If you are switching from a stock kernel to a custom kernel you must also update any kernel modules to their DKMS variants.
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.
The cardwire CLI lets you manage GPU states and system modes. The available modes are as follows:
- Integrated: Blocks the discrete GPU
- Hybrid: Unblocks the discrete GPU
- Manual: Allows individual GPU blocking/unblocking (Default mode for safety)
- Integrated/Hybrid modes only work on host with two GPUs.
- Manual mode has not been implemented yet.
Usage
- Set system mode
$ cardwire set integrated / hybrid / manual
- Get current mode status
$ cardwire get
- List all detected GPUs and their status
$ cardwire list
- Manually block/unblock a specific GPU by ID
$ cardwire gpu 1 --block $ cardwire gpu 1 --unblock
Configuration
The daemon reads configuration from /etc/cardwire/cardwire.toml. An example:
/etc/cardwire/cardwire.toml
auto_apply_gpu_state = true experimental_nvidia_block = false battery_auto_switch = false
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