Ubuntu 26.04 编译 asusctl

环境

  • 机型:ASUS ROG Strix G733ZM(RTX 3060 Mobile,i9-12900H)
  • 系统:Ubuntu 26.04,Wayland
  • 内核:7.0.0-14-generic
  • 桌面:KDE Plasma

为什么折腾

Linux 下需要替代 Armoury Crate 的工具:风扇曲线和 RGB 控制。asusctl 是社区主导的 ASUS Linux 控制工具,主流发行版有包,Ubuntu 标记为 "Officially unsupported"。我是ubuntu 信徒,我拒绝在我想稳定使用的电脑上安装arch

asusctl 仅支持 Wayland。asus-armoury 驱动要求内核 ≥ 6.19。两项均满足。

先确认硬件匹配

cat /sys/class/dmi/id/sys_vendor
# ASUSTeK COMPUTER INC.

lsusb | grep -i asus
# 0b05:19b6 ASUSTek Computer, Inc. N-KEY Device

0b05:19b6 命中 N-KEY 设备列表。asus-armoury、asus_nb_wmi、hid_asus 已加载。

编译

Ubuntu 仓库的 Rust 版本低于项目要求,需 rustup:

sudo apt install -y git cmake clang pkg-config \
    libclang-dev libudev-dev libxkbcommon-dev \
    libzip-dev libssl-dev libgtk-3-dev \
    libpcre2-dev libzstd-dev libexpat1-dev \
    build-essential

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

git clone https://github.com/OpenGamingCollective/asusctl.git
cd asusctl
cargo build --release

安装二进制与 udev 规则:

sudo cp target/release/asusd /usr/bin/
sudo cp target/release/asusctl /usr/bin/
sudo cp data/asusd.rules /lib/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

问题 1 D-Bus 策略

按 README 执行 systemctl enable --now asusd.service:

The unit files have no installation config (WantedBy=, RequiredBy=, UpheldBy=,
Also=, or Alias= settings in the [Install] section, and DefaultInstance= for
template units). ...
Job for asusd.service failed because the control process exited with error code.

asusd.service 为 Type=dbus,无 [Install] 段。enable 警告可忽略。

daemon 启动失败。journalctl:

Connection ":1.144" is not allowed to own the service "xyz.ljones.Asusd"
  due to security policies in the configuration file

daemon 注册 D-Bus 总线名 xyz.ljones.Asusd。Ubuntu 的 dbus-daemon 默认拒绝未知名字的所有权声明。

安装 data/asusd.conf:

sudo cp data/asusd.conf /etc/dbus-1/system.d/
sudo systemctl reset-failed asusd.service
sudo systemctl start asusd.service

验证:

sudo cp data/asusd.service /etc/systemd/system/
sudo cp data/asus-shutdown.service /etc/systemd/system/
sudo systemctl daemon-reload

asusd 由 D-Bus 激活,不需 enable。asus-shutdown 有 [Install] 段。

CLI 测试

let mut file = OpenOptions::new()
    .read(true)
    .open(&path)
    .unwrap_or_else(|_| panic!("Missing icon: {:?}", path));

资源路径硬编码,缺失直接 panic!。

安装 6 个通知图标:

sudo install -D -m 644 ~/asusctl/data/icons/asus_notif_*.png \
                  -t /usr/share/icons/hicolor/512x512/apps/

再次启动:

Missing icon: "/usr/share/icons/hicolor/512x512/apps/rog-control-center.png"

rog-control-center.png 不在仓库中,仅有 data/icons/scalable/rog-logo.svg。

SVG 转 PNG:

sudo apt install -y librsvg2-bin
rsvg-convert -w 512 -h 512 ~/asusctl/data/icons/scalable/rog-logo.svg \
             -o /tmp/rog-control-center.png
sudo install -m 644 /tmp/rog-control-center.png \
                /usr/share/icons/hicolor/512x512/apps/rog-control-center.png

第三次启动成功。

遇到 的问题

  1. D-Bus 所有权:xyz.ljones.Asusd 需在 /etc/dbus-1/system.d/*.conf 显式声明。asusd.conf 为必需文件。
  2. Slint 资源路径硬编码:缺失时 panic!,无 fallback。源码编译需手动 copy 资源。
  3. Type=dbus service:无 [Install] 段,由 D-Bus 激活。enable 警告可忽略。
  4. README 面向 Arch:AUR 的 PKGBUILD 自动处理 service、udev、D-Bus 配置。Ubuntu 源码编译需手动补齐。
  5. 崩溃栈作为文档:tray.rs:39 等行号直接定位项目结构和资源约定。

小结

  • Ubuntu 26.04 + asusctl:可用,需源码编译。
  • 手动步骤:asusd.service、asusd.conf、6 个 asus_notif_*.png、rog-control-center.png。
添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论