Hardware | PCI/USB ID | Working? |
---|---|---|
GPU | 1002:1681 |
Yes |
Wireless | 17cb:1103 |
Yes |
Bluetooth | 17cb:1103 |
Untested |
Webcam | 04f2:b74f |
Yes |
TrackPoint | Yes | |
Touchpad | 06cb:00f9 |
Yes |
Fingerprint reader | Untested | |
Smartcard reader | 058f:9540 |
Untested |
Mobile broadband | 2c7c:030a |
Yes |
This article covers the installation and configuration of Arch Linux on a Lenovo Thinkpad T14 (AMD) Gen 3 21CFCT01WW laptop. Everything seems to work pretty much out the box with linux≥5.19.0, except the keyboard does not feel the same as the first generation and the battery life is not great.
For a general overview of laptop-related articles and recommendations, see Laptop.
Firmware
- If you run system firmware version 0.1.17 do not set the suspend mode in UEFI setup to Linux (S3). This sleep mode is not supported by the CPU. If you set S3 mode and upgrade the system firmware you need to do a downgrade to 0.1.17 to change it back, because the option is removed in newer firmware. If you set S3 mode nevertheless and try to suspend to mem/S3 mode the system will crash and you need to reset it by holding the power button for a few seconds. s2Idle works even in S3 mode but the power consumption is much higher with 4W instead of 0.5W and would drain the battery very fast.
- If you already set the firmware to S3 mode and upgrade to a newer firmware, you can find the older firmware upgrade iso image on the lenovo support page for your device under bios. There you need to click on the small document symbol named "details" to see the older versions. Before you can do a downgrade you have do disable the UEFI rollback prevention under security in the UEFI setup.
fwupd
fwupd supports the UEFI BIOS, the webcam, the touchpad, the CPU/GPU, TPM and the NVMe controller.
Sleep to idle (s2idle, S0ix)
According to Lenovo staff the CPU generation in this device only supports s2idle and not S3 sleep.
To try S0ix, write freeze
to /sys/power/state
(see Power management/Suspend and hibernate). The system should behave like it is sleeping, except the power button light is on. Press power button to wake up.
S0ix can be used as an alternative to "Sleep to RAM", by changing the following systemd configuration:
/etc/systemd/sleep.conf
[Sleep] SuspendState=freeze mem standby
Quectel EM05-G 4G LTE Modem
The integrated modem is supported by default, but you need a custom FCC unlock script for ModemManager. This script should be located at /usr/share/ModemManager/fcc-unlock.available.d/2c7c
and has to be linked from /etc/ModemManager/fcc-unlock.d/2c7c:030a
/usr/share/ModemManager/fcc-unlock.available.d/2c7c
#!/bin/bash # SPDX-License-Identifier: CC0-1.0 # 2022 Leah Oswald <mail@leahoswald.de> # # Queltec EM05-G FCC unlock mechanism # # require program name and at least 2 arguments [ $# -lt 2 ] && exit 1 # first argument is DBus path, not needed here shift # second and next arguments are control port names for PORT in "$@"; do # match port name echo "$PORT" | grep -q cdc-wdm && { CDC_WDM_PORT=$PORT break } done # fail if no cdc-wdm port exposed [ -n "$CDC_WDM_PORT" ] || exit 2 # run mbimcli operation mbimcli --device-open-proxy --device="/dev/$CDC_WDM_PORT" --quectel-set-radio-state=on exit $?
Then link them:
# ln -s /usr/share/ModemManager/fcc-unlock.available.d/2c7c /etc/ModemManager/fcc-unlock.d/2c7c:030a
After that everything should work normal.
There is an issue at the ModemManager Gitlab to add this script to make this obsolete in the future.
Function keys
Key | Visible?1 | Marked?2 | Effect |
---|---|---|---|
Fn |
Yes | No |
XF86WakeUp
|
Fn+Esc |
No | Yes | Toggles the Fn lock |
Fn+F1 |
Yes | Yes |
XF86AudioMute
|
Fn+F2 |
Yes | Yes |
XF86AudioLowerVolume
|
Fn+F3 |
Yes | Yes |
XF86AudioRaiseVolume
|
Fn+F4 |
Yes | Yes |
XF86AudioMicMute
|
Fn+F5 |
Yes | Yes |
XF86MonBrightnessDown
|
Fn+F6 |
Yes | Yes |
XF86MonBrightnessUp
|
Fn+F7 |
Yes | Yes |
XF86Display
|
Fn+F8 |
Yes | Yes |
XF86WLAN
|
Fn+F9 |
Yes | Yes |
XF86NotificationCenter
|
Fn+F10 |
Yes | Yes |
XF86PickupPhone
|
Fn+F11 |
Yes | Yes |
XF86HangupPhone
|
Fn+F12 |
Yes | Yes |
XF86Favorites
|
Fn+End |
Yes | No |
Insert
|
Fn+4 |
Yes | No |
XF86Sleep
|
Fn+Tab |
Yes | No |
XF86FullScreen
|
Fn+s |
Yes | No |
Alt_L Alt_L+Sys_Req
|
Fn+d |
No | No | Toggles the PrivacyGuard feature |
Fn+k |
Yes | No |
Scroll_Lock
|
Fn+p |
Yes | No |
Pause
|
Fn+b |
Yes | No |
Pause
|
Fn+Right Shift |
Yes | No |
XF86FnRightShift
|
Fn+Space |
No | Yes | Controls the keyboard backlight |
Fn+Print |
Yes | No |
XF86SelectiveScreenshot
|
Fn+Left Arrow |
Yes | No |
Home
|
Fn+Right Arrow |
Yes | No |
End
|
- The key is visible to
xev
and similar tools - The physical key has a symbol on it, which describes its function
Mute Mic LED always on
There is an issue where the LED light on the mic button is always on. A quick fix is running a simple script at startup and in conjecture with a hotkey deamon.
If the integer in the file /sys/class/leds/platform\:\:micmute/brightness
is 1 the light is on, if its 0 its of.
#!/bin/bash if pactl list sources | grep -A 5 "Family 17h/19h HD Audio Controller Digital Microphone" | grep -q 'Mute: yes'; then echo 1 | sudo tee /sys/class/leds/platform\:\:micmute/brightness else echo 0 | sudo tee /sys/class/leds/platform\:\:micmute/brightness fi