Lenovo ThinkPad P14s (AMD) Gen 4

HardwarePCI/USB IDWorking?
GPU1002:15bfYes
Wi-Fi17cb:1103Yes
Bluetooth10ab:9309Yes
Ethernet10ec:8168Yes
Audio1022:15e3Mic might not work
TrackPointYes
TouchpadYes
TouchscreenYes
Webcam5986:118cYes
TPMYes
Fingerprint reader27c6:6594Yes
Smartcard reader2ce3:9563Untested

This article covers the installation and configuration of Arch Linux on a Lenovo ThinkPad P14s (AMD) Gen 4 laptop. With recent enough kernel the device works almost out of the box.

For a general overview of laptop-related articles and recommendations, see Laptop.

Firmware

Warning: There is an issue that can leave your system in broken state when changing sleep states in BIOS. See Lenovo ThinkPad T14 (AMD) Gen 3#Firmware.

This model is fully compatible with fwupd.

fwupdmgr get-devices detects the System Firmware, UEFI BIOS, webcam, fingerprint sensor, CPU/GPU, TPM and the NVMe controller.

CPU

Since kernel 6.5, the AMD P-State EPP driver with "Active" profile is applied by default, no changes should be needed.

In case you are getting GPU resets (black screen), check Lenovo ThinkPad T14s (AMD) Gen 3#CPU.

Tip: You can verify your CPU frequency scaling driver with cpupower or cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver.

Touchpad

To disable sleep wake-up from touchpad see Lenovo ThinkPad T14s (AMD) Gen 3#Disable wakeup from sleep on touchpad activity.

Touchscreen

Note: Not all variations of this model have touchscreen.

The variation of this model with product code/name 21K50009CK is equipped with InfoVision display with touchscreen capability and it works out of the box.

The respective touchscreen input can be found as I2C device ELAN901C:00 04F3:2EDE.

See Touchscreen for other information.

Speakers

Speakers work out of the box. However, they will not have the same sound quality as on Windows due to the missing Dolby Atmos Convolver. The quality can be improved by using EasyEffects with a convolver effect (and possibly others) - see here for an example preset for this laptop.

Wi-Fi

Starting with kernel v6.10, remaining bugs with the ath11k firmware have been fixed.

However, this patch was found to cause issues with suspend, and was reverted in 6.10.10 as well as 6.11.

See Lenovo ThinkPad T14s (AMD) Gen 3#Network / Wi-Fi for a fix that unloads the ath11k_pci module before sleep and loads it again after resume.

Previously, specific ath11k firmware versions caused suspend during lid close to immediately wake from sleep.

Smartcard reader

Seems to work and read cards. Follow instructions from smartcards.

Fingerprint reader

Works as expected. Follow fprintd

Power management

S3 sleep / s2idle

S3 (deep) sleep is not supported by this CPU anymore. However, s2idle works out of the box and causes no problems with sleep / hibernation.

The sleep power consumption with s2idle (or S0/S0ix/Modern Standby) can vary as it depends on the running OS and how well it can put peripherals into sleep mode.

Hibernate

Works fine. If you face Wi-Fi issues after hibernation see #Wi-Fi.

Battery thresholds

Battery charge thresholds can be correctly set with TLP or within KDE / GNOME power management.

AMD P-State EPP

If you are using power-profiles-daemon, please note that the current stable release of it do not fully support AMD P-State EPP. You can switch to TLP version 1.6 or newer that supports AMP P-State features, or fix this using an udev rule + script to apply different AMD P-State EPP states depending on whether the laptop is running on battery or charger.

/etc/udev/rules.d/99-battery.rules
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/local/bin/on_battery.sh"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/local/bin/on_ac.sh"
/usr/local/bin/on_battery.sh
#!/usr/bin/bash

# Change Dirty Writeback Centisecs according to TLP / Powertop
echo '5000' > '/proc/sys/vm/dirty_writeback_centisecs';

# Change AMD Paste EPP energy preference
# Available profiles: performance, balance_performance, balance_power, power
echo 'balance_power' | tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference;

# If required, change cpu scaling governor
# Possible options are: conservative ondemand userspace powersave performance schedutil
#cpupower frequency-set -g powersave;

# Platform Profiles Daemon will do this automatically, based on your settings in KDE / GNOME
# You can how ever, set this manually as well
# Possible profile options are: performance, powersave, low-power
#echo 'powersave' > '/sys/firmware/acpi/platform_profile';

