Lenovo ThinkPad T14s (AMD) Gen 3

Hardware
PCI/USB ID
Working?
GPU
1002:1681
Has issues
Wi-Fi
17cb:1103
Yes
Audio
1022:15e3
Yes
TrackPoint
Yes
Touchpad
Yes
Webcam
04f2:b74f
Yes
Fingerprint reader
27c6:6594
Yes
Mobile broadband
2c7c:030a
Yes
Bluetooth
10ab:9309
Yes
Smartcard reader
058f:9540
Yes
This article covers the installation and configuration of Arch Linux on a Lenovo Thinkpad T14s (AMD) Gen 3 laptop. Almost everything seems to work pretty much out the box.
For a general overview of laptop-related articles and recommendations, see
Laptop
.
Firmware
Updating the firmware using the
fwupd
utility works as long as all the relevant options are enabled in the BIOS (Enable Windows Update UEFI Update).
Updating the BIOS firmware also fixes some error that produces the following output from linux:
[Hardware Error]: Corrected error, no action required.
[Hardware Error]: CPU:0 (19:44:1) MC15_STATUS[Over|CE|MiscV|AddrV|-|-|SyndV|CECC|-|-|-]: 0xdc204000000c011b
[Hardware Error]: Error Addr: 0x00000001faa88180
[Hardware Error]: IPID: 0x0000009600050f00, Syndrome: 0x000001ff0a240700
...
Warning
The UEFI firmware 0.1.40 has been reported to cause troubles on this Thinkpad. See
#Laptop cannot suspend/reboot/shutdown
Touchpad
The touchpad works fine on
Wayland
.
However, some people have an occasional freeze of 3-4 seconds on
Xorg
.
Disable wakeup from sleep on touchpad activity
Use the following to disable wake-up events caused by the touchpad. Note that this only applies to the touchpad itself and the integrated buttons for left/right click at its bottom, not the 3 buttons at its top or any other input.
/etc/udev/rules.d/99-disable-touchpad-wakeup.rules
KERNEL=="i2c-SYNA8018:00", SUBSYSTEM=="i2c", ATTR{power/wakeup}="disabled"
Tip
You can find the device name with
grep -i touchpad -A 1 /proc/bus/input/devices
.
Speakers
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
You can download the "Movie" and "Music" preset here:
https://files.bestmail.ws/Arch/T14s_G3_AMD/T14S_G3_Music_Movies.irs
They were created on the T14s G3 AMD with Windows 10.
Display
You can download a
calibrated color profile
for the 400nits IPS panel.
Some users reported crashes / issue of the display, especially after hibernate/suspend: a fix is to disable panel self refresh by adding
amdgpu.dcdebugmask=0x10
to the
kernel parameters
.
For full multi display support across USB-C, see
DisplayLink#USB 3.0 DL-6xxx, DL-5xxx, DL-41xx, DL-3xxx Devices
.
Network / Wi-Fi
There was a
known bug
in the
ath11k
module that could block the resume process, freeze the graphics interface and cause loss of wireless card interface. A manual fix is to disable the
ath11k_pci
module before hibernate and re-enable it after resume. However, this issue shouldn't be present anymore.
If you still face the issue: See
Dell XPS 13 (9310)#Wi-Fi
for a systemd service to automate this procedure.
This can be automated via sleep hooks - if the module is unloaded before hibernating or suspending it unloads immediately with no delay, and the resume kernel bug does not happen:
/etc/systemd/system/ath11k-suspend.service
[Unit]
Description=Suspend: rmmod ath11k_pci
Before=sleep.target

[Service]
Type=oneshot
ExecStart=/usr/bin/rmmod ath11k_pci

[Install]
WantedBy=sleep.target
/etc/systemd/system/ath11k-resume.service
[Unit]
Description=Resume: modprobe ath11k_pci
After=suspend.target suspend-then-hibernate.target hibernate.target hybrid-sleep.target

[Service]
Type=oneshot
ExecStart=/usr/bin/modprobe ath11k_pci

