Lenovo ThinkPad T480 - ArchWiki

Jump to content

# Lenovo ThinkPad T480

From ArchWiki

Hardware | PCI/USB ID | Working?
--- | --- | ---
GPU (Intel) | `8086:5917` | Yes
GPU (NVIDIA) | `10de:1d10` | Yes
Ethernet | `8086:15d7` | Yes
Wi-Fi | `8086:24fd` | Yes
Audio | `8086:9d71` | Yes
TrackPoint | PS/2 | Yes
Touchpad | `001d:06cb` | Yes
Webcam | `0c45:6366` | Yes
Bluetooth | `8087:0a2b` | Yes
Smart card reader | `058f:9540` | Yes
Mobile internet (Realtek) | `2cb7:0210` | Yes
Mobile internet (Fibocom) | `8086:7360` | No
Fingerprint reader | `06cb:009a` | Yes
SD-card reader | `0bda:0316` | Yes

This article covers the installation and configuration of Arch Linux on a Lenovo ThinkPad T480 laptop.

## Accessibility

Note Blind users should request the help of a sighted person to change firmware settings.

The UEFI firmware interface relies heavily on visual menus and lacks built-in accessibility features such as text-to-speech or audible beep codes for navigation.

## TrackPoint and touchpad

TrackPoint and touchpad work out of the box and do not seem to have the same issues as the X1 Carbon Gen 6. However, one could benefit from having greatly increased event reporting frequency by enabling the `psmouse` kernel module option `synaptics_intertouch=1`. This can be made permanent with:

    /etc/modprobe.d/psmouse.conf

    options psmouse synaptics_intertouch=1

For two-finger scrolling activity this gives a boost from 40 Hz to 135 Hz on average. This boost greatly contributes to the Desktop environment scrolling performance and smoothness. evhz-gitAUR may be of use to find out how frequently the Touchpad reports events. For example, after enabling said option:

    # evhz

    Press CTRL-C to exit.
    ...
    ^C
    Average for Synaptics TM3276-022:   137Hz

Note that units adorned with the "glass Touchpad mod" will not benefit from the elevated Touchpad performance with the procedure above. Running `evhz` will also indicate a different Touchpad identifier:

    # evhz

    ...
    Average for Synaptics TM3625-010:    42Hz

## Power management and throttling

Due to missing Intel Dynamic Platform and Thermal Framework (DPTF) support for Linux, a feature which should detect whether the laptop is used on a desk or on the lap so it can throttle the CPU in the latter case to reduce the temperature is not working, and the CPU is always throttled. A Lenovo employee explained the situation and the solution Lenovo is building in a PDF posted in their forum (archive.org backup of the PDF). The firmware and EFI fixes have been released for a different model and Lenovo has recognized that the T480 is affected. An interim fix is throttled (GitHub).

### CPU stuck at minimum frequency

A signal called BD PROCHOT inside the laptop can force the CPU to the lowest power state (400 MHz in case of the T470s) regardless of the governor. This is meant to protect the system and can be triggered by many reasons—the CPU temperature rising above 60 °C, using a third party battery, etc. It can be ignored by writing a value to a register [1]. This script is an alternative to the app ThrottleStop on Windows. Install msr-tools and execute this script after every boot (or make a systemd Oneshot service).

    /usr/local/bin/throttlestop

    #!/bin/bash
    # Disable BD PROCHOT signal on ThinkPads to prevent throttling the CPU to min. freq.
    modprobe msr
    reg="$(rdmsr -d 0x1FC)"         # commands rdmsr and wrmsr provided by msr-tools on Arch
    if [ $((reg%2)) -eq 1 ];
    then   # basically reg & 0xFFFE
    	wrmsr 0x1FC $((reg-1))
    fi

## Firmware

Lenovo provides firmware updates for this device through the Linux Vendor Firmware Service (LVFS). Available updates and changelogs can be found on the LVFS website. These include security patches for the Intel Management Engine and the system firmware.

The updates can be installed using fwupd.

## Mobile internet

There is no working Linux driver for the Fibocom L850-GL. See this thread and this thread for more information.

## Screen backlight

Without the Intel driver (xf86-video-intel), neither xbacklight nor xrandr brightness controls are working. However, the package acpilightAUR provides a drop-in replacement for xbacklight. Apart from installing the package (which conflicts with xorg-xbacklight), the user must be added to the `video` group and the following udev rule must be created:

    /etc/udev/rules.d/90-backlight.rules

    SUBSYSTEM=="backlight", ACTION=="add", \
      RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness", \
      RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"

    SUBSYSTEM=="leds", ACTION=="add", KERNEL=="*::kbd_backlight", \
      RUN+="/bin/chgrp video /sys/class/leds/%k/brightness", \
      RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness"

This allows control of the backlight with the `xbacklight` command provided by acpilight, as well as control of the various LEDs on the T480.

## Encryption and keyboard

Assuming an encrypted installation, a prompt is displayed to enter a password to decrypt the disk during the boot process. In some cases it may not be possible to enter the password because the keyboard driver is not loaded yet. To fix this, add the `atkbd` module to the mkinitcpio `MODULES` array:

    /etc/mkinitcpio.conf

    MODULES = (... atkbd)

Regenerate the initramfs afterwards.

## Fingerprint reader

The fingerprint reader is supported on Kernel 5.8.1 and newer with libfprint-tod-gitAUR. See this Reddit thread for more information.

Install python-validityAUR and register fingerprints with:

    $ fprintd-enroll

Refer to the entry on fingerprint sensor of the Lenovo ThinkPad X270 for general procedures if `list_devices failed` is returned. See these steps for alternative instructions.

## Function keys

Some special buttons are not supported by the X server due to a keycode number limit. Certain keys are also handled by other devices other than the keyboard.

Key | Visible? | Marked? | Effect
--- | --- | --- | ---
`Fn` | Yes | Yes | `XF86WakeUp`
`Fn+Esc` | No | Yes | Toggles 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 | `XF86Tools`
`Fn+F10` | Yes | Yes | `XF86Bluetooth`
`Fn+F11` | Yes | Yes | `XF86Keyboard`
`Fn+F12` | Yes | Yes | `XF86Favorites`
`Fn+PrtSc` | Yes | No | `XF86Launch2`
`Fn+B` | Yes | No | `Break`
`Fn+K` | Yes | No | `Scroll_Lock`
`Fn+P` | Yes | No | `Pause`
`Fn+S` | Yes | No | `Sys_Req`
`Fn+LeftArrow` | Yes | No | `Home`
`Fn+RightArrow` | Yes | No | `End`
`Fn+4` | Yes | No | `XF86Sleep`
`Fn+Spc` | No | Yes | Toggles Keyboard Backlight

## ThinkPad Dock

The ThinkPad dock shows up through the thinkpad_acpi driver.

### Docked Audio Configuration

Starting this device when connected to the dock seems to load the sound driver for the dock before the driver for the internal audio. The dock driver uses snd_usb_audio while the internal audio uses snd_hda_intel. If it is desired to have the internal audio to show up as card zero the following can be setup as a quick workaround which reserves the first card slot for when the other driver loads.

    /etc/modprobe.d/alsa-base.conf

    options snd slots=!snd_usb_audio

More detail for alternate configuration can be inspired from Advanced_Linux_Sound_Architecture#Card_index.

## See also

- Laptop
- Laptop/Lenovo#Special buttons
- Lenovo ThinkPad X1 Carbon (Gen 6)#Power management/Throttling
- Lenovo ThinkPad T480s#Thermal throttling

Category:

- Lenovo

Lenovo ThinkPad T480
Add topic