总结摘要
机械革命翼龙 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,由 atkbd 和 i8042 负责。触摸板则走 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
|
实际测试中,长时间休眠后的故障仍会出现
随后加入了下面这项参数
这个参数会减少驱动向键盘发送控制命令。启用后,短时间休眠可以正常输入,但 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_mode 为 auto 而自动绑定,所以再次手动写入 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
|