Option to enable S3 sleep is not available in the BIOS. As a result, only
s2idle is available.
There is an active thread in Lenovo forums regarding this issue. Possible workaround is to disable power saving mode by adding following lines and restarting
[connection] wifi.powersave = 2
Failure to resume from hibernation
You need to FCC Unlock the Fibocom L860R aka "Intel XMM7560 LTE Advanced Pro Modem" before it can be used. To do this, you need to install "thinkpad-l860-gl-fcc-unlock-bin" from aur. However, this tool refuses to unlock Lenovo p14s gen4 because this model is not yet certified/hasn't yet passed RF testing. As of today (2023-11-24) it shows the following message when trying to FCC unlock the modem:
DPR_Fcc_unlock_service: WWAN is not supported in this machine
Fortunately, it is a very stupid executable that only checks what's inside /sys/class/dmi/id/product_family before allowing an fcc unlock. If you want to use your Fibocom L860R you need to create /etc/ModemManager/fcc-unlock.d/8086\:7560 and make it look like this:
/usr/bin/echo ThinkPad X1 Carbon Gen 10 > product_family /usr/bin/chmod 600 product_family /usr/bin/mount -o bind product_family /sys/class/dmi/id/product_family /opt/fcc_lenovo/DPR_Fcc_unlock_service /usr/bin/umount /sys/class/dmi/id/product_family exit 0
Don't forget to make the file executable:
sudo chmod 755 /etc/ModemManager/fcc-unlock.d/8086\:7560
That way /opt/fcc_lenovo/DPR_Fcc_unlock_service will think that your laptop is a Thinkpad X1 Carbon Gen 10 and it will happily unlock the modem for you to use. Since the file is saved in /etc/ModemManager/fcc-unlock.d/ ModemManager will FCC unlock your modem automatically every time you initialize a connection to your provdier.
The fan is relatively loud and triggers from simple web browsing.
- A first solution is thinkfan from Fan speed control, but its not yet perfect as the lowest level maps to too high RPM.
- From the fan-controll page: see gentoo link for an example, and add the proposed experimental=1
Fingerprint reader works out of the box with. Multiple fingers can be enrolled and any one of those fingers can be used to authorize.
Infrared camera and emitter
On models with an infrared camera, howdy can be used to enable face unlock. On some models, the IR emitter is not enabled automatically, in that case, follow the workaround from Howdy#IR emitter does not work
Speakers work out of the box. How ever, they won't have the same sound quality as on Windows due to the missing Dolby Atmos Convolver.
To enable Dolby Atmos Convolver install EasyEffects, go to Effects > Add Convolver > Import Impulse
The quality difference is massive, converting the speakers from sounding tinny and cheap to something actually enjoyable.
You can download the "Movie", "Music", and "Dynamic" presets here:
They were created on a P14s G4 AMD (identical to T14) with Windows 11.
Hang on splash
quiet splash from the kernel parameters.
Mic LED always on
Out of the box, mic LED always stays on irrespective of what the actual state is. This can be turned off by installing the
Display brightness resets
On models with 2.8K OLED pannel, display brightness resets if the screen is blanked and unblanked. This is fixed in
linux-6.6 and above.
Display stays off after lid close
If your display stays off after closing and then opening the lid, there are few things to note:
- the laptop is not crashed, it is just the display that does not turn itself on again
- you need to "re-initialize" the display in some way, e.g. connecting the laptop via the HDMI port to an external display and then disconnecting
- or switching resolution or (even better) just the refresh rate. This is how this solution works.
Install acpid and then edit the following file and add the lines starting with XDG_Session:
button/lid) case "$3" in close) logger 'LID closed' ;; open) logger 'LID opened' XDG_SESSION_TYPE=wayland XDG_RUNTIME_DIR=/run/user/1000 kscreen-doctor output.eDP-1.mode.1 output.eDP-1.enable XDG_SESSION_TYPE=wayland XDG_RUNTIME_DIR=/run/user/1000 kscreen-doctor output.eDP-1.mode.0 output.eDP-1.enable ;; *) logger "ACPI action undefined: $3" ;; esac
If you have the 2.8k OLED display this will switch the display to 2880x1800 @ 60Hz and then to 2880x1800 @ 90 Hz every time you open the lid. That way your display gets re-initialized. Note that this solution is only for Wayland. If you are still using X, you will need other environment variables.