在机械革命无界 15XPro 暴风雪上运行 Linux

最近把工作电脑换成了机械革命无界 15XPro 暴风雪,在收货后小小折腾了一两天后,终于让他大部分的功能工作正常了。

键盘背光跟散热风扇的驱动

可以参考这篇文章中的介绍安装来自德国一家公司维护的驱动。驱动安装好后,还可以安装类似鸡哥控制面板的 TUXEDO 控制面板,切换性能模式跟调整键盘背光 RGB:

内置屏幕掉帧

笔记本内置屏幕在 60Hz 时会频繁随机掉帧,这个现象跟 VRR 有关,需要强制启用 VRR。

除此之外我还遇到了使用 Spectacle 截图时,外置显示器闪烁的问题,需要强制关闭外置显示器的 VRR。

睡眠(suspend)后被立即唤醒

当通过睡眠按键(Fn + F1)或者 systemctl suspend 进入睡眠状态时,系统会被立即唤醒,需要第二次尝试才能成功睡眠。

反复阅读 https://wiki.archlinux.org/title/Power_management 系列文章后,我在 deepseek-r1 的帮助下成功地找出了这个问题的根因。

TLDR

创建一个 udev rule,禁用 PS/2 键盘的 Wakeup Trigger。

# sudoedit /etc/udev/rules.d/99-disable-keyboard-wakeup.rules
# Disable wakeup for PS/2 keyboard controller
ACTION=="add", SUBSYSTEM=="serio", KERNEL=="serio0", ATTR{power/wakeup}="disabled"

然后重载 udev rules:

sudo udevadm control --reload-rules
sudo udevadm trigger

重启系统后验证是否生效:

$ cat /sys/devices/platform/i8042/serio0/power/wakeup
disabled

现在尝试睡眠,就不会被立即唤醒了。

排查过程

首先安装 amd-debug-tools,运行 amd-s2idle test ,查看当前系统是否满足 s2idle 的要求:

$ amd-s2idle test
💻 AMD Ryzen AI 9 H 365 w/ Radeon 880M (family 1a model 24)
💻 MECHREVO WUJIE Series (STX\KRK)
🐧 Arch Linux
🐧 Kernel 6.12.32-1-lts
🔋 Battery BAT0 (OEM standard) is operating at 100.00% of design
✅ ASPM policy set to 'default'
✅ GPIO driver `pinctrl_amd` available
✅ PMC driver `amd_pmc` loaded (Program 11 Firmware 93.4.0)
✅ USB3 driver `xhci_hcd` bound to 0000:65:00.4, 0000:67:00.0, 0000:67:00.3, 0000:67:00.4
✅ USB4 driver `thunderbolt` bound to 0000:67:00.6
✅ System is configured for s2idle
✅ GPU driver `amdgpu` bound to 0000:65:00.0
✅ PC6 and CC6 enabled
✅ SMT enabled
✅ IOMMU properly configured
✅ ACPI FADT supports Low-power S0 idle
🚦 Logs are provided via dmesg, timestamps may not be accurate over multiple cycles
✅ LPS0 _DSM enabled
✅ WLAN driver `mt7921e` bound to 0000:62:00.0
❌ Kernel is tainted: 12288
💯 Your system does not meet s2idle prerequisites!
🗣️ Explanations for your system
🚦 Kernel is tainted
A tainted kernel may exhibit unpredictable bugs that are difficult for this script to characterize. If this is intended behavior run the tool with --force. 
For more information on this failure see:https://gitlab.freedesktop.org/drm/amd/-/issues/3089

可以看到这里提示我的 kernel 被 tainted 了,这是安装 mechrevo-drivers-dkms 引起的,可以忽略。

既然系统符合 s2idle 的要求,说明可能是某个设备在唤醒系统,deepseek 给出了接下来的排查思路,启用 PM 日志:

# Enable verbose PM debugging
echo 1 | sudo tee /sys/power/pm_print_times<br>echo 1 | sudo tee /sys/power/pm_debug_messages
# Now try to suspend again
systemctl suspend
# Check dmesg after resume
dmesg | grep -i "wake\|resume\|acpi"