# Radeon AMDGPU DPM switching does not seem to be supported.
# Possible options should be: battery, balanced, performance, auto
#echo 'battery' > '/sys/class/drm/card0/device/power_dpm_state'; 

# Should always be auto (TLP default = auto)
# Possible options are: auto, high, low
#echo 'auto' > '/sys/class/drm/card0/device/power_dpm_force_performance_level';

# Runtime PM for PCI Device to auto
find /sys/bus/pci/devices/*/power -name control -exec sh -c 'echo "auto" > "$1"' _ {} \;
for i in $(find /sys/devices/pci0000\:00/0* -maxdepth 3 -name control); do
    echo auto > $i;
done
/usr/local/bin/on_ac.sh
#!/usr/bin/bash

# Change Dirty Writeback Centisecs according to TLP / Powertop
echo '500' > '/proc/sys/vm/dirty_writeback_centisecs';

# Change AMD Paste EPP energy preference
# Available profiles: performance, balance_performance, balance_power, power
echo 'balance_performance' | tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference;

# If required, change cpu scaling governor
# Possible options are: conservative ondemand userspace powersave performance schedutil
#cpupower frequency-set -g performance;

# Platform Profiles Daemon will do this automatically, based on your settings in KDE / GNOME
# You can how ever, set this manually as well
# Possible profile options are: performance, powersave, low-power
#echo 'performance' > '/sys/firmware/acpi/platform_profile';

# Radeon AMDGPU DPM switching does not seem to be supported.
# Possible options should be: battery, balanced, performance, auto
#echo 'performance' > '/sys/class/drm/card0/device/power_dpm_state';

# Should always be auto (TLP default = auto)
# Possible options are: auto, high, low
#echo 'auto' > '/sys/class/drm/card0/device/power_dpm_force_performance_level';

# Runtime PM for PCI Device to on
find /sys/bus/pci/devices/*/power -name control -exec sh -c 'echo "on" > "$1"' _ {} \;
for i in $(find /sys/devices/pci0000\:00/0* -maxdepth 3 -name control); do
    echo on > $i;
done

Additionally make /usr/local/bin/on_battery.sh and /usr/local/bin/on_ac.sh executable.

Power Profiles Daemon

The package power-profiles-daemon is the standard power management service for KDE#Power management and GNOME#Power modes. It conflicts with TLP and the reasons for that are described here: https://gitlab.freedesktop.org/upower/power-profiles-daemon#why-not

  1. Install power-profiles-daemon
  2. Start/enable the power-profiles-daemon service.

Microphone

Reported as unplugged

If the internal mic is recognized by ALSA, but the recorded input is silent, please see: https://bbs.archlinux.org/viewtopic.php?pid=2162297#p2162297

LED

If the Mic LED seems to stay always on see: Lenovo ThinkPad T14 (AMD) Gen 3#Mute Mic LED always on.

Function keys

Key Visible?1 Marked?2 Effect Note
FnYes-XF86WakeUpCan be swapped with left Ctrl in BIOS
Fn+4YesNoXF86Sleep
Fn+EscNoYesToggles Fn lockHas status led
Fn+F1YesYesXF86AudioMuteHas status led
Fn+F2YesYesXF86AudioLowerVolume
Fn+F3YesYesXF86AudioRaiseVolume
Fn+F4YesYesXF86AudioMicMuteHas status led
Fn+F5YesYesXF86MonBrightnessDown
Fn+F6YesYesXF86MonBrightnessUp
Fn+F7YesYesXF86Display
Fn+F8YesYesXF86WLANMarked with airplane mode
Fn+F9YesYesXF86MessengerMarked with message box
Fn+F10YesYesXF86GoMarked with phone answer call
Fn+F11YesYesCancelMarked with phone end call
Fn+F12YesYesXF86Favorites
Fn+TabYesNoXF86FullScreen
Fn+LeftYesNoHome
Fn+RightYesNoEnd
Fn+PYesNoPause
Fn+SYesNoSys_Req
Fn+KYesNoScroll_Lock
Fn+BYesNoBreak
Fn+PrtScYesYesXF86Launch2
Fn+SpaceNoYesChange keyboard backlight level
  1. The key is visible to xev or wev and similar tools.
  2. The physical key has a symbol on it, which describes its function.

See also

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.