Arch Setup Guide

A simple guide for getting Arch running on ASUS laptops

Arch Linux

Arch Linux is the preferred distro and the only one that is directly supported by asusctl maintainers.

Since it can be complicated to install arch, in case you don't want even try archinstall, we also suggest trying:

  • EndeavourOS as it feels more like a cohesive distro rather than a collection of software to install and configure.
  • CachyOS since it has a very easy step by step guide, and it has an amazing out-of-the-box experience.
  • garuda is also pretty popular and has gained a fair share of users.

Every linux kernel past and including 6.19 has everything needed to provide a smooth experience, but it is advised to install a kernel from OGC.

If you own a ROG Ally or ROG Ally X ChimeraOS might be a good choice.

Content

Introduction

Read the Intro guide first to avoid bad surprises, especially if you plan to remove windows entirely.

Installation

To install Arch just follow the regular installation guide for the official archlinux or the procedure provided by your distro of choice.

The suggested bootloader is systemd-boot. Avoid using GRUB.

Also remember to install these:

pacman -S linux-firmware amd-ucode intel-ucode

choose either amd-ucode or intel-ucode depending on your CPU.

If you are using the official archlinux read the article about vulkan and install whatever your iGPU might need.

Repo

Note: If you are using CachyOS, it doesn't require adding this repo; you can skip this step.

g14 repo contains all the tools you need on a ROG laptop precompiled for you. g14 is only a name and all tools from it apply to most ROG laptops Before adding the repo you need to add the repo sign key to your pacman-key. Run the following commands to add it:

sudo pacman-key --recv-keys 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
sudo pacman-key --finger 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
sudo pacman-key --lsign-key 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
sudo pacman-key --finger 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35

This should show output similar to this: Pacman key If you have any problems check if /etc/pacman.d/gnupg/gpg.conf doesn't have specified the keyserver or make sure it is hkp://keyserver.ubuntu.com If you still have problems check if you are not running some active VPN connection, this does sometimes cause problems when fetching the server. If you still have problems you can do it the less proper way by running those commands:

wget "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8b15a6b0e9a3fa35" -O g14.sec
sudo pacman-key -a g14.sec

After that to get the repo add to your /etc/pacman.conf at the end:

[g14]
Server = https://arch.asus-linux.org

You could use a mirror instead if the origin has slow connection. Following is a list of available servers:

https://arch.asus-linux.org # Germany, origin
https://naru.jhyub.dev/$repo # Republic of Korea

After adding the repo run a full system update before you go to install tools from the repo:

sudo pacman -Suy

Asusctl - custom fan profiles, anime, led control etc.

The recommended way to install asusctl is using g14 pacman repo. Packages like asusctl-git from AUR aren't supported. Also installing manually from cloned git isn't supported. For installing it run:

sudo pacman -S asusctl

asusd service is triggered by a udev rule after the keyboard driver is ready, the service doesn't need to be enabled and is not supposed to be.

Note: Asusctl is designed to work primarily with power-profiles-daemon; other power management tools can create conflicts with asusctl; if you're using an Arch-based distro, you may already have ppd installed, so you might not need to follow this step, as in CachyOS.

sudo pacman -S power-profiles-daemon
systemctl enable --now power-profiles-daemon.service

Be aware that some functions or asusctl need kernel level drivers support, take a look at the "Custom kernel section"

ROG Control Center

ROG Control Center is a GUI tool for configuring few aspects of asusctl and supergfxctl. It was previously part of the asusctl package, but has now been separated as its own package in G14 repo. After adding the repo to /etc/pacman.conf as stated above, then you can install the tool:

sudo pacman -S rog-control-center

GUI Main Window

Custom kernel - drivers fixes, hardware support

After Linux 6.19, you shouldn't need a custom kernel. However, if you're using an older version or if your device has a feature that hasn't been included in the main kernel release yet, you can use the CachyOS kernel or the OGC kernel.


Testing kernel

The kernel below is the one the Asus-Linux team uses to test new features; you should only install this kernel if you are involved in testing a specific feature.

The kernel is available in the g14 pacman repo, to install it just run:

sudo pacman -Sy linux-g14 linux-g14-headers

Again, don't get confused by the name, it exists only for historical reasons.


If you are using a custom kernel use the nvidia-open-dkms package for nvidia drivers, the regular nvidia package works only with stock Arch kernel

After installing the new kernel you need to regenerate your boot menu or add a new boot entry depending on what boot manager you are using.

Systemd-boot

sudo bootctl update

Limine

sudo limine-update

Grub

sudo grub-mkconfig -o /boot/grub/grub.cfg

