Summary: | thinkpad E15 gen2 - unable to detect "on battery" status with kernel 5.10 | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Anton Farygin <rider> | ||||
Component: | kernel-image-un-def | Assignee: | Vitaly Chikunov <vt> | ||||
Status: | ASSIGNED --- | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | kernelbot, ptrnine, vt | ||||
Version: | unstable | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Anton Farygin
2021-01-19 20:56:54 MSK
В udevadm monitor при отключении/включении питания пустота. Буду копать дальше. На 5.4.81-std-def-alt1 все то же самое. На послнедней убунте с ядром 5.8.0-25 также не работает. Это на E15 Gen2, у меня же T15 Gen1 - похоже что там разные проблемы. На ноутбуке E15 Gen2 после systemctl suspend все начинает работать нормально (!?) Проверял на ядре 5.10 у нас и 5.8 на убунте. https://forums.lenovo.com/t5/Other-Linux-Discussions/ThinkPad-E15-Gen-2-firmware-issue-no-power-supply-events/m-p/5061898 Создал на форуме тему. Получилось подправить DSDT таблицу. Там была какая-то переменная H8DR, которая участвовала во всяких ветвлениях и как раз в нужных местах. У меня на компьютере в самом начале (в месте с кучей "иф виндовс") ей присваивалась единица, и на E15 Gen2 я попробовал сделать также. После этого все события, закрытие крышки и т.д. вроде как заработали. https://github.com/tluck/Lenovo-T420-Clover/commits/master/EFI/CLOVER/ACPI/dsdt.dsl Вот тут тоже народ что-то патчит такое же https://forums.lenovo.com/t5/Other-Linux-Discussions/Linux-Fn-keys-not-working-Thinkpad-E14-AMD-Gen-2/m-p/5027791?page=7 Вот тут ещё куча жалоб от народа по другому поводу, и им тоже помогает твой же рецепт с suspend/resume. Created attachment 9144 [details]
e15 gen2 DSDT fix
Приложил скрипт для исправления таблицы. С ключом --grub-setup-dsdt он автоматом включит подмену на новую таблицу в grub'е, если до этого она не подменялась. Без ключа просто сохраняет новую таблицу в dsdt.aml.
Можно сделать то же самое без подмены вот таким однострочником:
acpidump -b -n DSDT && iasl dsdt.dat && sed -i 's/Name (H8DR, 0x00)/Name (H8DR, One)/g' dsdt.dsl && iasl dsdt.dsl
|