1. 为什么要在 Ubuntu 上折腾 ROG 的驱动
如果你手头有一台 ROG 的笔记本或者主板,又恰好把系统换成了 Ubuntu,那你大概率经历过这么几个瞬间:风扇狂转但温度压不住、键盘灯效全灭、Fn 快捷键按了没反应、独显一直通电导致电池尿崩。这些问题不是 Ubuntu 的锅,也不是硬件的锅,而是华硕那套 Aura、Armoury Crate 之类的控制软件压根没给 Linux 做适配。
asusctl和supergfxctl这两个工具就是社区里一帮 ROG 用户自己啃出来的解决方案。前者负责风扇曲线、键盘灯效、电池充电阈值、性能模式切换这些“整机控制”的活;后者专门管显卡切换,也就是在集显、独显、混合输出之间做动态调度。两个配合起来用,基本能把 ROG 机器在 Windows 下能做的硬件控制,在 Ubuntu 上还原个七八成。
这篇文章适合谁看?如果你刚装完 Ubuntu,发现机器“能跑但不对劲”,那这篇就是给你写的。如果你已经在用 asusctl 但只会敲一两个命令,不知道怎么调风扇曲线、怎么让独显按需启停,那这篇也能帮你把剩下的部分补齐。我会从安装、配置、调参到排错,把整个流程拆开讲清楚,包括我踩过的坑和实测有效的参数。
需要提前说明的是,ROG 的型号非常多,不同年份、不同模具的硬件控制接口差异很大。我下面讲的方法在 2021 年之后的多数 ROG 笔记本(G14、G15、M16、Strix 系列)上验证过,老机型可能需要额外打补丁或者部分功能不可用。具体到你的机器,建议先确认内核版本和 ACPI 接口支持情况,再动手。
2. 安装前的环境确认与依赖准备
2.1 确认你的机器型号和内核版本
动手之前先做两件事:查型号、查内核。型号决定了你的机器有没有对应的 ACPI 接口,内核版本决定了 asusctl 能不能正常加载模块。
# 查看主板/笔记本型号 sudo dmidecode -s system-product-name # 查看内核版本 uname -rasusctl 对内核有要求,一般建议 5.15 以上,6.x 系列支持更好。如果你还在用 5.4 或者更老的内核,风扇曲线和灯效控制大概率会出问题。Ubuntu 22.04 默认是 5.15,22.04.3 之后升到了 6.2,24.04 是 6.8,这些都没问题。
另外确认一下你的机器是不是真的走 asus-wmi 或者 asus-nb-wmi 这套接口:
lsmod | grep asus正常应该能看到asus_wmi、asus_nb_wmi之类的模块。如果什么都没有,说明你的机器可能走的是别的控制路径,asusctl 不一定能用。
2.2 添加官方软件源而不是直接 apt install
Ubuntu 官方仓库里其实有 asusctl,但版本通常比较旧,功能不全。我建议直接用开发者维护的 PPA,版本新、更新快。
sudo add-apt-repository ppa:asus-linux-team/ppa sudo apt update这里有个细节:这个 PPA 同时提供 asusctl 和 supergfxctl,还有 rog-control-center 这个图形界面。如果你只想要命令行工具,装前两个就够了;如果想要个能点来点去的面板,可以把第三个也装上。
提示:添加 PPA 之前确认你的系统时间是对的,时间不对会导致 GPG 签名验证失败,报“NO_PUBKEY”的错。
2.3 安装核心包和图形界面
sudo apt install asusctl supergfxctl sudo apt install rog-control-center # 可选,图形界面装完之后先别急着重启,检查一下服务状态:
systemctl status asusd systemctl status supergfxdasusd是 asusctl 的后台守护进程,负责实际跟硬件通信;supergfxd是显卡切换的守护进程。两个都应该是 active (running) 状态。如果没起来,先看日志:
journalctl -u asusd -n 50常见原因是内核模块没加载或者权限问题,日志里会写得很清楚。
2.4 把用户加入必要组
asusctl 的部分功能需要访问特定的设备节点,普通用户默认没权限。把当前用户加到users组通常就够了,但有些发行版需要额外处理 udev 规则。PPA 安装的包一般会自动处理,装完重新登录一次即可。
sudo usermod -aG users $USER改完组之后必须重新登录,光newgrp有时候不生效,因为守护进程的权限是启动时确定的。
3. asusctl 核心功能拆解与实操
3.1 性能模式切换:从静音到狂暴
asusctl 最常用的功能就是切性能模式。ROG 机器一般有静音、平衡、性能、狂暴几档,对应不同的 CPU/GPU 功耗墙和风扇策略。
# 查看当前支持的平台配置 asusctl profile -l # 切换到平衡模式 asusctl profile -P Balanced # 切换到性能模式 asusctl profile -P Performance不同型号支持的档位不一样,有的只有三档,有的有四档。-l列出来的就是你的机器实际支持的。切换之后可以用sensors或者watch -n 1 sensors观察温度和频率变化。
这里有个经验:狂暴模式(Performance 或 Turbo)在插电时确实能压住高负载,但拔电之后如果还开着狂暴,电池掉得飞快,而且风扇噪音在图书馆这种场合会很尴尬。我的做法是写个脚本,根据是否插电自动切换模式。
3.2 风扇曲线自定义:让温度和噪音平衡
默认的风扇曲线是华硕调的,偏保守,经常是温度还没上来风扇就先吼起来了。asusctl 允许你自定义曲线,这是它最有价值的功能之一。
# 查看当前风扇曲线 asusctl fan-curve -m Balanced -d cpu -g # 设置 CPU 风扇曲线(温度点:转速百分比) asusctl fan-curve -m Balanced -d cpu -s "30:0,40:15,50:30,60:50,70:75,80:90,90:100"参数格式是“温度:转速百分比”,温度点必须递增。上面这条的意思是:30 度不转,40 度 15%,50 度 30%,以此类推。实际调的时候建议先看默认曲线长什么样,再在它的基础上微调,不要一上来就大改。
注意:风扇曲线设置是分模式的,你在 Balanced 下设的曲线不会影响 Performance 模式。每个模式都要单独设。
我自己的调法是:Balanced 模式下把 60 度以下的转速压低,让日常办公安静;Performance 模式下把 70 度以上的转速拉高,保证高负载不降频。这样两套曲线各司其职,比默认的一刀切好用很多。
3.3 键盘灯效与 Aura 控制
ROG 的键盘灯效在 Linux 下一直是个痛点,asusctl 支持了大部分基础灯效。
# 查看支持的灯效 asusctl led-mode -l # 设置静态单色 asusctl led-mode static -c ff0000 # 设置呼吸效果 asusctl led-mode breathe -c 00ff00 # 设置彩虹循环 asusctl led-mode rainbow颜色用十六进制 RGB 表示,ff0000是红,00ff00是绿,0000ff是蓝。部分机型还支持分区控制,比如键盘左右两侧不同颜色,这个要看具体型号。
有个坑要注意:灯效设置在重启后可能会丢失,因为 asusd 启动时不一定能恢复上次的状态。解决办法是写个 systemd service 或者放到~/.config/autostart里,开机自动执行一次设置命令。
3.4 电池充电阈值:延长电池寿命
长期插电使用的笔记本,电池一直充到 100% 会加速老化。asusctl 可以设置充电上限,这个功能对台式替代型用户特别有用。
# 设置充电上限为 80% asusctl battery -c 80 # 查看当前阈值 asusctl battery -t一般建议长期插电设 60% 到 80% 之间,经常移动使用就设 100%。这个设置是写在 EC 里的,重启后依然有效,不需要每次开机重设。
4. supergfxctl 显卡切换的完整流程
4.1 理解三种显卡模式的区别
supergfxctl 的核心是三种模式,理解它们的区别是正确使用的前提。
| 模式 | 含义 | 功耗 | 性能 | 适用场景 |
|---|---|---|---|---|
| Integrated | 只用集显,独显断电 | 最低 | 最弱 | 移动办公、看视频 |
| Hybrid | 集显输出,独显按需启用 | 中等 | 较强 | 日常使用、轻度游戏 |
| VFIO | 独显直通给虚拟机 | 中等 | 取决于虚拟机 | 虚拟机跑 Windows 游戏 |
Hybrid 模式是默认推荐,独显平时断电,需要时再唤醒。Integrated 模式最省电,但外接显示器可能不亮(因为很多 ROG 的 HDMI/DP 是直连独显的)。VFIO 模式比较小众,适合用虚拟机跑需要独显的场景。
# 查看当前模式 supergfxctl -g # 查看支持的模式 supergfxctl -s # 切换到集显模式 supergfxctl -m Integrated # 切换到混合模式 supergfxctl -m Hybrid切换模式后需要注销重新登录,部分情况下需要重启。这是因为显卡切换涉及 Xorg/Wayland 的重新初始化,不是热切换。
4.2 切换前的准备工作
切显卡模式之前,务必做两件事:保存工作、关闭所有图形程序。切换过程中显示会闪断,如果有未保存的文档可能丢失。
另外,如果你装了 NVIDIA 驱动,切换模式后驱动可能需要重新加载。建议在切换前确认驱动状态:
nvidia-smi如果这条命令报错,说明驱动没正常工作,先解决驱动问题再切模式,否则切完可能进不了图形界面。
4.3 验证切换是否生效
切换并重启后,用这几个命令验证:
# 查看当前模式 supergfxctl -g # 查看显卡状态 supergfxctl -S # 查看独显是否断电 cat /sys/class/drm/card*/device/power_statepower_state显示D3cold或者suspended说明独显已经断电,这是 Integrated 模式下的正常状态。如果显示D0,说明独显还在通电,可能是某个进程占用着它。
用lsof /dev/nvidia*可以查是哪个进程占用了独显,常见的是浏览器硬件加速、Steam、或者某些 Electron 应用。
4.4 外接显示器的坑
这是 ROG 用户最容易踩的坑:很多机型的 HDMI 和部分 Type-C 接口是直连独显的,在 Integrated 模式下这些接口完全不输出信号。如果你经常外接显示器,Integrated 模式基本没法用,只能留在 Hybrid。
判断方法很简单:切到 Integrated,插上 HDMI,看显示器亮不亮。不亮就是直连独显。这个信息在买机器的时候一般查不到,只能自己试。
5. 常见问题排查与避坑经验
5.1 asusd 启动失败怎么办
最常见的原因是内核模块冲突。有些机器同时加载了asus_wmi和asus_nb_wmi,两者会抢设备节点。
# 查看模块加载情况 lsmod | grep asus # 如果两个都在,尝试屏蔽一个 echo "blacklist asus_nb_wmi" | sudo tee /etc/modprobe.d/blacklist-asus.conf sudo update-initramfs -u改完重启,再看 asusd 状态。如果还是起不来,看日志里具体报什么错,一般是权限或者设备节点路径不对。
5.2 风扇曲线设置了没效果
有几种可能:一是设置的模式和当前模式不匹配,你在 Balanced 下设的曲线,切到 Performance 就不生效;二是 EC 固件版本太老,不支持自定义曲线;三是设置命令执行了但没写入 EC。
验证方法:
# 设置后立即读回 asusctl fan-curve -m Balanced -d cpu -g如果读回来的和你设的不一样,说明写入失败。这时候试试先切到别的模式再切回来,或者重启 asusd:
sudo systemctl restart asusd5.3 独显断电后无法唤醒
Hybrid 模式下独显按需唤醒,但有时候唤醒了之后驱动加载失败,表现为nvidia-smi报错或者程序崩溃。这通常是驱动版本和内核版本不匹配导致的。
解决办法是确保 NVIDIA 驱动是通过 Ubuntu 官方仓库或者官方 runfile 安装的,不要混用。如果已经混用了,先彻底卸载再重装:
sudo apt purge nvidia-* sudo apt autoremove sudo apt install nvidia-driver-535 # 版本按你的显卡选5.4 常见问题速查表
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| asusd 起不来 | 模块冲突或权限问题 | 屏蔽冲突模块,检查日志 |
| 风扇曲线无效 | 模式不匹配或 EC 不支持 | 确认当前模式,更新 BIOS |
| 独显无法唤醒 | 驱动版本不匹配 | 重装 NVIDIA 驱动 |
| 灯效重启丢失 | 未设置开机自启 | 写 autostart 或 service |
| 外接显示器不亮 | 接口直连独显 | 切回 Hybrid 模式 |
| 切换模式后黑屏 | 驱动未正确加载 | 进 TTY 重装驱动 |
5.5 我踩过的几个坑
第一个坑是 PPA 版本和系统版本不匹配。我有一次在 22.04 上装了给 24.04 编译的包,结果 asusd 一直 segfault。后来老老实实按系统版本装对应的包就好了。
第二个坑是风扇曲线设得太激进。我一开始把 60 度就设到 80% 转速,结果日常办公风扇一直响,体验极差。后来改成 60 度 40%,70 度 70%,噪音和温度才平衡。
第三个坑是 Integrated 模式下忘了外接显示器的事,开会投屏的时候发现 HDMI 没信号,临时切回 Hybrid 又来不及。现在我默认就留在 Hybrid,只有明确要长时间移动办公才切 Integrated。
6. 进阶玩法与自动化配置
6.1 根据电源状态自动切换模式
手动切模式太麻烦,写个 udev 规则或者 systemd service 自动处理更省心。下面是一个基于电源状态的脚本思路:
#!/bin/bash # /usr/local/bin/auto-profile.sh if on_ac_power; then asusctl profile -P Performance supergfxctl -m Hybrid else asusctl profile -P Quiet supergfxctl -m Integrated fi然后写个 systemd service 监听电源事件,或者用acpid触发。这样插电自动切性能模式,拔电自动切省电模式,不用手动管。
6.2 用 rog-control-center 做图形化管理
如果你不想记命令,rog-control-center 提供了图形界面,风扇曲线、灯效、性能模式都能点着调。它的底层还是调 asusctl,所以命令行能做的它基本都能做。
不过图形界面有个缺点:风扇曲线的拖拽调整不如命令行精确,而且有时候改了不立即生效,需要点应用再确认。我一般是命令行调好参数,图形界面用来看状态。
6.3 备份和恢复配置
asusctl 的配置存在/etc/asusd/下面,主要是风扇曲线和灯效设置。换系统或者重装之前备份这个目录,能省不少重新调参的时间。
sudo tar czf asusd-config-backup.tar.gz /etc/asusd/恢复的时候解压回去,重启 asusd 即可。注意不同机型的配置文件格式可能不一样,跨机型恢复不一定能用。
6.4 内核升级后的注意事项
Ubuntu 升级内核之后,asusctl 和 supergfxctl 可能需要重新编译内核模块(如果装的是 DKMS 版本)。升级完先检查:
dkms status如果显示模块没编译,手动触发:
sudo dkms autoinstall另外,新内核有时候会改变 ACPI 接口的行为,导致原本能用的功能失效。遇到这种情况先别急着降级内核,等几天看看 asusctl 有没有更新,社区一般会很快跟进。
7. 一些实际使用中的体会
这套工具用下来,最大的感受是“能用但别指望完美”。asusctl 和 supergfxctl 覆盖了 ROG 在 Linux 下最核心的硬件控制需求,但细节上还是有不少毛刺。比如灯效的过渡动画不如 Windows 下流畅,风扇曲线的响应有轻微延迟,显卡切换偶尔需要重启两次才生效。
但话说回来,没有这两个工具的时候,ROG 在 Ubuntu 下基本就是台“能跑的普通笔记本”,风扇乱转、灯全灭、独显常驻。有了它们之后,至少日常使用体验能接近 Windows 的八成。对于必须用 Linux 又不想放弃 ROG 硬件的用户来说,这已经是目前最优解了。
我的建议是:先把基础功能跑通,性能模式和显卡切换能用起来,再慢慢调风扇曲线和灯效。不要一上来就追求完美配置,那样容易在细节上卡住,反而影响正常使用。遇到问题先看日志,journalctl -u asusd和journalctl -u supergfxd能解决八成以上的疑惑。剩下的,社区里基本都有人踩过,搜一下型号加关键词,大概率能找到答案。