Lenovo ThinkPad X1 Carbon (Gen 6)
The Lenovo ThinkPad X1 Carbon, 6th generation is an ultrabook introduced in early 2018. It comes in several variants(
20KG*) and features a 14" screen, 8th-gen Intel Core processors and integrated Intel UHD 620 graphics.
To ensure you have this version, install the package and run:
# dmidecode -t system | grep Version Version: ThinkPad X1 Carbon 6th
|Intel graphics||Yes||i915, (intel_agp)|
|Native Ethernet with included dongle||Yes||?|
|Touchpad||Yes*||psmouse, rmi_smbus, i2c_i801|
|TrackPoint||Yes||psmouse, rmi_smbus, i2c_i801|
|microSD card reader||Yes||scsi_mod|
* via workaround
** progress being made on driver
The most convenient way to install Arch Linux is by disabling "Secure Boot"
Security -> Secure Boot - Set to "Disabled". However it is possible to self-sign your kernel and boot with it enabled. For further information have a look at the Secure Boot article.
BIOS update 1.25 was released on 2018-06-28. Obtain AUR and run
./geteltorito.pl -o bios-update.img n23ur08w.iso on the downloaded ISO file to create a valid El Torito image file, then flash this file on a USB drive via
dd like you would flash Arch installation media. For further information see flashing BIOS from Linux.
The ThinkPad X1 Carbon supports setting a custom splash image at the earliest boot stage(instead of the red "Lenovo" logo), more information can be found in the
README.TXT located in the
FLASH folder of the update image.
The 6th Generation X1 Carbon supports S0i3 (also known as Windows Modern Standby), but not S3 out of the box. Missing S3 also causes hybrid-suspend to go directly to hibernate. Thankfully, S3 can be enabled through an ACPI override.
You can verify S3 is not currently available by running the following command and making sure S3 is not listed in the supported modes.
dmesg | grep -i "acpi: (supports"
To add S3 support, there is an automatic patching script x1carbon2018s3, that was written with full instructions on both enabling S3 and verifying the patch worked. Follow the instructions in the repository and verify with the above command afterwards.
For example, for GRUB, one might edit `/etc/default/grub` and edit `GRUB_CMDLINE_LINUX_DEFAULT`:
and restart the system.
You might also need to disable the Realtek memory card reader (which appears to use a constant 2-3 W) either via the BIOS or via
echo "2-3" | sudo tee /sys/bus/usb/drivers/usb/unbind
The power consumption might still be higher than that of the S3 state in this case.
Config -> Thunderbolt BIOS Assist Mode - Set to "Enabled". When disabled, on Linux, power usage appears to be significantly higher because of a substantial number of CPU wakeups during s2idle.
Power management/Throttling issues
Due to wrong configured power management registers the CPU may consume a lot less power than under windows and the thermal throttling occurs at 80°C (97°C when using Windows, see T480s throttling bug).
There is a post in the official Lenovo forum to inform Lenovo about this issue.
Until Lenovo fixes this issue, you can manually set the limit.
To begin, install.
Create the file
/usr/local/bin/cpu-throttling.sh (making it executable) containing the following:
#!/bin/bash /bin/modprobe msr wrmsr -a 0x1a2 0x3000000 # which sets the offset to 3 C, so the new trip point is 97 C
Then create the associated service file
[Unit] Description=set cpu heating limit to 97°c [Service] ExecStart=/usr/local/bin/cpu-throttling.sh RemainAfterExit=no [Install] WantedBy=timers.target
And also the timer in
[Unit] Description=set cpu heating limit to 97°c every minute [Timer] OnActiveSec=60 OnUnitActiveSec=60 Unit=cpu-throttling.service [Install] WantedBy=timers.target
Then, enable it:
# systemctl enable cpu-throttling.timer
Reboot and check with:
# rdmsr -f 29:24 -d 0x1a2 3
TrackPoint and Touchpad issues
[...] root=/dev/sda1 rw psmouse.synaptics_intertouch=1 [...]
or by editing
options psmouse synaptics_intertouch=1
Reconnecting a dead trackpad can be done via
echo -n "none" | sudo tee /sys/bus/serio/devices/serio1/drvctl echo -n "reconnect" | sudo tee /sys/bus/serio/devices/serio1/drvctl
With LUKS for root, i915 needs to be loaded in ramdisk in order to access the password prompt.
Add i915 to MODULES list in
/etc/mkinitcpio.conf and regenerate the ramdisk.
- A good night's sleep for the Lenovo X1 Carbon Gen6: Patching ACPI DSDT tables to add S3 support
- Lenovo forums: Cannot enter deep sleep S3
- Thread: No deep sleep: Includes DSDT patching solution and further discussion
- T480s throttling bug, affects X1C6 as well
- Lenovo forums: T480s low cTDP and trip temperature in Linux
- Thread: TrackPoint/Touchpad issues, 20KG model
- StackExchange: Success with enabling RMI4 config flags for Touchpad and TrackPoint
- Kernel patch - Input: elantech - add support for SMBus devices
- Kernel patch - Input: synaptics - add Lenovo 80 series ids to SMBus
- Early KMS start: Adding i915 to ramdisk
- ThinkWiki X1 Carbon 6th Gen page
- Benjamin Tissoires, kernel maintainer of peripherals, has explained how input bugs get fixed in his talk Tools to debug a broken input device (Slides), especially interesting are slides 16 onward.
- Dell XPS 13 9370 quirks: Some pointers on getting Watt usage down to ~2W, Intel video powersaving features might be interesting, see also Intel Graphics Powersaving[broken link: invalid section]
- Dell XPS 13 (9360): Shares some hardware with the X1C6
- Intel Blog: Best practice to debug Linux* suspend/hibernate issues, including the pm-graph tool to analyze power usage during suspend