Lenovo ThinkPad T14 (AMD) Gen 4

From ArchWiki

This article or section does not follow the Laptop page guidelines.

Reason: Missing a "Function keys" section and some IDs in the hardware table. (Discuss in Talk:Lenovo ThinkPad T14 (AMD) Gen 4)
Hardware PCI/USB ID Working?
Touchpad Yes
Keyboard Yes
GPU Yes
Webcam 174f:11a8 Yes
Ethernet 10EC:8168 Yes
Bluetooth Yes
Audio Yes
Wireless 17CB:1103 Yes
Fingerprint reader 27c6:6594 Yes
TPM Yes
NFC Untested

Firmware

S3 Sleep

Option to enable S3 sleep is not available in the BIOS. As a result, only s2idle is available.

Wireless

Unreliable/High latency

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 NetworkManager service.

/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
[connection]
wifi.powersave = 2

There seems to be another issue where after some suspend/wakeup cycles the WiFi card gets into a weird state where it drops almost all outgoing transmissions. This results in authentication timing out and network speeds being unusable. Removing the PCIe device using the sysfs interface and reading it seems to solve this issue:

# lspci | grep Qualcomm
02:00.0 Network controller: Qualcomm Technologies, Inc QCNFA765[...]
# echo 1 > /sys/bus/pci/devices/0000:02:00.0/remove
# echo 1 > /sys/bus/pci/rescan

Failure to resume from hibernation

The ath11k_pci driver is experimental and it fails to recover the device after resuming from hibernation. There is an active bug report and the patch to fix is pending public review.

WAN

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-binAUR. However, this tool refuses to unlock Lenovo p14s gen4 because this model is not yet certified/has not yet passed RF testing.

As of 2023-11-24 it shows the following message when trying to FCC unlock the modem:

DPR_Fcc_unlock_service[40670]: WWAN is not supported in this machine

Fortunately, it is a very simple executable that only checks what is 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
/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

Do not forget to make the file executable.

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 provider.

Fan

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

Fingerprint reader works out of the box with fprintd. 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

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:

https://stuff.kurz.pw/arch/P14s_G4/Speakers/

They were created on a P14s G4 AMD (identical to T14) with Windows 11.

Thunderbolt 3 compatibility

Tested with a Lenovo Thunderbolt 3 Dock (40AC) it simply worked out-of-the box (using the USB-C connector right next to the RJ45 port), resulting in new pcie devices appearing on lspci etc. So yes, this laptop actually has Thunderbolt 3 compatibility. As with the speaker profiles this test was done on an (identically build) P14s.

Depending on BIOS configuration thunderbolt devices might need activation before being usable, e.g. using bolt. For that run boltctl list first to retrieve the devices UUID. After that use boltctl enroll --policy=auto <uuid> to enable the device.

Other issues

Hang on splash

This article or section needs expansion.

Reason: The splash option is GRUB-specific: it should be determined whether the issue is hardware related (and should be kept here) or GRUB-related (and should be merged to the GRUB page). (Discuss in Talk:Lenovo ThinkPad T14 (AMD) Gen 4)

Remove 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 alsa-utils and then toggling the LED state once from alsamixer.

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:

/etc/acpi/handler.sh

   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.