Lenovo ThinkPad T480

From ArchWiki

Tango-edit-clear.pngThis article or section does not follow the Laptop page guidelines.Tango-edit-clear.png

Reason: lspci/lsusb dumps do not belong into laptop pages (Discuss in Talk:Lenovo ThinkPad T480)
Device Status
Intel graphics Yes
Nvidia graphics Yes
Wireless Yes
ALSA Yes
TrackPoint Yes
Touchpad Yes
Webcam Yes
Bluetooth Yes
Mobile internet Yes¹
Fingerprint Sensor Yes²
  1. No working Linux driver for Fibocom L850-GL. See this thread and this thread for more info.
  2. Supported on Kernel 5.8.1 with libfprint-tod-git. See this Reddit thread for more info.

This article covers the installation and configuration of Arch Linux on a Lenovo T480 laptop. Everything seems to work pretty much out the box.

For a general overview of laptop-related articles and recommendations, see Laptop.

Hardware

Using kernel 4.16.8-1-ARCH

Version: ThinkPad T480
SKU Number: LENOVO_MT_20L5_BU_Think_FM_ThinkPad T480
Product Name: 20L5CTO1WW

lspci returns something like:

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 08)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1)
00:1c.6 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #7 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)
00:1d.2 PCI bridge: Intel Corporation Device 9d1a (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d4e (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (4) I219-V (rev 21)
03:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
3d:00.0 Non-Volatile memory controller: Lenovo Device 0003

lsusb returns something like:

Bus 002 Device 005: ID 0bda:0316 Realtek Semiconductor Corp. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 06cb:009a Synaptics, Inc. 
Bus 001 Device 003: ID 04f2:b604 Chicony Electronics Co., Ltd 
Bus 001 Device 002: ID 8087:0a2b Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

and for Product Name: 20L50007GE something like:

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bda:0316 Realtek Semiconductor Corp. 
Bus 001 Device 006: ID 06cb:009a Synaptics, Inc. 
Bus 001 Device 005: ID 13d3:56a6 IMC Networks 
Bus 001 Device 004: ID 8087:0a2b Intel Corp. 
Bus 001 Device 003: ID 2cb7:0210  
Bus 001 Device 002: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader

ID 2cb7:0210 is the 4G modem Fibocom L830-EB. Noted that devices come with 4G modem Fibocom L850-GL may not work.

Suspend / Hibernation

Suspend and Hibernation work out of the box. The T480 does not have the same issues as the X1 Carbon Gen 6

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 psmouse kernel module option synaptics_intertouch=1.

This can be done for example by editing /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 which is more than threefold increase. This boost greatly contributes to the Desktop environment scrolling performance and smoothness.

(evhz-gitAUR) may be of use to find out how frequently Touchpad reports events. For example after enabling said option:

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

Power management/Throttling issues

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. An 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, so there is hope the T480 will get the fix too.

An interim fix is throttled (Github).

Also see

UEFI/Firmware Updates

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.

UEFI and GRUB

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: This does not seem to be needed (verified on firmware 1.42) (Discuss in Talk:Lenovo ThinkPad T480)

Lenovo T480 is tied in with Microsoft and will only boot to Windows EFI file or default EFI fallback file. Verified on firmware version 1.14.

When GRUB is used, it is needed to rename the GRUB .efi to one of these specific file names. Please remember to repeat these steps (or use a pacman hook) when the GRUB package was updated.

1. Mount the device containing the /EFI directory.

 mount /dev/sdXY /mnt # replace XY with the letter & number of the Arch EFI system partition

2. Windows .efi file

 mkdir -p /mnt/EFI/Microsoft/Boot
 cp /mnt/EFI/grub/grubx64.efi /mnt/EFI/Microsoft/Boot/bootmgfw.efi

3. EFI fallback .efi file (as defined in the EFI standard.)

 mkdir -p /mnt/EFI/BOOT
 cp /mnt/EFI/grub/grub64.efi /mnt/EFI/BOOT/bootx64.efi

Source: https://www.rodsbooks.com/efi-bootloaders/installation.html#alternative-naming

Alternatively, systemd-boot can be used as a bootloader. systemd-boot already configures the EFI fallback file name as a default, so no further measures are required after installation.

Screen backlight

Without the intel driver (xf86-video-intel), neither xbacklight or xrandr brightness control are working.

However, the package acpilight provides a drop-in replacement for xbacklight. Apart from installing the package (which conflicts with xorg-xbacklight), you have to add your user to the video group and add the following udev rule:

/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 you to control the backlight with xbacklight command provided by acpilight, as well as control the various LEDs on your T480.

Encryption and keyboard

Assuming encrypted installation, during boot process you are prompted to enter password to decrypt disk. In some cases you may not be able to enter password, because at this time 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.

Special buttons

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: KEY_KEYBOARD is still not supported, but KEY_FAVORITES work out of the box, shows up as XF86Favorites in xev (as of 2022-02) (Discuss in Talk:Lenovo ThinkPad T480)

Some special buttons are not supported by X server due to keycode number limit.

Key combination Scancode Keycode
Fn+F11 0x49 374 KEY_KEYBOARD
Fn+F12 0x45 364 KEY_FAVORITES

You can remap unsupported keys using udev hwdb:

/etc/udev/hwdb.d/90-thinkpad-keyboard.hwdb
evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
 KEYBOARD_KEY_45=prog1
 KEYBOARD_KEY_49=prog2

Update hwdb after editing the rule.

# udevadm hwdb --update
# udevadm trigger --sysname-match="event*"

Their names will be "XF86Launch2" (KEY_KEYBOARD) and "XF86Launch1" (KEY_FAVORITES)