再次执行 systemctl suspend 复现问题后,可以在 dmesg 中看到下面的日志:

[ 4636.873132] xhci_hcd 0000:67:00.4: PM: pci_pm_suspend_noirq returned 0 after 42252 usecs  
[ 4636.873146] thunderbolt 0000:67:00.6: PM: pci_pm_suspend_noirq returned 0 after 42269 usecs  
[ 4636.873169] pcieport 0000:00:08.3: PM: calling pci_pm_suspend_noirq @ 29723, parent: pci0000:00  
[ 4636.878632] pcieport 0000:00:02.1: PM: pci_pm_suspend_noirq returned 0 after 10561 usecs  
[ 4636.878653] pcieport 0000:00:03.2: PM: pci_pm_suspend_noirq returned 0 after 11025 usecs  
[ 4636.885192] pcieport 0000:00:08.1: PM: pci_pm_suspend_noirq returned 0 after 12279 usecs  
[ 4636.885300] pcieport 0000:00:08.3: PM: pci_pm_suspend_noirq returned 0 after 12119 usecs  
[ 4636.885359] PM: noirq suspend of devices complete after 54.690 msecs  
[ 4636.885376] ACPI: _SB_.PCI0.GPP5: LPI: Constraint not met; min power state:D1 current power state:D0  
[ 4636.885381] ACPI: _SB_.PCI0.GPP6: LPI: Constraint not met; min power state:D1 current power state:D0  
[ 4636.885388] ACPI: _SB_.PCI0.GPP4.SDCR: LPI: Constraint not met; min power state:D3hot current power state:D0  
[ 4636.886012] PM: Triggering wakeup from IRQ 9  
[ 4636.886504] ACPI: _SB_.PEP_: Successfully transitioned to state screen off  
[ 4636.887420] ACPI: _SB_.PEP_: Successfully transitioned to state lps0 ms entry  
[ 4636.887625] ACPI: _SB_.PEP_: Successfully transitioned to state lps0 entry  
[ 4636.888555] PM: suspend-to-idle  
[ 4636.888592] ACPI: EC: ACPI EC GPE status set  
[ 4636.888623] ACPI: PM: Rearming ACPI SCI for wakeup  
[ 4636.891279] PM: Triggering wakeup from IRQ 1  
[ 4639.593124] amd_pmc: SMU idlemask s0i3: 0xffff1abd  
[ 4639.593188] ACPI: PM: Wakeup unrelated to ACPI SCI  
[ 4639.593189] PM: resume from suspend-to-idle  
[ 4639.594699] amd_pmc AMDI000A:00: Last suspend didn't reach deepest state  
[ 4639.595185] ACPI: _SB_.PEP_: Successfully transitioned to state lps0 exit  
[ 4639.595760] PM: Triggering wakeup from IRQ 9  
[ 4639.596746] ACPI: _SB_.PEP_: Successfully transitioned to state lps0 ms exit  
[ 4639.597719] ACPI BIOS Error (bug): Could not resolve symbol [_SB.ACDC.RTAC], AE_NOT_FOUND (20240827/psargs-332)  
[ 4639.597729] ACPI Error: Aborting method _SB.PEP._DSM due to previous error (AE_NOT_FOUND) (20240827/psparse-529)  
[ 4639.597737] ACPI: _SB_.PEP_: Failed to transitioned to state screen on

Deepseek 大胆推断是 IRQ 1 (typically the i8042 keyboard controller) 造成的问题,可以通过下面的方法来验证:

echo "disabled" | sudo tee /sys/devices/platform/i8042/serio0/power/wakeup

重试睡眠后,系统果然安然入睡了~

进入 s2idle 睡眠后,一晚上大概会消耗 10% 左右的电量。

Firefox 播放视频时会触发 GPU 图形崩溃