[Install]
WantedBy=suspend.target suspend-then-hibernate.target hibernate.target hybrid-sleep.target
You need to
enable
ath11k-suspend.service
and
ath11k-resume.service
.
Additionally it might be required to also
restart
NetworkManager.service
.
Mobile broadband
Works correctly. Follow instruction from
Mobile broadband modem
especially section
FCC unlocking
.
Smartcard reader
Seems to work and read cards. Follow instructions from
smartcards
.
Fingerprint reader
Work as expected. Follow
fprintd
Power management
S3 sleep / s2idle
S3 sleep is not supported. However, s2idle works out of the box and causes no problems with sleep / hibernation.
Hibernate
Works fine. If you face Wi-Fi issues after hibernation see: Network / Wi-Fi
Battery thresholds
Battery charge thresholds can be correctly set with
TLP
, within
KDE
/
GNOME
power management or from the command line:
# echo 75 > /sys/class/power_supply/BAT0/charge_start_threshold
# echo 80 > /sys/class/power_supply/BAT0/charge_stop_threshold
AMD P-State EPP
Use
power-profiles-daemon
or this 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 doesn't 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 doesn't 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
Install
power-profiles-daemon
Start/enable
the
power-profiles-daemon
service.
Microphone LED
Some users reported that the Mic LED is always on.
This doesn't always happen but if you face the issue see:
Lenovo ThinkPad T14 (AMD) Gen 3#Mute Mic LED always on
.
Function keys
Key
Visible?
1
Marked?
2
Effect
Note
Fn
Yes
No
XF86WakeUp
Fn+4
Yes
Yes
XF86Sleep
Fn+Esc
No
Yes
Toggles Fn lock
Has status led
Fn+F1
Yes
Yes
XF86AudioMute
Has status led
Fn+F2
Yes
Yes
XF86AudioLowerVolume
Fn+F3
Yes
Yes
XF86AudioRaiseVolume
Fn+F4
Yes
Yes
XF86AudioMicMute
Has status led
Fn+F5
Yes
Yes
XF86MonBrightnessDown
Fn+F6
Yes
Yes
XF86MonBrightnessUp
Fn+F7
Yes
Yes
XF86Display
Fn+F8
Yes
Yes
XF86WLAN
Marked with airplane mode
Fn+F9
Yes
Yes
XF86Messenger
Marked with message box
Fn+F10
Yes
Yes
XF86Go
Marked with phone answer call
Fn+F11
Yes
Yes
Cancel
Marked with phone end call
Fn+F12
Yes
Yes
XF86Favorites
Fn+Left
Yes
No
Home
Fn+Right
Yes
No
End
Fn+P
Yes
No
Pause
Fn+S
Yes
No
Sys_Req
Fn+K
Yes
No
Scroll_Lock
Fn+B
Yes
No
Break
Stamp
Yes
Yes
Print
Fn+Space
No
Yes
Change keyboard backlight level
The key is visible to
xev
and similar tools.
The physical key has a symbol on it, which describes its function.
Troubleshooting
Laptop cannot suspend/reboot/shutdown
If your laptop cannot suspend, reboot or even shutdown, it might be due to the UEFI Firmware 0.1.40, released on May 5th, 2024.
This firmware has been reported to cause several issues such as (and possibly not limited to):
Laptop cannot suspend/reboot/shutdown;
TLP and
fwupdmgr
services cannot start;
Regenerating the
initramfs
is not possible, as the
mkinitcpio
autodetect hook hangs indefinitely.
All these issues might be related to the malfunctioning of the
AMD Sensor Fusion HUB device
.
Running
dmesg
will reveal similar errors:
[    5.547449] BUG: unable to handle page fault for address: 000000010000003a
[    5.547474] #PF: supervisor read access in kernel mode
[    5.547486] #PF: error_code(0x0000) - not-present page
[    5.547497] PGD 0 P4D 0 
[    5.547509] Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI
[    5.547522] CPU: 13 PID: 466 Comm: (udev-worker) Not tainted 6.10.2-arch1-2 #1 
[    5.547557] RIP: 0010:amd_sfh_get_report+0x1c/0x110 [amd_sfh]
...
[    5.557018] CR2: 000000010000003a
[    5.557524] ---[ end trace 0000000000000000 ]---
To solve this issue,
blacklist
the
amd_sfh
kernel module. 
Notice that, since you cannot rebuild the
initramfs
, you should first blacklist the 
module  from your boot loader, and later make it permanent.
See also
here
and
here
.
See also
Lenovo ThinkPad T14 (AMD) Gen 3