For others refer to their documentation/Arch Wiki page. You can check currently booted kernel with command uname -r. It should give you for example:

6.18.1-arch1-g14-1

The -g14 part is the important one.

nVidia

Turing architecture (GTX 1600 cards / Rtx 2000 cards)

Systems equipped with a Turing architecture GPU (for example, GTX 1650 in the Zephyrus G14, GA401IHR) require manual installation of the udev rules and modprobe configuration provided by nvidia-laptop-power-cfg with some slight modifications.

  1. Install the proprietary NVIDIA driver package. According to the Arch Wiki, Turing GPUs cannot enable proper power management when GSP firmware is active. You cannot disable GSP firmware on nvidia-open package. The proprietary driver package must therefore be used to enable correct power management functionality.
  2. Create the modprobe configuration. Create /etc/modprobe.d/nvidia.conf with the following contents:
options nvidia_drm modeset=1

options nvidia NVreg_EnableGpuFirmware=0 NVreg_EnableS0ixPowerManagement=1 NVreg_DynamicPowerManagement=0x02

NVreg_EnableGpuFirmware=0 is necessary here to disable GSP firmware.

  1. Add the udev rule. Create /usr/lib/udev/rules.d/80-nvidia-pm.rules with the contents from: https://gitlab.com/asus-linux/nvidia-laptop-power-cfg/-/blob/main/nvidia.rules

Ampere architecture (RTX 3000) or later

If you have an nvidia GPU with Ampere architecture or later on your laptop You should install nvidia-laptop-power-cfg

git clone https://gitlab.com/asus-linux/nvidia-laptop-power-cfg.git
cd nvidia-laptop-power-cfg
makepkg -sfi

Next steps

If you haven't done already enable nvidia services:

systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service
systemctl enable --now nvidia-powerd

# Only enable this if you plan to use the feature (unless you know exactly what it does don't touch it)
# systemctl enable nvidia-suspend-then-hibernate.service

After a reboot you should see the GPU turning on when needed and off when it's not needed anymore.

Additionally you should query the status of your GPU with

cat /proc/driver/nvidia/gpus/bus_address/power 

the bus_address will be different on each model, just use the autocompletion feature of bash spamming tab; the correct result is similar to this:

S0ix Power Management:
 Platform Support:          Supported
 Status:                    Enabled

If S0ix platform support is supported you want to ensure it is enabled: this is important for sleep and idle power consumption!

Make sure you also install the vulkan adapter for mesa as well:

sudo pacman -S nvidia-utils vulkan-icd-loader

NOTE For this supergfxctl is NOT needed!

When the laptop is fully configured you should see the rog-control-center icon in the taskbar (if you have a taskbar like in KDE) that changes between blue and red color depending on the nvidia status. A quick test is ensuring it is blue when no external screen or USB-C dock is connected and it goes red when you execute the command:

nvidia-smi

Secure Boot

Arch

On Arch Linux, the easiest way is to use sbctl.

NOT FOR DERIVATES you can use the AUR package sbctl-dracut-conf or limine-dracut-support to quickly configure the system for secure boot.

Install that package, put your laptop in Setup Mode > Advanced Mode (F7) > Security, Secure Boot > Expert Key Management > Reset To Setup Mode on the UEFI menu and boot into archlinux, then issue:

sudo sbctl create-keys
sudo sbctl enroll-keys -m

Grub bootloader

You can follow the wiki for more information.

Systemd-boot bootloader

In systemd-boot, you need to sign several files, which will depend on your specific setup, but the following commands should cover most cases. However, you can check the wiki to be sure.

sudo sbctl verify | sed -E 's|^.* (/.+) is not signed$|sbctl sign -s "\1"|e'
sudo sbctl sign -s -o /usr/lib/systemd/boot/efi/systemd-bootx64.efi.signed /usr/lib/systemd/boot/efi/systemd-bootx64.efi

Then it is best to reinstall the kernel and ensure it got signed.

# use the following command depending on your initramfs generator
# dracut (provided by sbctl-dracut-conf)
sudo dracut-regen 
# mkinitcpio
sudo mkinitcpio -P

Limine bootloader

Limine has its own mechanism for signing the bootloader and kernels; check the wiki for more details like dracut or mkinitcpio, but it should be very simple.

Limine uefi since 11.2.0 requires to enable automatic config checksum enrollment, set the following line in /etc/default/limine (provided by limine-dracut-support or limine-mkinitcpio-hook):

ENABLE_ENROLL_LIMINE_CONFIG=yes

Then run the following commands to enroll the config and update the bootloader:

sudo limine-enroll-config
sudo limine-update

