Lenovo ThinkPad T14/T14s (Intel) Gen 2
Hardware | PCI/USB ID | Working? |
---|---|---|
Touchpad | 06CB:CE68 |
Yes |
TrackPoint | Yes | |
GPU (Intel) | 8086:9A49 |
Yes |
Webcam | 13D3:5439 |
Yes |
Bluetooth | 8087:0026 |
Yes |
Audio | 8086:A0C8 |
Yes |
Wireless | 8086:A0F0 |
Yes |
Ethernet | 8086:15FC |
Yes |
Mobile broadband | Untested | |
Fingerprint reader | 06CB:00F9 |
Yes |
The Lenovo ThinkPad T14/T14s (Intel) Gen 2 was introduced in 2020. It features a 14" screen, 11th-gen Intel Core processors, and integrated Intel Iris Xe graphics. Everything seems to work pretty much out the box with kernel >=5.16.0.
To ensure you have this version, install the package dmidecode and run:
# dmidecode -s system-version
ThinkPad T14s Gen 2i
For a general overview of laptop-related articles and recommendations, see Laptop.
Installation
Intel Turbo Boost
Check that Intel® Turbo Boost Technology 2.0 is enabled using
$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
An output of 1 means it is not enabled, so you will have to reset your BIOS to defaults. After doing that, running the command again should print 0. You should be able to see your CPU boosting way higher.
Suspend
The BIOS has two options for suspend: Windows and Linux (aka S0ix or "modern standby") and Linux S3. Both S0ix and S3 modes work on this system, but there is a bug that causes the trackpad to become laggy after resuming from S3 suspend.
Graphics
Screen Tearing might be visible on some desktop environments on this machines built-in display. Installing the xf86-video-intel package resolves the issue. Note that there might be caveats in installing the packages as discussed in Intel graphics.
Sound
This laptop requires ALSA firmware for the internal sound card to work.
Firmware
fwupd
fwupd supports updating the UEFI BIOS, NVMe SSD, and fingerprint reader (via the LVFS testing remote) out of the box.
Function keys
Key | Visible?1 | Marked?2 | Effect |
---|---|---|---|
Fn+Esc |
No | Yes | Enables Fn lock |
Fn |
Yes | Yes | XF86WakeUp
|
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 | XF86Tools
|
Fn+F10 |
Yes | Yes | XF86Bluetooth
|
Fn+F11 |
No | Yes | Unknown |
Fn+F12 |
Yes | Yes | XF86Favorites
|
Fn+Space |
No | Yes | Toggle Keyboard Backlight |
- The key is visible to
xev
and similar tools. - The physical key has a symbol on it, which describes its function.
Keyboard backlight
Works out of the box. There is no button on the keyboard to toggle it, but it can be controlled by software.
Automatically turn on backlight when typing
Using a c program that continuously checks for keyboard input, it is possible to activate the backlight for a certain time. The program source is as a follows
kbdbacklight.c
/* Original Author: Howard Chu <hyc@symas.com> 2013-01-15 * * compile as "gcc -O2 -o kbdbacklight kbdbacklight.c" and run it in the background, or arrange to have it run at bootup. * * adapted by gabtub@gmail.com 2017-01-22 * using https://gist.github.com/hadess/6847281 * based on http://askubuntu.com/questions/383501/enable-the-keyboard-backlights-on-supported-lenovo-e-g-carbon-x1-with-command * original code found at http://forum.notebookreview.com/threads/asus-keyboard-backlight-controller.703985/ * sigterm catching done as shown in https://airtower.wordpress.com/2010/06/16/catch-sigterm-exit-gracefully/ * * fixed by sva 2022-10-08 * uses /sys/class/leds/, s.t. ec_sys is not necessary * * monitor keyboard activity and toggle keyboard backlight */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <poll.h> #include <unistd.h> #include <signal.h> #include <string.h> static char dummybuf[8192]; /** @brief How many milliseconds before turning off kbd light */ #ifndef IDLE_MSEC #define IDLE_MSEC 5000 #endif #ifndef BRGHT_OFF #define BRGHT_OFF '0' #endif #ifndef BRGHT_MED #define BRGHT_MED '1' #endif #ifndef BRGHT_MAX #define BRGHT_MAX '2' #endif volatile sig_atomic_t running = 1; void term(int signum) { // sigterm == 15 running = 0; } int main(int argc, char *argv[]) { struct sigaction action; struct pollfd pfd; int rc, blfd; int timeout, prev = -1; char bm = BRGHT_MED; memset(&action, 0, sizeof(struct sigaction)); action.sa_handler = term; sigaction(SIGTERM, &action, NULL); blfd = open("/sys/class/leds/tpacpi::kbd_backlight/brightness", O_WRONLY); // needs the event bound to the keyboard // for Xorg ie find using // cat /var/log/Xorg.0.log | grep "keyboard.*event" // cat ~/.local/share/xorg/Xorg.0.log | grep "keyboard.*event" pfd.fd = open("/dev/input/event3", O_RDONLY); pfd.events = POLLIN; timeout = IDLE_MSEC; while (running) { rc = poll(&pfd, 1, timeout); if (rc) { /* got keyboard input, flush it all and * wait for the next event. */ read(pfd.fd, dummybuf, sizeof(dummybuf)); timeout = IDLE_MSEC; bm = BRGHT_MED; } else { /* once we've gotten a timeout, turn off * kbd backlight and wait forever for * the next keypress */ timeout = -1; bm = BRGHT_OFF; } if (bm == prev) continue; lseek(blfd, 13, SEEK_SET); write(blfd, &bm, 1); prev = bm; } // clean up after sigterm bm = BRGHT_OFF; lseek(blfd, 13, SEEK_SET); write(blfd, &bm, 1); }
This file can be compiled with:
gcc -O2 -o kbdbacklight kbdbacklight.c
and must be executed as root.
It would be possible to autostart this by creating a systemd service as follows:
- Create a folder /usr/local/customscripts/kbdbacklight/
- Save the compiled c program to /usr/local/customscripts/kbdbacklight/kbdbacklight
- Create the following systemd service and place it in /etc/systemd/system/kbdbacklight.service
/etc/systemd/system/kbdbacklight.service
[Unit] Description=starts a daemon monitoring keyboard usage. will turn on keyboard backlight until no key is pressed for a TIMEOUT period Requires= After= [Service] Type=simple User=root ExecStart=/usr/local/customscripts/kbdbacklight/kbdbacklight KillSignal=SIGKILL [Install] WantedBy=multi-user.target
- start/enable
kbdbacklight.service
Specifiy the amount timeout for turning the backlight off again by adjusting the constant IDLE_MSEC in the c program. (and recompiling it again)
Display
Panel part number is: LP140WF9-SPF2. The color calibration file is available here at the "Download ICC File" link.
See also
T14 links
- Product Specifications Reference (PSREF)
- Hardware maintenance manual
- User guide
- https://ubuntu.com/certified/202104-28912