Lenovo ThinkPad X1 Extreme
Device | Status | Modules |
Intel UHD 630 Graphics | Working | i965 |
Nvidia GTX 1050 Ti (Max-Q) | Working | nvidia |
Intel I219-V Ethernet | Working | e1000e |
Intel 9560 wireless | Working | iwlwifi |
Realtek ALC285 audio | Working | snd_hda_intel |
Synaptics touchpad | Working | synaptics + libinput |
SunplusIT camera | Working | uvcvideo |
Card reader | Working | xhci_hcd |
Intel 9560 Bluetooth | Working | btusb |
Intel JHL7540 Thunderbolt | Working | thunderbolt |
Synaptics fingerprint reader | Experimental | Requires experimental python-validity driver |
The ThinkPad X1 Extreme is a thin-and-light 15.6" workstation/multimedia laptop from Lenovo's 2018 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. The Ubuntu certification page may also be useful.
Hardware compatibility
Firmware update
Despite not being strictly required for an Arch Linux install, a UEFI firmware update is strongly recommended for general use of the laptop - the initial 1.13 version devices seem to ship with contains multiple bugs that can result in bricking the laptop: Reddit thread discussing the issue; another Reddit thread discussing a different bricking issue.
Firmware updates are available via fwupd, the Lenovo Vantage application on Windows, or from Lenovo's website.
The latest version, v1.31, is highly recommended. All information on this page generally assumes the latest firmware unless explicitly stated.
Hybrid graphics
Hybrid graphics can be configured in multiple ways, as described below.
Both the HDMI port and DisplayPort outputs created when using either a USB-C adapter or Thunderbolt dock are wired to the Nvidia dGPU.
A BIOS setting can be used to disable the integrated GPU, and run everything on the dedicated Nvidia card. The dedicated GPU cannot be disabled through firmware, so enabling runtime power management in some form is highly recommended when using the iGPU.
PRIME offloading
The nvidia-prime package works out of the box, with no additional configuration required.
optimus-manager
optimus-managerAUR provides a way to easily switch the active GPU for the entire system, and supports runtime power management for disabling the dedicated GPU when not in use.
optimus-manager
does not enable runtime power management. To enable it explicitly, install bbswitch and adjust the configuration to:
/etc/optimus-manager/optimus-manager.conf
[optimus] switching=bbswitch
Bumblebee
The following configuration has been found to work well:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "intelgpu0" Driver "intel" EndSection
/etc/bumblebee/xorg.conf.nvidia
Section "ServerLayout" Identifier "Layout0" Option "AutoAddDevices" "true" Option "AutoAddGPU" "false" EndSection Section "Device" Identifier "DiscreteNvidia" Driver "nvidia" VendorName "NVIDIA Corporation" Option "ProbeAllGpus" "false" Option "AllowEmptyInitialConfiguration" EndSection Section "Screen" Identifier "Screen0" Device "DiscreteNVidia" EndSection
External displays can be used via intel-virtual-output
. See Bumblebee#Output wired to the NVIDIA chip for details.
Using the dedicated GPU exclusively
The default configuration produced by nvidia-xconfig
is fully functional, including HDMI output.
Thunderbolt
Thunderbolt works out of the box (tested with ThinkPad Thunderbolt 3 Dock); see Thunderbolt for details on security.
Fan control
Support for controlling the second (right side) fan is implemented in Linux 5.8. For older kernels, the linked change can be applied on top of the stable 5.7 kernel branch.
Fingerprint scanner
The laptop uses an older Synaptics (a.k.a. Validity Technologies) sensor, USB ID 06cb:009a.
A reverse engineering effort is ongoing here, and an experimental driver is available on the AUR as python-validityAUR.
Upstream libfprint bug is tracked here.
Other hardware
The touchpad experience on pre-5.8 kernels can be greatly improved by enabling "intertouch" as hinted by kernel messages. This can be done by either adding psmouse.synaptics_intertouch=1
to the kernel command line or by creating a modprobe entry like:
/etc/modprobe.d/psmouse.conf
options psmouse synaptics_intertouch=1
This setting is enabled by default in kernel 5.8.
The webcam works out of the box, though it reports a completely black image instead of the "disconnected" placeholder when the protective slider is closed.
Everything else works correctly out of the box.
Software tweaks
Dolby Atmos Effect on Linux
In order to get the same speaker sound quality/effect as on Dolby Atmos with Windows install & configure PulseAudio and pulseeffects. You can then download the Dolby Atmos preset from JackHack96's Github and enable it in the "Convolver" tab of the PulseEffects GUI.
Microphone noise reduction
PulseAudio's Echo/Noise-Cancellation can be used to reduce the amount of microphone noise by adding the following to /etc/pulse/default.pa
:
/etc/pulse/default.pa
### Enable Echo/Noise-Cancellation load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args="beamforming=1 mic_geometry=-0.0257,0,0,0.0257,0,0" source_name=echoCancel_source sink_name=echoCancel_sink set-default-source echoCancel_source set-default-sink echoCancel_sink
The above mic_geometry is specific to the X1 Extreme.
Battery charge thresholds
Battery charging thresholds can be configured via sysfs nodes /sys/class/power_supply/BAT0/charge_start_threshold
and /sys/class/power_supply/BAT0/charge_stop_threshold
, or using TLP.
CPU thermal limits
A stress test using s-tui indicates that the CPU is limited to 38W/80C at boot, resulting in maximum sustained frequency of around 2850 MHz on i7-8750H under heavy loads. Starting with kernel 5.8 and thermald 2.3, the power limits should be adjusted to correct values when thermald
is installed and enabled.
Users of older kernel versions may choose one of the following workarounds.
via sysfs
Starting with version 5.4, the Linux kernel exposes multiple interfaces to configure the thermal policy of the CPU. There are two major knobs to be tweaked: the DPTF policy, which controls the throttling behavior, and the TCC offset, which controls the maximum allowed package temperature. Those can be configured to match Windows using a script like this one:
#!/bin/bash # set DPTF policy to "adaptive performance" echo "63BE270F-1C11-48FD-A6F7-3AF253FF3E2D" > /sys/devices/platform/INT3400:00/uuids/current_uuid # enable INT3400 thermal zone for zone in /sys/class/thermal/thermal_zone*; do if [ "$(cat $zone/type)" == "INT3400 Thermal" ]; then echo enabled > $zone/mode fi done # set TCC offset to 5 degrees (Tmax = 95C) echo 5 > /sys/devices/pci0000:00/0000:00:04.0/tcc_offset_degree_celsius
via third party tools
throttled and intel-undervolt
(see below) can be used to override both thermal and power limits. However, the approach used by those tools is less reliable.
CPU undervolting
Undervolting the CPU/Intel GPU works well with intel-undervolt. Generally -150mV seems to be a safe choice on the i7-8750H and i7-8850H CPUs, but your mileage may vary.
The effects of undervolting on system stability will vary depending on individual hardware (a.k.a. "the silicon lottery").
TLP
Enabling runtime power management for PCI(e) bus devices can save about 6W (by turning the Nvidia GPU off(?)).
TLP enables this by default on battery, but not on AC.
To enable on AC while using TLP, modify /etc/tlp.conf
:
/etc/tlp.conf
RUNTIME_PM_ON_AC=auto
Restart TLP with sudo systemctl restart tlp.service
for changes to take effect.
This change can make the laptop significantly cooler while on AC.
Specifications
All information on this page has been tested on laptop part number 20MF000BUS and 20MFCTO1WW, with the following specifications:
- CPU: Intel Core i7-8750H / i7-8850H
- Graphics: Hybrid Intel UHD 630 + Nvidia GTX 1050 Ti Max-Q
- Display: Innolux N156HCE-EN1 1920x1080/60Hz IPS (other vendors may be used)
- RAM: 16GB / 32GB
- SSD: Intel 7600p series 512GB NVMe / Samsung 970 Pro 1TB NVMe