tsune Help

linux on ASUS expert book ultra

OS: Cachy OS

Cachy OS supports linux 7.x

Touchpad

sudo install -d -m 0755 /etc/libinput sudo tee /etc/libinput/local-overrides.quirks >/dev/null <<'EOF' [ASUS ExpertBook Ultra B9406 Touchpad] MatchUdevType=touchpad MatchBus=i2c MatchVendor=0x093A MatchProduct=0x4F05 MatchDMIModalias=dmi:*svnASUS*:pn*B9406* AttrEventCode=-ABS_MT_PRESSURE;-ABS_PRESSURE; EOF

then reboot

Brightness

append xe.enable_dpcd_backlight=2 to your limine config

cat /etc/default/limine ESP_PATH="/boot" KERNEL_CMDLINE[default]+="quiet nowatchdog splash rw rootflags=subvol=/@ root=UUID=<REDACTED> xe.enable_dpcd_backlight=2" BOOT_ORDER="*, *lts, *fallback, Snapshots"

apply cmdline

sudo limine-mkinitcpio

then reboot

Audio

See cat /proc/asound/cards you will confirm:

--- no soundcards ---

patch to your kernel

git clone https://github.com/CachyOS/linux-cachyos.git cd linux-cachyos/linux-cachyos

fix prefix

sed -i '/^pkgbase="linux-\$_pkgsuffix"$/i _pkgsuffix=cachyos-soundpatch' PKGBUILD

extract source code

makepkg -os

Then see drivers/soundwire/dmi-quirks.c. You will confirm

{ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ASUS"), DMI_MATCH(DMI_BOARD_NAME, "UX5406AA"), }, .driver_data = (void *)ghost_realtek, },

Append patched data next to the code

{ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ASUS"), DMI_MATCH(DMI_BOARD_NAME, "B9406CAA"), }, .driver_data = (void *)ghost_realtek, },

You will see the diff like:

[becky@chang linux-cachyos]$ diff -u \ "$SRC/drivers/soundwire/dmi-quirks.c.orig" \ "$SRC/drivers/soundwire/dmi-quirks.c" --- /home/becky/app/linux-cachyos/linux-cachyos/src/cachyos-7.2.0-1/drivers/soundwire/dmi-quirks.c.orig 2026-08-26 15:28:13.575882895 +0900 +++ /home/becky/app/linux-cachyos/linux-cachyos/src/cachyos-7.2.0-1/drivers/soundwire/dmi-quirks.c 2026-08-26 15:28:55.024220995 +0900 @@ -187,6 +187,13 @@ }, { .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUS"), + DMI_MATCH(DMI_BOARD_NAME, "B9406CAA"), + }, + .driver_data = (void *)ghost_realtek, + }, + { + .matches = { DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), DMI_MATCH(DMI_PRODUCT_NAME, "83QK"), },

then build patched kernel

makepkg -esi

after reboot, exec amixer -c 0 sset 'Speaker' on to turn on the speaker

GPU

You can use xpu

i.e.,

import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt from tqdm import tqdm class SimpleCNN(nn.Module): def __init__(self): super().__init__() self.conv_stack = nn.Sequential( nn.Conv2d(1, 8, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2), nn.Conv2d(8, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2), ) self.fc_stack = nn.Sequential( nn.Flatten(), nn.Linear(16 * 7 * 7, 64), nn.ReLU(), nn.Linear(64, 10), ) def forward(self, x): return self.fc_stack(self.conv_stack(x)) assert(torch.xpu.is_available()) device = torch.device("xpu") transform = transforms.ToTensor() train_data = datasets.MNIST(root="./data", train=True, download=True, transform=transform) test_data = datasets.MNIST(root="./data", train=False, download=True, transform=transform) train_loader = DataLoader(train_data, batch_size=2**8, shuffle=True) test_loader = DataLoader(test_data, batch_size=2**8, shuffle=False) model = SimpleCNN().to(device) criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=1e-3) EPOCHS = 100 for epoch in range(EPOCHS): model.train() for images, labels in tqdm(train_loader, desc=f"Epoch {epoch+1}/{EPOCHS}"): images, labels = images.to(device), labels.to(device) optimizer.zero_grad() loss = criterion(model(images), labels) loss.backward() optimizer.step() model.eval() correct = total = 0 with torch.no_grad(): for images, labels in test_loader: images, labels = images.to(device), labels.to(device) preds = model(images).argmax(dim=1) correct += (preds == labels).sum().item() total += labels.size(0) print(f"Inference accuracy: {correct/total:.4f}")
Last modified: 19 October 2026