Другое

Как исправить Fn клавиши после suspend на Lenovo Manjaro

Решение проблемы неработающих функциональных клавиш Fn после приостановки работы на Lenovo Ideapad Slim 3 с Manjaro Linux. Пошаговые методы восстановления.

Как исправить неработающие функциональные клавиши (Fn) после приостановки работы (suspend) на ноутбуке Lenovo Ideapad Slim 3 15ABR8 с Manjaro Linux Gnome?

Подробности системы:

  • Ноутбук: Lenovo Ideapad Slim 3 15ABR8
  • Операционная система: Manjaro Linux Gnome
  • Версия ядра: 6.12
  • BIOS обновлен
  • В GRUB добавлен параметр i8042.nopnp
  • Режим сна: s2idle (режим advanced mode в BIOS заблокирован)

Проблема: После приостановки работы (suspend) функциональные клавиши (Fn) перестают работать. До обновления BIOS после suspend система постоянно просыпалась. До добавления параметра i8042.nopnp в GRUB после пробуждения клавиатура не работала вообще, хотя тачпад функционировал нормально.

На Lenovo IdeaPad Slim 3 15ABR8 с Manjaro Linux Gnome проблема неработающих функциональных клавиш (Fn) после приостановки работы может быть решена комбинацией параметров ядра и системных настроек. Несмотря на то что вы уже добавили параметр i8042.nopnp, существуют дополнительные методы для исправления этой проблемы.

Содержание

Основные решения проблемы

Наиболее распространенным и эффективным решением для вашей модели ноутбука является добавление дополнительных параметров ядра в GRUB. Исследования показывают, что проблема связана с контроллером i8042 и его взаимодействием с системой управления питанием.

Важно: Если вы уже добавили i8042.nopnp, но проблема сохраняется, попробуйте комбинацию параметров.

Попробуйте добавить следующие параметры в GRUB_CMDLINE_LINUX_DEFAULT в файле /etc/default/grub:

quiet splash i8042.nopnp i8042.reset i8042.dumbkbd=1

После изменения файла выполните:

bash
sudo update-grub
sudo reboot

Этот подход успешно исправил аналогичные проблемы на других моделях Lenovo IdeaPad, как сообщается в архивах Arch Linux.

Альтернативные параметры ядра

Если основная комбинация не сработает, попробуйте альтернативные варианты:

Вариант 1: Фокус на AUX порте

quiet splash i8042.nopnp i8042.unmask_kbd_data

Вариант 2: Расширенная отладка

quiet splash i8042.nopnp i8042.debug=1

Вариант 3: Альтернативные параметры для Lenovo

quiet splash i8042.nopnp acpi_osi=Linux acpi_osi="!Windows 2020"

Как показывает опыт пользователей форума Manjaro, именно комбинация с acpi_osi параметрами часто решает проблемы с Fn клавишами после suspend.

Настройка режима сна

Поскольку ваш BIOS запер режим advanced mode, что ограничивает доступ к более традиционным режимам сна, можно настроить систему для использования других методов управления питанием.

Проверка текущего режима сна:

bash
systemctl status systemd-suspend.service
cat /sys/power/mem_sleep

Настройка s2idle режимов:

bash
echo s2idle | sudo tee /sys/power/mem_sleep

Альтернативный подход - использование systemd-sleep:

Создайте сервис для восстановления работы клавиш после пробуждения:

bash
sudo nano /etc/systemd/system/fix-keyboard.service

Добавьте содержимое:

ini
[Unit]
Description=Fix keyboard after suspend
After=suspend.target

[Service]
Type=oneshot
ExecStart=/usr/bin/sleep 2 && /usr/bin/modprobe -r i8042 && /usr/bin/modprobe i8042

[Install]
WantedBy=suspend.target

Затем активируйте его:

bash
sudo systemctl daemon-reload
sudo systemctl enable fix-keyboard.service

Этот метод основан на решении, предложенном пользователями KDE сообщества.

Системные службы для восстановления работы клавиш

Вариант 1: Восстановление через udev

Создайте правило udev для автоматического восстановления клавиатуры:

bash
sudo nano /etc/udev/rules.d/99-keyboard-fix.rules

Добавьте:

ACTION=="resume", SUBSYSTEM=="platform", DRIVER=="i8042", RUN+="/usr/bin/sleep 2 && /usr/bin/modprobe -r i8042 && /usr/bin/modprobe i8042"

