Jump to content

ASUS Linux

From ArchWiki

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

Warning The g14 repository packages are officially supported and maintained by the developer, whereas the AUR packages are not. If you have any issues at all using the AUR packages, the first troubleshooting step to take is to try the g14 repository packages instead.)
Note While the project uses the G14 moniker this does not mean it only works with ASUS G14 models, in actuality it supports almost all ASUS ROG & TUF laptops.

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

Note The linux-g14 kernel is planned to be replaced by the OGC Kernel. Neither kernel is currently packaged in the AUR, while the linux-g14 kernel remains available in the unofficial g14 repository
Note 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 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.

Note
  • 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

Note The cardwire project is in early development. Bugs and incomplete functionality are to be expected.

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)
Note
  • 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

Warning Supergfxctl is being phased out and its use is unadvised. During this transitioning period where an alternative is in development, unless you require vfio for virtual machines or have problems turning off your dGPU, don't install it.

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

Warning nvidia-laptop-power-cfg should not be blindly installed as udev rules and firmware settings are hardcoded in the package and differences in GPU architecture could harm your GPU and computer. It is preferable to view these as helper configurations.
Note nvidia-laptop-power-cfg is not packaged in the AUR. It is available in the g14 repo only.

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"
Note

Depending on your architecture:

  • You may want to enable and start nvidia-suspend.service, nvidia-hibernate.service, nvidia-resume.service and nvidia-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