NeuroAgent

How to Fix Fn Keys After Suspend on Lenovo Manjaro

Solution for non-functional Fn keys after suspend on Lenovo Ideapad Slim 3 with Manjaro Linux. Step-by-step recovery methods.

Question

How to fix non-functional function keys (Fn) after suspend on a Lenovo Ideapad Slim 3 15ABR8 with Manjaro Linux Gnome?

System details:

  • Laptop: Lenovo Ideapad Slim 3 15ABR8
  • Operating system: Manjaro Linux Gnome
  • Kernel version: 6.12
  • BIOS updated
  • Added i8042.nopnp parameter to GRUB
  • Sleep mode: s2idle (advanced mode in BIOS is locked)

Problem: After suspend, the function keys (Fn) stop working. Before the BIOS update, the system would constantly wake up after suspend. Before adding the i8042.nopnp parameter to GRUB, the keyboard would not work at all after wake-up, although the touchpad worked normally.

NeuroAgent

Fixing Fn Key Issues on Lenovo IdeaPad Slim 3 15ABR8 with Manjaro Linux Gnome

The issue of non-functional Fn keys after suspend on a Lenovo IdeaPad Slim 3 15ABR8 with Manjaro Linux Gnome can be resolved through a combination of kernel parameters and system settings. Although you’ve already added the i8042.nopnp parameter, there are additional methods to fix this problem.

Table of Contents

Main Solutions

The most common and effective solution for your laptop model is to add additional kernel parameters to GRUB. Research indicates that the issue is related to the i8042 controller and its interaction with the power management system.

Important: If you’ve already added i8042.nopnp but the problem persists, try a combination of parameters.

Try adding the following parameters to GRUB_CMDLINE_LINUX_DEFAULT in the /etc/default/grub file:

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

After modifying the file, run:

bash
sudo update-grub
sudo reboot

This approach has successfully fixed similar issues on other Lenovo IdeaPad models, as reported in the Arch Linux Wiki.

Alternative Kernel Parameters

If the main combination doesn’t work, try these alternative options:

Option 1: Focus on AUX port

quiet splash i8042.nopnp i8042.unmask_kbd_data

Option 2: Extended debugging

quiet splash i8042.nopnp i8042.debug=1

Option 3: Alternative parameters for Lenovo

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

As experienced users from the Manjaro Forum report, the combination with acpi_osi parameters often resolves issues with Fn keys after suspend.

Sleep Mode Configuration

Since your BIOS has locked the advanced mode, limiting access to more traditional sleep modes, you can configure the system to use other power management methods.

Checking current sleep mode:

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

Configuring s2idle modes:

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

Alternative approach - using systemd-sleep:

Create a service to restore keyboard functionality after waking up:

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

Add the content:

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

Then activate it:

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

This method is based on a solution proposed by the KDE community.

System Services for Keyboard Recovery

Option 1: Recovery via udev

Create a udev rule to automatically restore the keyboard:

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

Add:

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

Reload udev:

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

Option 2: Using systemd-sleep hook

Create a script to execute after waking up:

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

Add:

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

Make the script executable:

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

Additional Methods

ACPI Settings

Sometimes the issue is related to ACPI. Try adding to GRUB:

quiet splash i8042.nopnp acpi=force

Checking kernel modules

Ensure that required modules are loaded:

bash
lsmod | grep i8042
lsmod | grep psmouse

Temporary solution via systemd-timer

Create a timer to periodically reload the i8042 module:

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

Add:

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

Add:

ini
[Unit]
Description=Reload i8042 module

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

Activate:

bash
sudo systemctl enable i8042-reload.timer
sudo systemctl start i8042-reload.timer
  1. Start with the main kernel parameter combination:

    • Add quiet splash i8042.nopnp i8042.reset i8042.dumbkbd=1 to GRUB
    • Run sudo update-grub && sudo reboot
    • Check if Fn keys work after suspend
  2. If the issue persists, try alternative parameters:

    • Use the combination with acpi_osi=Linux acpi_osi="!Windows 2020"
  3. Configure a system service for recovery:

    • Create the fix-keyboard.service as described above
    • Or use a udev rule for automatic recovery
  4. As a last resort:

    • Set up a timer to periodically reload the i8042 module

It’s important to test each step individually to determine which solution works best for your system.

Conclusion

The issue of non-working Fn keys after suspend on a Lenovo IdeaPad Slim 3 15ABR8 with Manjaro Linux Gnome is common but solvable. The main approaches include:

  1. Adjusting GRUB kernel parameters with focus on i8042
  2. Creating system services to automatically restore keyboard functionality
  3. Configuring udev rules to handle wake-up events
  4. Using additional ACPI parameters

The key to success is a systematic approach to testing each proposed solution. Start with simple kernel parameters and gradually move to more complex system configurations. Most users report successful resolution of the problem by combining the i8042.nopnp parameter with additional ACPI settings or by creating services to restore keyboard functionality after waking up.


Sources

  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