Verify signed files

You have to ensure the bootloader is signed too, otherwise the UEFI won't load it and display you an error message about insecure OS being prevented to be loaded.

To check signed files you have to use

sudo sbctl verify

A correctly configured system produces this output:

sudo sbctl verify
  Verifying file database and EFI images in /boot...
  ✗ /boot/EFI/BOOT/BOOTIA32.EFI is not signed
  ✗ /boot/EFI/BOOT/BOOTX64.EFI is not signed
  ✗ /boot/EFI/Linux/arch-linux.efi is not signed
  ✓ /boot/EFI/Linux/f1710a77781f46bcb9be1b9221102a38_linux.efi is signed
  ✓ /boot/EFI/limine/limine_x64.efi is signed
  ✗ /boot/vmlinuz-linux is not signed

In this case, I use limine along with UKI, which signs only a few files, but in principle it should be the bootloader and kernel-related files that should be signed, otherwise the system won't boot.

After the first reboot your laptop will automatically exit setup mode and secure boot will work.

You can check it using this command:

sbctl status
  Installed:      ✓ sbctl is installed
  Owner GUID:     a9fbbdb7-a05f-48d5-b63a-08c5df45ee70
  Setup Mode:     ✓ Disabled # this should be disabled after the first reboot
  Secure Boot:    ✓ Enabled
  Vendor Keys:    microsoft

This is a do-and-forget thing: once the initial setup is done no manual intervention is needed and every new kernel will be automatically signed.

WARNING This is Arch's official method; derivatives may vary, as in the case of CachyOS, so it is advisable to consult the wiki or forums for the respective Arch derivative.

CachyOS

To enable Secure Boot on CachyOS, please follow the CachyOS Secure Boot Setup guide.


Other distros based on Arch

EndeavourOS

When installing EndeavourOS do not use the option with the Nvidia drivers preinstalled. This installs configs which might conflict with supergfxctl, furthermore that driver only works with the stock kernel. Use the default install option then install nvidia-open-dkms post install.

Supergfxctl - graphics switching [Deprecated]

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

WARNING Read the supergfxctl manual first!

The same rules as for asusctl, installing:

sudo pacman -S supergfxctl

Enable and start the systemd service:

systemctl enable --now supergfxd

supergfxctl can be used without asusctl.

Legal Matters

ASUS and ROG Trademark is either a US registered trademark or trademark of ASUSTeK Computer Inc. in the United States and/or other countries.

Reference to any ASUS products, services, processes, or other information and/or use of ASUS Trademarks does not constitute or imply endorsement, sponsorship, or recommendation thereof by ASUS.

The use of ROG and ASUS trademarks within this website and associated tools and libraries is only to provide a recognisable identifier to users to enable them to associate that these tools will work with ASUS ROG laptops.

Privacy Policy

We use Matomo

Matomo is an open source web analytics platform. A web analytics platform is used by a website owner in order to measure, collect, analyse and report visitor data for purposes of understanding and optimizing their website.

Purpose of the processing

Matomo is used to get an idea how our website is used by our users so we can optimize things further so that the user may find the most relevant information more quickly.

Data Matomo is processing

  • User IP address
  • Optional User ID
  • Date and time of the request
  • Title of the page being viewed
  • URL of the page being viewed
  • Referrer URL
  • Screen resolution being used
  • Time in local user’s timezone
  • Files that were clicked and downloaded
  • Links to an outside domain that were clicked
  • Page generation time
  • User location: country, region, city, approximate latitude and longitude
  • Main Language of the browser being used
  • User Agent of the browser being used

Pick up the one you are using:

  • Cookies
  • IP address
  • User ID
  • Custom Dimensions
  • Custom Variables
  • Location of the user

And also:

  • Date and time
  • Title of the page being viewed
  • URL of the page being viewed
  • URL of the page that was viewed prior to the current page
  • Screen resolution
  • Time in local timezone
  • Files that were clicked and downloaded
  • Link clicks to an outside domain
  • Pages generation time
  • Country, region, city
  • Main Language of the browser
  • User Agent of the browser

This list can be completed with additional features such as:

  • Form interactions
  • Media interactions
  • A/B Tests

The processing of personal data with Matomo is based on legitimate interests

If you wish us to not process any personal data with Matomo, you can opt-out from it at any time. There will be no consequences at all regarding the use of our website.

You can withdraw at any time your consent by clicking here

The right to lodge a complaint with a supervisory authority

If you think that the way we process your personal data with Matomo analytics is infringing the law, you have the right to lodge a complaint with a supervisory authority.

We are not doing any profiling.