CachyOS 长时间休眠后内置键盘失效的排查与修复

温馨提醒
总结摘要
机械革命翼龙 15 Pro 2026 在 Linux s2idle 唤醒后内置键盘失效的排查记录与自动恢复方案

我的这台机械革命翼龙 15 Pro 2026 有一个很固定的故障。系统进入休眠(s2idle) 一段时间后再唤醒,触摸板可以使用,内置键盘却没有任何输入。小键盘灯有时会一直亮着,重新启动才能恢复

短时间休眠不一定触发,放置时间较长以后更容易出现

机器与系统环境

环境如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
设备             机械革命翼龙 15 Pro 2026  
主板             YILONG Series-X5KK45xS-B2  
处理器           AMD Ryzen AI 7 H 350  
独立显卡         NVIDIA GeForce RTX 5060 Laptop GPU  
系统             CachyOS Linux  
桌面             KDE Plasma Wayland  
内核             7.1.8-1-cachyos  
休眠模式         s2idle  
BIOS             N.1.21MRO30  
BIOS 日期        2025-12-22  

系统只提供 s2idle/sys/power/mem_sleep 中没有 deep。因此无法切换到传统 S3 休眠绕开问题

查看内核日志,定位找到键盘编号

内置键盘在系统中识别为 AT Translated Set 2 keyboard,连接在 isa0060/serio0,由 atkbdi8042 负责。触摸板则走 I2C,所以唤醒后触摸板正常,并不能说明键盘控制器也恢复了

故障发生时,内核日志反复出现下面两行

1
2
atkbd serio0: Failed to deactivate keyboard on isa0060/serio0  
atkbd serio0: Failed to enable keyboard on isa0060/serio0  

KDE、Wayland 和键盘布局都没有丢失,键盘设备仍列在 /proc/bus/input/devices 中,但控制器没有继续上报按键事件。NumLock 灯卡住也是同一个故障的外在表现

用下面的命令,可以检查最近一次休眠过程

1
2
journalctl -b -k --no-pager | \  
  grep -E 'PM: suspend (entry|exit)|atkbd|i8042|serio0'  

尝试过的内核参数

GRUB 之前测试过三项参数

1
i8042.nopnp i8042.reset i8042.kbdreset  

实际测试中,长时间休眠后的故障仍会出现

随后加入了下面这项参数

1
i8042.dumbkbd  

这个参数会减少驱动向键盘发送控制命令。启用后,短时间休眠可以正常输入,但 NumLock 等指示灯就不亮了。长时间休眠以后,键盘还是无法唤醒。

最好还是去掉了这个参数

修改启动参数后重启

尝试手动绑定 atkbd

查资料、问 AI 决定试一下手动解绑并重新绑定 atkbd ,看能不能拉起键盘

这里就要用到内核日志里的键盘编号了

1
2
3
4
5
6
7
sudo sh -c '  
  echo -n serio0 > /sys/bus/serio/drivers/atkbd/unbind  
  sleep 1  
  if [ ! -L /sys/bus/serio/devices/serio0/driver ]; then  
    echo -n serio0 > /sys/bus/serio/drivers/atkbd/bind  
  fi  
'  

解绑后,内核通常会因为 bind_modeauto 而自动绑定,所以再次手动写入 bind 时偶尔会得到“设备或资源忙”。只要日志中出现新的键盘输入设备,这条提示可以忽略

例如原设备是 input3,执行恢复动作后变成了 input20,键盘随即可以输入。这说明硬件仍能工作,唤醒后重新初始化 atkbd 就能恢复输入

设置唤醒后自动恢复

systemd 的休眠钩子目录中加入自启动脚本,让系统每次唤醒后自动重建键盘设备

文件位置如下

1
/usr/lib/systemd/system-sleep/reset-atkbd  

脚本内容如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh  
# Recreate the internal PS/2 keyboard after resume.  
if [ "$1" = "post" ] && [ -e /sys/bus/serio/devices/serio0 ]; then  
    logger -t reset-atkbd "reinitializing serio0 after $2"  
    echo -n serio0 > /sys/bus/serio/drivers/atkbd/unbind 2>/dev/null || true  
    sleep 1  
    if [ ! -L /sys/bus/serio/devices/serio0/driver ]; then  
        echo -n serio0 > /sys/bus/serio/drivers/atkbd/bind 2>/dev/null || true  
    fi  
fi  

赋予执行权限

1
sudo chmod 755 /usr/lib/systemd/system-sleep/reset-atkbd  

最终保留的 GRUB 参数如下

1
i8042.nopnp i8042.reset i8042.kbdreset  

修改 /etc/default/grub 后重新生成配置

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

验证结果

配置自启动脚本后,重启,查看日志

1
2
3
4
5
21:31:03 PM: suspend entry (s2idle)  
21:34:26 atkbd serio0: Failed to deactivate keyboard on isa0060/serio0  
21:34:27 PM: suspend exit  
21:34:27 reset-atkbd: reinitializing serio0 after suspend  
21:34:28 input: AT Translated Set 2 keyboard as .../input21  

看日志底层驱动依然报告无法停用键盘,说明 BIOS 或 EC 的兼容问题还在。钩子随后正常执行,内核把键盘从旧设备重新创建为 input21

单独查看钩子的执行记录的命令

1
journalctl -b -t reset-atkbd  

修复后的实际表现是触摸板先恢复,内置键盘晚约一秒恢复。NumLock 指示灯也能继续由系统控制

BIOS 查询结果

机械革命官网 的翼龙 15 Pro 2026 支持页面有 BIOS 与 EC 更新,但是页面标注的更新日期为 2026 年 2 月 10 日。实际下载链接中的文件名为 BIOS_N.1.09MRO19_EC_1.15.zip,文件日期为 2024 年 12 月 11 日。

我的电脑已经安装 N.1.21MRO30,日期为 2025 年 12 月 22 日,版本更高。暂时没有找到比本机版本更新、且明确匹配 YILONG Series-X5KK45xS-B2 的公开固件

如果以后修复了

如果后续 BIOS 或内核已经修复问题,删除休眠钩子就好

1
sudo rm /usr/lib/systemd/system-sleep/reset-atkbd