acpi_listen 未检测到 TP_HKEY_EV_HOTPLUG_DOCK 和 TP_HKEY_EV_HOTPLUG_UNDOCK

acpi_listen 未检测到 TP_HKEY_EV_HOTPLUG_DOCK 和 TP_HKEY_EV_HOTPLUG_UNDOCK

TL;DRthinkpad_acpi正在触发TP_HKEY_EV_HOTPLUG_DOCKTP_HKEY_EV_HOTPLUG_UNDOCK(相关信息出现在dmesg),但是acpi_listenkacpimon(和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 中产生事件。

以下是我目前的观察:

  1. 我看到如下消息
[  849.503377] thinkpad_acpi: undocked from hotplug port replicator
[  982.631694] thinkpad_acpi: docked into hotplug port replicator

在 dmesg 中,因此大概是acpi_thinkpad 模块工作中。

  1. 当我执行其他可能引发事件的操作时,我会在 acpi_listen 中看到消息。例如,按下“提高音量”会产生以下输出:
button/volumeup VOLUP 00000080 00000000 K

推测 acpid 功能正常。kacpimon 的输出与此行为一致(也缺少 dock/undock 事件)。

  1. 如上所述,我尝试停止 systemd-logind 并再次测试前一个,但没有任何效果。我对 systemd 了解不够,无法确定这是否足以阻止它拦截所有 acpi 事件?

  2. 这是/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 模块正在运行并生成正确的事件。

  1. 从实时 CD(Xubuntu 18.04,我手边有)启动并运行 acpi_listen,然后对接/断开连接会导致打印预期事件。

总而言之,我大概以某种方式使我的系统进入这样一种状态:在 acpid 获取这些特定的 ACPI 事件之前,某些东西正在捕获/屏蔽这些特定的 ACPI 事件。

有人能指出这个问题的根源吗?触发脚本在 dock/undock 上运行的替代方法也可以。

相关内容