当启用 Firefox 的硬件加速后,播放视频会让 GPU 崩溃,丢失全部的显存内容。还好这个问题已经被 AMD 修复,升级到最新的内核即可。

色彩管理

机械革命提供了官方的色彩文件,但必须要在 Windows 下安装机械革命控制台才能下载(官方客服并不受理此类咨询)。加载了官方的色彩配置文件后,可以比较明显地缓解低亮度下对比度过低的问题。为了方面读到这篇文章的你,点击下面的链接就可以下载到这份色彩配置文件~

ipfs://QmaR5ZxFXNwcsjn9XZq6CpDfRFyoffDEr9fpi15Hmb31K7

开机后有概率屏幕卡死

开启自适应同步后可解决,感谢 LY 提供的解决方案。

Series Navigation提升机械革命无界 15XPro 暴风雪的充电速度 >>

评论

《 “在机械革命无界 15XPro 暴风雪上运行 Linux” 》 有 17 条评论

  1. legendyang 的头像

    同款機型,請問您有遇到睡眠喚醒後常常鍵盤失效,要重新睡眠再喚醒才能恢復的情況嗎?

    1. Zeeko 的头像

      我没有遇到这种情况,我的设备在睡眠后可以通过键盘唤醒,仅仅只有键盘背光会被关闭需要重新开启的小问题。

      1. legendyang 的头像

        我裝了mechrevo-drivers-dkms和tuxedo-control-center-bin重啟之後改不了鍵盤背光
        但好處是他也不亮了,半夜不煩眼睛😄

          1. legendyang 的头像
            legendyang

            我操
            我忘了裝kernel headers
            😓

    2. LY 的头像

      您好,我也遇到了同样的问题,可以具体讲一下装kernel headers要怎么操作吗?谢谢!

    3. LY 的头像

      感谢您的解决方案!
      防止有些人(比如我)看不懂,补充一下具体方法:sudo pacman -S linux-headers,然后可以用dkms status验证drivers已正确安装

      1. Zeeko 的头像

        我再补充一下 ArchLinux 关于 DKMS 的文档吧 https://wiki.archlinuxcn.org/wiki/DKMS#%E5%AE%89%E8%A3%85

    4. Zeeko 的头像

      我也遇到这个情况了,现在还没找到具体的原因 😅

    5. Zeeko 的头像

      可以试试添加 i8042.reset 内核参数,不过我这边这个问题复现得不太频繁,所以我也不是很确定是否真的有效。

  2. BlueEve 的头像

    您好,我的AI 9 机械革命15xpro现在在(貌似)任何内核6.12+的linux上的konsole终端应用程序都会有输入延迟,例如
    正常输入helloworld
    有时候会helloworl (直到再按下一个或多个键才显示d)

    这个有解决吗,在Ubuntu25与arch 6.15均有此问题
    Ubuntu24则正常

    1. Zeeko 的头像

      我遇到过类似的问题,在内置屏幕上使用 kitty 终端会观察到明显的响应延迟,你可以试试这个我的解决方案

      1. Blue 的头像

        好的谢谢您,我来看一看,非常感谢您的回复QwQ

      2. Blue 的头像

        emmmmm
        我的问题似乎不是掉帧,而是输入延迟?
        就是说:
        我输入qwert
        konsole显示:qwer
        此时若再按下空格会直接显示qwert_
        这个挺难受的()

        1. Zeeko 的头像

          你可以试试用 xev debug 一下,看看键盘事件有没有被系统处理,这样可以区分键盘事件延迟跟 konsole 渲染延迟。

  3. LY 的头像

    除此以外,也许 System Settings -> Display & Monitor -> Device Configuration -> Color profile 也要设为 None。我这里最终配置如图:https://fars.ee/RfPh.png

  4. […] 之前一篇文章的评论区有人提到过机械革命15XPro 暴风雪在唤醒后键盘会短暂失效的问题,往往需要重新睡眠再唤醒才能激活键盘。经过我的排查后发现,在该问题出现时,有两个比较重要的 Log 线索: […]

回复 LY 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Index