Lenovo ThinkPad T14s (AMD) Gen 3 - ArchWiki

Jump to content

# Lenovo ThinkPad T14s (AMD) Gen 3

From ArchWiki

Hardware | PCI/USB ID | Working?
--- | --- | ---
GPU | `1002:1681` | Has issues
Wireless | `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

## CPU

There are a number of frequency-scaling issues surrounding ACPI-cpufreq causing the internal GPU to reset at seemingly random times. This can be fixed by using "amd_pstate" (see below). GPU resets are infrequent, but should be considered prior to purchase of laptop if intending to stick with the ACPI-cpufreq performance scaling driver. The resets cause the screen to turn black, forcing the user to either reboot or relogin via a login manager. Switching to a TTY during a GPU reset is sometimes possible.

To follow these issues, see:

https://bugzilla.kernel.org/show_bug.cgi?id=213145

https://gitlab.freedesktop.org/drm/amd/-/issues/1974

https://gitlab.freedesktop.org/drm/amd/-/issues/2068

https://gitlab.freedesktop.org/drm/amd/-/issues/2443

The overvolting workaround provided does not affect the ThinkPad T14s Gen 3 (AMD) processors because ultrabook processors are unable to be overvolted.

On kernels < 6.5, if using ACPI-cpufreq is not a requirement, it is possible to use the experimental amd-pstate frequency-scaling driver, by adding the `amd_pstate=passive` kernel parameter (prior to Kernel 6.3) or `amd_pstate=active` kernel parameter (for Kernel 6.3 or newer). Note that the kernel parameter is only available for kernel versions 5.17 and up. This driver appears to be more stable than the ACPI-cpufreq driver, not only reducing the number of GPU resets, but also lowering idle CPU temperatures.

Since kernel 6.5, the AMD P-State EPP driver with "Active" profile applied by default, so normally no changes are needed.

## 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

1. Install power-profiles-daemon
2. 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 |

1. The key is visible to `xev` and similar tools.
2. 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):

1. Laptop cannot suspend/reboot/shutdown;
2. TLP and `fwupdmgr` services cannot start;
3. 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

Category:

- Lenovo