Suspend Problem and Fn-keys not working (Fedora 35)

Hi,
I installed fedora35 on my laptop but there are some problems that I have not solved the problem yet. The first problem is when the laptop suspends, it does not wake up and the second problem is Fn. combination keys (Fn + F1…F12) do not work. How can I solve these issues, any suggestions?

Hardware info:
ThinkPad
Lenovo E15 20t8s000ak09 Ryzen7 4700u 16gb 512ssd
AMD Ryzen 7 4700U with Radeon Graphics

Software Info:
Linux fedora 5.16.7-200.fc35.x86_64 #1 SMP PREEMPT Sun Feb 6 19:53:54 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Thanks in advance
Mehmet

Hi Mehmet:

This is just a shot in the dark, but I tried to look up the keyboard layout for the Lenovo E15 and I see that it has a “FnLock” key (screenshot below). Is it possible that the Function Key Lock is toggled the wrong way? (It looks like you may need to press Fn + FnLock to toggle the setting.)

Also, if it consistently comes up in the wrong state, there may be a firmware setting to change the startup default.

Also, for suspend/hibernation, the firmware revision can be significant. Checking for a firmware update is often the first step when troubleshooting suspend and hibernation problems.

Hi Gregory,

This is just a shot in the dark, but I tried to look up the keyboard layout for the Lenovo E15 and I see that it has a “FnLock” key (screenshot below). Is it possible that the Function Key Lock is toggled the wrong way? (It looks like you may need to press **Fn** + **FnLock** to toggle the setting.)

I have tried by pressing Fn + FnLock but problem about functional keys is not solved.

Also, if it consistently comes up in the wrong state, there may be a firmware setting to change the startup default.

Also, for suspend/hibernation, the firmware revision can be significant. Checking for a firmware update is often the first step when troubleshooting suspend and hibernation problems.

I have no idea, I look at bios setting and there is no linux option in power section.

I did not see any driver for linux, all are available for Windows operating system in their support page

There appears to be a “BIOS Update (Bootable CD)” option under BIOS/UEFI. Can you use that to update your system’s firmware?

FnLock fix worked for me on my X1 Carbon. Thank you for posting this @glb , much appreciated!

1 Like

The function key lock’s default state is defined by a system module parameter. However, the system modules are locked after the kernel loads, so they can’t be edited from user-space.

Fortunately, you can create a modprobe file to define it for you.

Someone posted a solution for the same problem on Linux Mint:
https://forums.linuxmint.com/viewtopic.php?p=2247849&sid=dd549cc8f87191b1bf45a5727cdd0fae#p2247849

So I made a version for Fedora:

#!/bin/bash

# Set the function-key lock state on system boot for Fedora 37. Adapted from hglee's solution on Linux Mint:
# https://forums.linuxmint.com/viewtopic.php?p=2247849&sid=dd549cc8f87191b1bf45a5727cdd0fae#p2247849

# Current PARAM and MODULE variables defined for ASUS ExpertBook B5
# Valid values depend on target system.
# Try something like `sudo find / | grep fnlock` or `find /sys/module | grep fn` to locate the relevant system module.

PARAM=fnlock_default
MODULE=asus_wmi
MODFILE=/etc/modprobe.d/fn-lock.conf

if [[ ! -f /sys/module/$MODULE/parameters/$PARAM ]]; then
    echo -e "\n** $MODULE $PARAM NOT FOUND **\n"; exit 1
fi
echo
read -p "Enable $PARAM at boot (y/N)? " -n 1 STATE
if [[ $STATE =~ ^[Yy]$ ]]; then
    STATE="Y"; else STATE="N"
fi

OPTION="options $MODULE $PARAM=$STATE"
echo -e "\n"

if [[ ! -f $MODFILE ]]; then
    echo -e "Creating new modprobe file: $MODFILE"
else
    grep -q "$OPTION" "$MODFILE"
    if [ $? -eq 0 ]; then
        echo -e "** PARAMETER ALREADY SET **"
        exit 0
    fi
fi

echo -e "$OPTION\n" | sudo tee $MODFILE
echo -e "** $PARAM SUCCESSFULLY UPDATED **"
exit 0

Posted as a Gist if that’s more convenient: