Столкнулся сразу с несколькими вроде не критичными, но раздражающими проблемами связанными с управлением подстветкой. Подозреваю, что причина у данных проблем одна и она счас сидит пишет это сообщение, потому опишу всё в одной теме.
Действие происходит на Thinkpad X201 с Arch Linux, в GRUB прописано acpi_backlight=vendor
.
1. При подключении/отключении кабеля питания, яркость каждый раз сбрасывается на 65%. Где это может устанавливаться? В udev правил не настроено, acpid отключён. В journalctl
ничего, udevadm monitor
показывает только собственно записи о подключении кабеля, типа таких:
KERNEL[1269.498720] change /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:09/PNP0C09:00/PNP0C0A:00/power_supply/BAT0 (power_supply)
UDEV [1269.500291] change /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:09/PNP0C09:00/PNP0C0A:00/power_supply/BAT0 (power_supply)
KERNEL[1269.986003] change /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:09/PNP0C09:00/ACPI0003:00/power_supply/AC (power_supply)
UDEV [1269.988092] change /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:09/PNP0C09:00/ACPI0003:00/power_supply/AC (power_supply)
Я в итоге, устав бороться с этим, добавил в udev свои правила, чтоб ставили 40% при подключении питания и 30% при переходе на батарею. Но в результате экран теперь «мигает» при переходе, сначала увеличивая яркость на 65%, а потом сразу понижая до нужных 30/40%. Несколько раздражает, потому хотел бы всё таки отключить это правило, которое устанавливает 65%.
2. При этом заметил, что udev-правила не подтягиваются сразу при включении системы. То есть если в первые минуты работы ноутбука, к нему подключить питание, экран всё равно засетится в 65%. И только через какое-то время будет сбрасываться в 40%. В journalctl -xef
увидел следующее касательно systemd-udevd:
Jan 11 13:19:35 miminote systemd-udevd[311]: AC: Worker [313] processing SEQNUM=2304 is taking a long time
Jan 11 13:19:35 miminote systemd-udevd[313]: Spawned process '/usr/bin/xbacklight -set 40' [352] is taking longer than 59s to complete
сразу после запуска системы. И вот что появляется в момент, когда всё начинает работать нормально:
Jan 11 13:21:35 miminote systemd-udevd[313]: Spawned process '/usr/bin/xbacklight -set 40' [352] timed out after 2min 59s, killing
Jan 11 13:21:35 miminote systemd-udevd[311]: AC: Worker [313] processing SEQNUM=2304 killed
Jan 11 13:21:35 miminote systemd-udevd[311]: Worker [313] terminated by signal 9 (KILL)
Jan 11 13:21:35 miminote systemd-udevd[311]: AC: Worker [313] failed
Почему выполнение команды так залипает?
3. Нажатие кнопок яркости (Fn + Home/End) генерируют сразу 2 нажатия XF86MonBrightnessUp и XF86MonBrightnessDown соответственно. Если запустить acpid и посмотреть acpi_listen, это будет выглядеть вот так примерно:
video/brightnessup BRTUP 00000086 00000000 K
video/brightnessup BRTUP 00000086 00000000
video/brightnessdown BRTDN 00000087 00000000 K
video/brightnessdown BRTDN 00000087 00000000
При этом с остальными клавишами всё окей. Что тоже интересно, когда я биндил кнопки через xbindkeys - нажатие срабатывало один раз и всё было норм. Сейчас же выключил xbindkeys и решил перенести обработку клавиш на менеджер, чтоб при этом выводить сообщение о текущей яркости и в результате вижу как оно срабатывает дважды. Я догадываюсь (и на это же намекает xev), что какая-то программа отлавливает нажатие и генерит такое же, но не могу найти какая.
Надеюсь на помощь ЛОРа