TL;DRthinkpad_acpi
正在触发TP_HKEY_EV_HOTPLUG_DOCK
和TP_HKEY_EV_HOTPLUG_UNDOCK
(相关信息出现在dmesg
),但是acpi_listen
和kacpimon
(和acpid
)没有看到它们。
背景:
我在 ThinkPad T430(仅 iGPU,无 nVidia 卡)上运行,使用 Ubuntu 18.04 服务器(我手动安装了 xorg 和其他各种软件包)。我想在某些 ACPI 事件上运行脚本(以处理对接和断开对接)。我使用了这种方法:https://feeding.cloud.geek.nz/posts/hooking-into-docking-undocking-events-to-run-scripts/使用 acpid。这在几个小时内运行良好,但现在脚本不再触发,acpi_listen 也不再看到相关事件。
在它工作和不工作期间,我安装和卸载了一些软件包,但我自己没有手动修改任何配置。所有这些软件包后来都被卸载了。具体软件包是:
- thermald
- 閣下
- tp-smapi-dkms
- 思凡
- Linux 工具通用
从那时起这些软件包就全部被删除了,apt remove --purge
并且从那时起我已经重新启动了好几次。
我希望这里有人可以建议哪些服务可以捕获这些事件并阻止 acpid 抓取它们?
我已经尝试手动停止 systemd-logind 服务,但这没有效果——相关事件仍然没有出现在 acpi_listen 或 kacpimon 中。这个问题似乎只影响 dock 事件,因为音量和亮度键仍然会在 acpi_listen 和 kacpimon 中产生事件。
以下是我目前的观察:
- 我看到如下消息
[ 849.503377] thinkpad_acpi: undocked from hotplug port replicator
[ 982.631694] thinkpad_acpi: docked into hotplug port replicator
在 dmesg 中,因此大概是acpi_thinkpad 模块工作中。
- 当我执行其他可能引发事件的操作时,我会在 acpi_listen 中看到消息。例如,按下“提高音量”会产生以下输出:
button/volumeup VOLUP 00000080 00000000 K
推测 acpid 功能正常。kacpimon 的输出与此行为一致(也缺少 dock/undock 事件)。
如上所述,我尝试停止 systemd-logind 并再次测试前一个,但没有任何效果。我对 systemd 了解不够,无法确定这是否足以阻止它拦截所有 acpi 事件?
这是
/proc/acpi/ibm/hotkey
status: enabled
mask: 0x078c7ffb
commands: enable, disable, reset, <mask>
这与从实时 CD 启动时此文件的内容相同,并且值为/sys/devices/platform/thinkpad_acpi/hotkey_recommended_mask
。如 (1) 中所述,这表明 acpi_thinkpad 模块正在运行并生成正确的事件。
- 从实时 CD(Xubuntu 18.04,我手边有)启动并运行 acpi_listen,然后对接/断开连接会导致打印预期事件。
总而言之,我大概以某种方式使我的系统进入这样一种状态:在 acpid 获取这些特定的 ACPI 事件之前,某些东西正在捕获/屏蔽这些特定的 ACPI 事件。
有人能指出这个问题的根源吗?触发脚本在 dock/undock 上运行的替代方法也可以。