Lenovo ThinkPad X1 Carbon (Gen 6)

This article or section does not follow the
Laptop page guidelines
.
Reason:
Hardware table needs IDs and sections needs some cleanup (Discuss in
Talk:Lenovo ThinkPad X1 Carbon (Gen 6)
)
Hardware
PCI/USB ID
Working?
GPU
8086:5917
Yes
Wi-Fi
8086:24fd
Yes
Ethernet
8086:15d7
Yes
Mobile broadband
Yes
Audio
8086:9d71
Yes
Touchpad
Yes
TrackPoint
Yes
Webcam
13d3:56b2
Yes
Fingerprint Reader
06cb:009a
Yes
Bluetooth
8087:0a2b
Yes
NFC
No
microSD card reader
0bda:0328
Yes
Thunderbolt
Yes
The Lenovo ThinkPad X1 Carbon, 6th generation is an ultrabook introduced in early 2018. It comes in several variants(
20KH*
and
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
dmidecode
and run:
# dmidecode -s system-version
ThinkPad X1 Carbon 6th
Firmware
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.
In case your
efivars
are not properly set it is most likely due to you not being booted into
UEFI
. Should the problem persist be sure to consult the
UEFI#UEFI variables
section.
Updates
Note
In the BIOS setup menu under
Security -> UEFI BIOS Update Option
, both
Flash BIOS Updating by End-Users
and
Windows UEFI Firmware Update
must be enabled
at the time of an update.
Automatic (Linux Vendor Firmware Service)
In August of 2018 Lenovo has joined
the
Linux Vendor Firmware Service(LVFS)
project, which enables firmware updates from within the OS.
BIOS updates (and other firmware such as the Thunderbolt controller) can be queried for and installed through
fwupd
.
Manual (fwupdmgr)
Lenovo provides a cabinet file that can be directly installed with fwupdmgr.
Take the most recent
.cab
file from the
Lenovo ThinkPad X1 Carbon (Gen 6) driver website
.
Make sure the AC adapter is firmly connected to the target computer.
Launch Terminal.
Move to the directory where the cabinet file was placed.
Run
fwupdmgr install xxxxxxxx.cab
to schedule firmware update.
Restart the system.
The computer will be restarted and the UEFI BIOS will be updated.
Manual (El Torito)
Download the
latest BIOS update ISO
. Obtain
geteltorito
AUR
and run
geteltorito.pl -o bios-update.img n23ur12w.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. This only needs to be done once, as subsequent UEFI upgrades will ask whether you wish to keep your custom logo.
Once the USB drive is flashed, the logo file can be placed in to the root directory of the flash drive.
Fingerprint reader
The
python-validity
AUR
driver allows to use the fingerprint reader as usual using
fprint
.
Bluetooth
See
Wireless network configuration#Bluetooth coexistence
for improvements to reliability.
IR Camera
See
Howdy
for logging in with the IR camera. The
frame_width
and
frame_height
must be set to
400
for the IR emitters to turn on.
NFC
Connected via I2C, support was discussed in the
libnfc project
.
Battery Stats and Charge Limit
Install
the
tlp
package and show battery stats from command line:
# tlp-stat -b
Note
cycle_count
will show
unsupported
for a brand new battery until it has completed at least 1 full discharge/charge cycle.
To prolong battery lifetime, you can limit battery charging to a maximum of 80% and start charging only if SoC (state of charge) is below 79%:
# tpacpi-bat -s ST 1 79 # Start charging if battery below 79%
# tpacpi-bat -s SP 1 80 # Stop charging if battery above 80%
# tpacpi-bat -s IC 1 0 # Disable charging entirely
For making the changes permanent, you can edit
/etc/tlp.conf
. Please refer to the
TLP
article for more information and GUI tools.
Suspend
Since BIOS version 1.30, the X1 Carbon supports S3 mode when enabled in the BIOS menu (choose "Linux" sleep mode instead of the default "Windows 10"). See
#Automatic (Linux Vendor Firmware Service)
for instructions to update and verify your BIOS version.
Enabling S3
To enable S3 support, make sure you have at least BIOS version 1.30 installed. Then, go into the BIOS configuration, and
Config > Power > Sleep State
and set it to
Linux
. This should make S3 available.
Reboot and verify whether deep sleep is available, as explained in
Power management/Suspend and hibernate#Changing suspend method
.
S3 Suspend Bug with Bluetooth Devices
Occasionally your Thinkpad will wake up immediately or a few seconds after suspending with certain
Bluetooth
devices added. To prevent this, remove the devices or disable
Bluetooth
before suspending.
Disabling the memory card reader
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
# printf 2-3 > /sys/bus/usb/drivers/usb/unbind
BIOS configurations
In
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.
Suspend fails
If the machine starts entering suspend but comes back online immediately when anything is plugged through USB-C, showing the following errors:
# journalctl -p err -u systemd-suspend
Failed to suspend system. System resumed again: Device or resource busy
# dmesg -Tl err
[Mon Nov 11 20:18:03 2019] PM: pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 returns -16
[Mon Nov 11 20:18:03 2019] PM: dpm_run_callback(): pci_pm_suspend+0x0/0x130 returns -16
[Mon Nov 11 20:18:03 2019] PM: Device 0000:00:14.0 failed to suspend async: error -16
[Mon Nov 11 20:18:04 2019] PM: Some devices failed to suspend, or early wake event detected
Block USB devices from waking up the computer.
Check that
grep XHC /proc/acpi/wakeup
shows
enabled
. If yes, disable XHC wakeup with:
# echo XHC > /proc/acpi/wakeup
One you have verified this fixes the issue,
create
the following systemd unit file and
enable
the service.
[Unit]
Description=Fixes failing suspend by disabling wakeup through USB

[Service]
ExecStart=/bin/bash -c 'grep --silent '^XHC.*disabled' /proc/acpi/wakeup || echo XHC > /proc/acpi/wakeup'
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Power management/Throttling
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.
Using thermald
A fix has reportedly been applied in
thermald
2.4.3 according to
this long running discussion
. The aforementioned thread also contains links to the patch which was developed by Lenovo.
As of
thermald
2.4.3 and Linux 5.12 it
appears
to be enough to just use thermald with no further workarounds.
Using throttled
Alternatively, a package has been written to address the problem until Lenovo completes the
OS agnostic fix
for the X1C6.
Install
throttled
, then
start/enable
throttled.service
The script also supports more advance thermal/performance features including CPU undervolting. See the
repository
README.md
for details.
Note
If you installed
thermald
, it may conflict with the throttling fix in this package. Consider disabling it.
Audio
Microphone distorted due to automatic adjustment
If your microphone volume creeps up automatically and causes the sound to be distorted, you can fix it by disabling mic boost.
See
Pulse Audio
for details.
Built-in speakers low volume
If your ThinkPad X1 Carbon (Gen 6) built-in speakers are limited to a maximum of about 20% volume even though the volume is set at 100%, try adding the following parameter to the
snd_hda_intel
module, which can be set through a file in
/etc/modprobe.d/
, e.g.:
/etc/modprobe.d/alsa-base.conf
options snd-hda-intel model=nofixup
Note
This stops the LEDs on the mute and mic-mute buttons from working.
Mobile broadband
ThinkPad X1 Carbon (Gen 6) is exclusively shipped with a Fibocom L850-GL LTE WWAN modem, which is currently not supported out of the box under Linux.
It is normally impossible to swap the LTE modem for a supported one due to BIOS-level restrictions ("whitelists" of allowed M.2 expansion cards) implemented in all modern Lenovo laptops. However, a method has been found to configure any Sierra Wireless EM73xx/EM74xx modem to "evade" the whitelist checks, so these modems can be used normally.
Take a look at
ThinkPad mobile internet: Getting around BIOS-level whitelist restrictions
for instructions.
See also the work done in
github: Tools for the Fibocom L850-GL / Intel XMM7360 LTE modem
,
github: Kernel module for Fibocom L850-GL / Intel XMM7360 LTE modem
and
Lenovo Forums: WWAN Fibocom L850-GL and Linux support
.
See also
MBIM-Switch
and
kernel-module
.
WWAN / LTE GUI
Install
NetworkManager
and
network-manager-applet
to make your life easier founding the correct APN for your SIM card.
Function keys
Fn+4
sends
XF86Sleep
(puts computer to sleep by default)
Fn+S
sends
Alt_L+Sys_Req
Fn+P
sends
Pause
Fn+B
sends
Control_L+Break
Fn+K
sends
Scroll_Lock
Fn+Space
toggles the keyboard backlight
The function key by itself sends
XF86WakeUp
(wakes computer from sleep by default)
Special buttons
See
Laptop/Lenovo#Special buttons
.
Disabling red LED in ThinkPad logo
To disable the red LED in the ThinkPad logo on the cover:
Enable writing to the embedded controller registers by adding the
kernel parameter
ec_sys.write_support=1
.
Then, you can disable directly the LED with this command:
# printf '\x0a' | dd of=/sys/kernel/debug/ec/ec0/io bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
To disable the LED at startup, you can create a systemd service:
/etc/systemd/system/led.service
Description=Disabling ThinkPad LED

[Service]
ExecStart=sh -c "printf '\x0a' | dd of=/sys/kernel/debug/ec/ec0/io bs=1 seek=12 count=1 conv=notrunc 2> /dev/null"

[Install]
WantedBy=multi-user.target
Enable/start
led.service
Graphics
Intel GPU firmware
On Wayland
enabling GuC/HuC firmware loading
can cause issues with the GPU hanging. These issues can be reflected by various crashes or freezes of graphical processes.
In
dmesg
the following can be observed:
kernel: [drm] GPU HANG: ecode 9:0:0x85dffffd, in chrome [18418], reason: hang on rcs0, action: reset
kernel: [drm] GPU hangs can indicate a bug anywhere in the entire gfx stack, including userspace.
kernel: [drm] Please file a _new_ bug report on bugs.freedesktop.org against DRI -> DRM/Intel
kernel: [drm] drm/i915 developers can then reassign to the right component if it's not a kernel issue.
kernel: [drm] The gpu crash dump is required to analyze gpu hangs, so please always attach it.
kernel: [drm] GPU crash dump saved to /sys/class/drm/card0/error
kernel: i915 0000:00:02.0: Resetting rcs0 for hang on rcs0
Do not enable GuC / HuC firmware loading, at least on Wayland. See
https://bugs.freedesktop.org/show_bug.cgi?id=108717
.
Screen tearing
See
Intel graphics#Tearing
.
HDR display color calibration
For models with the 1440p HDR display, the default color profile can be corrected under Gnome using an ICC calibration provided by
notebookcheck.net's review
.
$ wget https://www.notebookcheck.net/uploads/tx_nbc2/B140QAN02_0.icm
$ colormgr import-profile B140QAN02_0.icm
This will import the ICC profile, and next you will need to activate it for your display. Find your display's object path:
$ colormgr get-devices | sed -rn 's/Object Path:\s*(.*eDP1.*)/\1/p'
And your new color profile object path:
$ colormgr get-profiles | grep -4 -i B140QAN02
And finally activate the profile and set it as the default for this display:
$ colormgr device-add-profile <device object id> <profile object id>
$ colormgr device-make-profile-default <device object id> <profile object id>
You can verify the profile is active by running
colormgr get-devices
.
TrackPoint and Touchpad issues
Some models of the 6th generation X1 Carbon seem to have issues with the TrackPoint and Touchpad working at the same time.
To get the TrackPoint and Touchpad to work at the same time, add
synaptics_intertouch=1
to the
psmouse
kernel module
options:
/etc/modprobe.d/psmouse.conf
options psmouse synaptics_intertouch=1
When using
TLP
with default power saving settings, there might be occasional hiccups such as dropouts of tap-to-click functionality for the Touchpad, as well as the TrackPoint not surviving suspends and needing to be re-initialized.
Reconnecting a dead trackpad can be done via the following command:
# printf none > /sys/bus/serio/devices/serio1/drvctl
# printf reconnect > /sys/bus/serio/devices/serio1/drvctl
Thunderbolt dock
Plugable USB-C Mini Docking Station with 85W Power Delivery UD-CAM
If you are using an external plugable
UD-CAM
thunderbolt dock connected to the laptop through its USB-C thunderbolt port, you might experience random disconnections (external monitor, bluetooth and ethernet) with this kind of error in
dmesg
:
pcieport 0000:05:00.0: BAR 13: no space for [io  size 0x3000]
It should be noted that
bolt
is not working with this
UD-CAM
dock.
To avoid random disconnection, proceed as followed by editing the bios and
TLP
Bios settings
You should then look at your bios settings :
Wake by thunderbolt : enable
Security level : no security
Pre-boot ACL option : enable
TLP blacklisting devices from USB autosuspend
If you are using
TLP
you have to edit
/etc/tlp.conf
and make sure that you exclude all dock devices from USB autosuspend as follow:
USB_DENYLIST=="0000:1111 2222:3333 4444:5555"
Then reboot and your dock should work correctly.
Lenovo dock
Some problems can be caused by outdated dock firmware. Updates are not supplied by LVFS, use "Firmware for Windows" from the dock support page.
DisplayLink
If you want to continue using the
Intel graphics
for your primary and HDMI displays, change its config file numerical prefix so that it precedes the
DisplayLink
configuration. For example, rather than naming it
/etc/X11/xorg.conf.d/20-intel.conf
instead name it
/usr/share/X11/xorg.conf.d/19-intel.conf
.
Full-disk encryption
OPAL: Hardware based full-disk encryption
See
Self-encrypting drives
(Confirmed working)
NVMe disk failure
There is an
issue
with the NVMe disk installed in ThinkPad X1 Carbon (Gen 6) resulting in device failure. Be sure to update firmware or reach out to Lenovo support for replacement.
See also
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
https://www.thinkwiki.org/wiki/ThinkWiki
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 the
Intel graphics
page for interesting power-saving options.
Dell XPS 13 (9360)
: Shares some hardware with the X1C6
Intel Blog: Best practice to debug Linux* suspend/hibernate issues
[
dead link
2023-09-16—HTTP 404]
, including the
pm-graph
tool to analyze power usage during suspend
A comprehensive example Arch install for the X1C6