TP_HKEY_EV_HOTPLUG_DOCK и TP_HKEY_EV_HOTPLUG_UNDOCK не видны acpi_listen
TL;DR thinkpad_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
- TLP
- ф-SMAPI-DKMS
- thinkfan
- Linux-инструменты-общий
Эти пакеты были удалены с apt remove --purge
и с тех пор я несколько раз перезагружался.
Я надеюсь, что кто-то здесь мог бы подсказать, какие службы могли бы отлавливать эти события и предотвращать их захват?
Я уже пытался вручную остановить службу systemd-logind, и это не имеет никакого эффекта - соответствующие события по-прежнему не отображаются в acpi_listen или kacpimon. Эта проблема, по-видимому, влияет только на события док-станции, поскольку клавиши регулировки громкости и яркости по-прежнему генерируют события как в 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 соответствовал этому поведению (также отсутствовали события стыковки / отстыковки).
Как уже отмечалось, я попытался остановить systemd-logind и снова протестировать предыдущий, но безрезультатно. Я недостаточно осведомлен о systemd, чтобы быть уверенным в погоде или нет, но этого было недостаточно, чтобы он не перехватывал все события acpi?
Это содержание
/proc/acpi/ibm/hotkey
status: enabled
mask: 0x078c7ffb
commands: enable, disable, reset, <mask>
Это идентично содержимому этого файла при загрузке с live CD и имеет значение в /sys/devices/platform/thinkpad_acpi/hotkey_recommended_mask
, Как отмечено в (1), это говорит о том, что модуль acpi_thinkpad работает и генерирует правильные события.
- Загрузка с живого компакт-диска (Xubuntu 18.04, который мне пригодился) и запуск acpi_listen, а затем стыковка / расстыковка приводят к печати ожидаемых событий.
В заключение, я предположительно каким-то образом привел мою систему в состояние, в котором что-то захватывает / маскирует эти конкретные события ACPI, прежде чем acpid сможет их получить.
Кто-нибудь может подсказать, что может быть источником этой проблемы? Альтернативный способ запуска сценариев для запуска в доке / отсоединении тоже подойдет.