Перезагрузите udev:

bash
sudo udevadm control --reload-rules
sudo udevadm trigger

Вариант 2: Использование systemd-sleep hook

Создайте скрипт для выполнения после пробуждения:

bash
sudo mkdir -p /etc/systemd/system-sleep
sudo nano /etc/systemd/system-sleep/fix-keyboard

Добавьте:

bash
#!/bin/bash
case $1/$2 in
    post/suspend*)
        sleep 2
        modprobe -r i8042
        modprobe i8042
        ;;
esac

Сделайте скрипт исполняемым:

bash
sudo chmod +x /etc/systemd/system-sleep/fix-keyboard

Дополнительные методы

Настройки ACPI

Иногда проблема связана с ACPI. Попробуйте добавить в GRUB:

quiet splash i8042.nopnp acpi=force

Проверка модулей ядра

Убедитесь, что необходимые модули загружены:

bash
lsmod | grep i8042
lsmod | grep psmouse

Временное решение через systemd-timer

Создайте таймер для периодической перезагрузки модуля i8042:

bash
sudo nano /etc/systemd/system/i8042-reload.timer

Добавьте:

ini
[Unit]
Description=Reload i8042 module periodically
Wants=i8042-reload.service

[Timer]
OnBootSec=30min
OnUnitActiveSec=30min

[Install]
WantedBy=timers.target
bash
sudo nano /etc/systemd/system/i8042-reload.service

Добавьте:

ini
[Unit]
Description=Reload i8042 module

[Service]
Type=oneshot
ExecStart=/usr/bin/modprobe -r i8042 && /usr/bin/modprobe i8042

Активируйте:

bash
sudo systemctl enable i8042-reload.timer
sudo systemctl start i8042-reload.timer

Рекомендуемый порядок действий

  1. Начните с основной комбинации параметров ядра:

    • Добавьте quiet splash i8042.nopnp i8042.reset i8042.dumbkbd=1 в GRUB
    • Выполните sudo update-grub && sudo reboot
    • Проверьте работу Fn клавиш после suspend
  2. Если проблема сохраняется, попробуйте альтернативные параметры:

    • Используйте комбинацию с acpi_osi=Linux acpi_osi="!Windows 2020"
  3. Настройте системный сервис для восстановления:

    • Создайте сервис fix-keyboard.service как описано выше
    • Или используйте udev правило для автоматического восстановления
  4. Как крайняя мера:

    • Настройте таймер для периодической перезагрузки модуля i8042

Важно тестировать каждый шаг по отдельности, чтобы определить, какое решение именно для вашей системы наиболее эффективно.

Заключение

Проблема неработающих Fn клавиш после suspend на Lenovo IdeaPad Slim 3 15ABR8 с Manjaro Linux Gnome является распространенной, но решаемой. Основные подходы включают:

  1. Корректировку параметров ядра GRUB с акцентом на i8042
  2. Создание системных служб для автоматического восстановления работы клавиатуры
  3. Настройку правил udev для обработки событий пробуждения
  4. Использование дополнительных ACPI параметров

Ключевым фактором успеха является систематический подход к тестированию каждого предлагаемого решения. Начните с простых параметров ядра и постепенно переходите к более сложным системным настройкам. Большинство пользователей сообщают об успешном разрешении проблемы путем комбинации параметра i8042.nopnp с дополнительными настройками ACPI или созданием служб для восстановления работы клавиатуры после пробуждения.


Источники

  1. Lenovo IdeaPad Slim 3 16ABR8 - ArchWiki
  2. Keyboard stops working after suspension - Fedora Discussion
  3. Solved FN Keys in Lenovo Laptop - Manjaro Forum
  4. Lenovo AMD - no keyboard - Manjaro Forum
  5. Keyboard and Touchpad not working on Lenovo Ideapad Slim in Linux Mint
  6. Laptop keyboard and touchpad not working - Unix & Linux Stack Exchange
  7. Debugging an unresponsive touchpad on Lenovo Ideapad 320-15ABR
  8. Keyboard Issue on Lenovo Ideapad Slim 3 15ABR8 - EndeavourOS Reddit
  9. Fn keys stop working after sleep on lenovo ideapad slim 3 - Fedora Discussion
  10. Lenovo Ideapad Slim3 – internal keyboard stops working after prolonged suspend - Ask Ubuntu
Авторы
Проверено модерацией
Модерация