Lenovo ThinkPad X1 Extreme (Gen 2) - ArchWiki

# Lenovo ThinkPad X1 Extreme (Gen 2)

From ArchWiki
Jump to navigation Jump to search

Related articles

- Laptop/Lenovo
- Lenovo ThinkPad X1 Extreme

Device | Status | Modules
Intel UHD 630 Graphics | Working | i915
NVIDIA GeForce GTX 1650 | Working | nvidia
Intel AX200 Wifi | Working | iwlwifi
Intel HDA | Working | snd_hda_intel
Synaptics touchpad | Working | libinput
Chicony Electronics | Working | uvcvideo
Card reader | Working | xhci_hcd
Intel AX200 Bluetooth | Working | btusb
Intel Thunderbolt | Working | thunderbolt
Synaptics fingerprint reader | Initial Support Complete |

The Thinkpad X1E Gen 2 is a thin-and-light 15.6" workstation/multimedia laptop from Lenovo's 2019 ThinkPad X lineup.

This page specifically concerns the specifics of running Arch Linux on this laptop. See Laptop for generic laptop-related information, or ThinkPad for other ThinkPad laptops.

## Hardware

### Thunderbolt 3

To use Thunderbolt 3, ensure you are on the latest BIOS firmware (doing the following steps on older BIOSes may brick your device):

1. Go into BIOS

2. Enable BIOS Assist mode: (Thunderbolt 3 -> Enable BIOS assist mode) *Ensure you're on the latest BIOS!*

### Battery

#### Invalid stats workaround

As of writing, a bug exists where the battery data can appear corrupt, wildly incorrect, or seem to change drastically from boot to boot. To workaround this bug you should add battery to the `/etc/mkinitcpio.conf`.

    MODULES=(battery)

Remember to regenerate the initramfs for these changes to take effect.

Note: You can also build the battery module into your kernel.

#### Battery life and graphics

bbswitch does not work on this laptop to disable the NVIDIA card when not in use. To disable the NVIDIA card you can run:

    # tee /sys/bus/pci/devices/0000\:01\:00.1/remove <<<1
    # tee /sys/bus/pci/devices/0000\:01\:00.0/remove <<<1

Note: It may be much easier to just use optimus manager with the necessary power options described in #Graphics

### Graphics

#### Nouveau

Currently (5.2.9-arch1), the Nouveau driver can cause quite a lot of kernel panics when using the webcamera. You should blacklist this driver to prevent it from being loaded.

#### NVIDIA

##### Prime features

The NVIDIA driver now supports PRIME Offloading. Following this guide you can try out this new mode.

##### Power Management

To get the best power options the graphics card may be configured to use low power mode by following the guide here

##### Optimus manager

Currently, one of the easiest solutions for this laptop is to use optimus-manager with the hybrid backend. This requires the most up to date nvidia and xorg-server packages.

This allows easy switching between the PRIME offloading feature above, and a mode where external display ports (HDMI and USB-C) work.

Steps to setup after a fresh install:

- install nvidia proprietary driver 'prime', not bumblebee.
- reboot
- install optimus-managerAUR
- reboot
- `optimus-manager --switch nvidia` # this will restart your X session, but not make the change persistent
- `lspci -k | grep -A 2 -E "(VGA|3D)"` should say: Kernel driver in use: nvidia
- `xrandr` should list HDMI output - try to configure screen, should work
- `nvidia-settings` should work
- `optimus-manager --set-startup nvidia` makes it persistent
- check: reboot, external display should still work

### OLED Display

#### Brightness control

OLED screens have no backlight, brightness cannot be controlled by changing backlight power in the traditional way. Instead, it can be controlled using PWM by enabling following option:

    echo "options i915 enable_dpcd_backlight=1" >> /etc/modprobe.d/i915.conf

Alternatively, you can add a kernel parameter. For example, if you are using GRUB, edit /etc/default/grub with

    GRUB_CMDLINE_LINUX_DEFAULT="i915.enable_dpcd_backlight=1"

Don't forget to update the grub configuration to apply the changes.

Brightness control is not yet supported by standard tools. You can try this one https://github.com/deimosfr/oled_backlight

### Audio

#### Audio pop on shutdown and startup

To work around the loud audio artifacts on startup/shutdown follow the guide for enabling the audio powersave: Power management#Audio.

### Fingerprint

The 2.0 version of fprint supports this device after a firmware update.

To get fingerprint working right now:

Note: The Firmware for this is still in the testing phase at LVFS. Proceed with caution.

Install the following packages available on the AUR :

- libfprint-gitAUR
- fprintd-libfprint2AUR

And setup fwupd

The firmware updates currently require the newest version of fwupd and you must manually download the updates:

- https://fwupd.org/lvfs/devices/com.synaptics.prometheus.firmware
- https://fwupd.org/lvfs/devices/com.synaptics.prometheus.config

using the latest version of the fwupd tool you should be able to run:

    fwupdmgr get-devices

and see a "Prometheus" device in the list.

Install the firmware by running

    fwupdmgr install *.cab

on each downloaded .cab file

Note: At this point, a reboot may be required

You should then be able to enroll your fingerprints with Fprint#Configuration

