Lenovo ThinkPad T14/T14s (Intel) Gen 2 - ArchWiki

Jump to content
From ArchWiki

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

Reason: Missing an accessibility section. (Discuss in Talk: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

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

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Long code should not be kept inside the pages + missing prompt & a few Template:ic. (Discuss in Talk:Lenovo ThinkPad T14/T14s (Intel) Gen 2)

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`

Note:

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

### T14s links

- Product Specifications Reference (PSREF)
- Hardware maintenance manual
- User guide
- https://ubuntu.com/certified/202103-28856

Category:

- Lenovo

Hidden categories:

- Pages or sections flagged with Template:Laptop style
- Pages or sections flagged with Template:Style