Note: For some reason, the fprint.service can take some time to start. if fprint reports no devices, wait until fprint.service has completely stopped (it should become inactive in systemctl) To fix this, reset the fingerprint data in your bios settings

### Card reader

The optional card reader that the Lenovo can install in your laptop is a Alcor Micro AU9560. There are some tools you can use to test your card reader.

#### Installation

Install ccid and opensc from official repositories. Then, Start and enable `pcscd.socket`.

    systemctl enable pcscd
    systemctl start pcscd

#### Testing

First, verify that your card reader can be found by pcsc:

    opensc-tool --list-readers

Now, insert a smart card and run the following to verify that pcsc is able to read your card:

    pcsc_scan

### Webcam

The webcam in this laptop is capable of "Windows Hello" which has a Linux version called Howdy. The device you should use to configure howdy on this laptop is `/dev/video0`. It is possible that Howdy will only use the RGB camera, in this case some additional configuration and software is required. Follow this guide on installing chicony-ir-toggle and setting it up as a service. In this case try changing the video device to `/dev/video2` in the howdy config `sudo howdy config`, if everything has worked correctly when running `sudo howdy test` the IR Camera should have a very faint red light. This will indicate that the camera is functioning and Howdy is using the IR camera correctly.

### Keyboard

#### Backlight

If you would like to enable the keyboard backlight, run:

    echo 2 | tee /sys/class/leds/tpacpi::kbd_backlight/brightness

The "2" represents the brightness and can be any value between 0 and 2 (inclusive) for the laptop. For example, to turn off the keyboard backlight, you would run:

    echo 0 | tee /sys/class/leds/tpacpi::kbd_backlight/brightness

#### Skipping keystrokes

There is an issue with keystrokes being skipped at times (see the Lenovo forums). This is resolved with system firmware version 1.30. See Firmware to check your current version and upgrade.

### Touchpad

The touchpad works out-of-the-box with libinput. However, it will be very insensitive.

Make sure to not install xf86-input-synaptics - this driver is deprecated, lacks all features mentioned below, but is still installed by default with the xorg-drivers group.

You can check which input driver Xorg is using for your touchpad with:

    grep 'Using input driver' /var/log/Xorg.0.log | grep 'SynPS/2 Synaptics TouchPad'
    # Expected output: [   248.282] (II) Using input driver 'libinput' for 'SynPS/2 Synaptics TouchPad'

You can explicitly chose an input driver by placing an Xorg configuration snippet like the following in /etc/X11/xorg.conf.d/99-synaptics.conf:

    Section "InputClass"
           Identifier "touchpad catchall"
           MatchIsTouchpad "on"
           Driver "libinput"
    EndSection

#### Acceleration

You can adjust acceleration using the command:

    xinput set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Accel Speed' 0.5

#### Two-Finger Right Click

Additionally, if you wish to disable right-clicking so that you use two finger click as your right click, run:

    xinput set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Click Method Enabled' 0 1

#### Tap Clicking

If you would like for a tap on the touchpad to be registered as a click, use:

    xinput set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Tapping Enabled' 1

### WiFi

If your WiFi card is occasionally not detected after reboots, this may be related to a known bug that is related to windows fastboot. Workarounds are to completely shutdown the machine (no suspend or reboot), on next boot it works for me. Alternatives suggested are to first boot into windows, and/or disable windows fastboot in the bios.

References: [1] [2] [3]

## Firmware

BIOS and firmware updates are available via fwupd, the Lenovo Vantage application on Windows, or from Lenovo's website.

The latest BIOS version is highly recommended. All information on this page should assume the latest BIOS unless explicitly stated otherwise.

Note: To install Arch Linux you need to disable Secure Boot. If you cannot do so (e.g. because of `error: failed to save storage - write protected`), it may help to reset the BIOS to factory defaults (F9) and/or upgrade your BIOS.

### Check BIOS version

From Lenovo's firmware readme, to check the system's installed BIOS version:

    DETERMINING WHICH VERSION IS INSTALLED

     [Checking on ThinkPad Setup]

      1. Turn on the computer.
      2. While the "To interrupt normal startup, press Enter" message is displayed
         at the lower-left area or lower-center of the screen, press the F1 key.
         The ThinkPad Setup menu will be displayed. If a password prompt appears,
         type the correct password.
      3. Locate the UEFI BIOS Version line.
         "UEFI BIOS version (BIOS ID)" will be shown on the UEFI BIOS Version line.
      4. Turn off the computer.

Alternatively, use fwupdmgr from fwupd without rebooting:

    $ fwupdmgr get-devices

    ...
    ├─System Firmware:
    │     Current version:     0.1.30
    ...

### Upgrading BIOS

Download the zip file labelled "BIOS Update Utility (Linux)" from Lenovo's support website. Extract the zip file, then use fwupd to update the firmware:

     $ su
     # fwupdmgr install <filename>.cab

Then reboot immediately to finish the upgrade.

## Software

### Throttling fix

You will see a dmesg error that talks about CPU throttling.

There are a few ways to fix this. You should only use one of the following as they both attempt to undervolt.

#### Throttled

To fix this install throttled, then run

    systemctl enable --now lenovo_fix.service

#### CPU undervolting

Undervolting the CPU/Intel GPU works well with intel-undervolt.

Category:

- Lenovo