Lenovo ThinkPad X1 Carbon (Gen 7)

From ArchWiki
Jump to navigation Jump to search
Tip: A great resource for thinkpads is https://www.thinkwiki.org/wiki/ThinkWiki

The Lenovo ThinkPad X1 Carbon, 7th generation is an ultrabook introduced in early 2019. It features a 14" screen, 8th-gen or 10th-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 7th
Device Working Modules
Intel graphics Yes i915, (intel_agp)
Wireless network Yes iwlmvm
Native Ethernet with dongle Yes ?
Mobile broadband Fibocom Yes¹ ?
Audio Yes snd_hda_intel
Microphone Yes⁴ snd_sof
Touchpad Yes psmouse, rmi_smbus, i2c_i801
TrackPoint Yes psmouse, rmi_smbus, i2c_i801
Camera Yes uvcvideo
Fingerprint reader Yes² ?
Power management Yes³ ?
Bluetooth Yes btusb
Keyboard backlight Yes thinkpad_acpi
Function/Multimedia keys Yes ?
  1. The Fibocom LTE module has Linux support once switched to USB mode; see [1] and [2]
  2. An official driver has been released on fwupd.
  3. S3 suspend requires changes to BIOS settings, see section on #Sleep/Suspend.
  4. The internal microphone doesn't work on versions of the linux kernel before 5.3. On version 5.3 and newer the SOF firmware can be enabled, see Talk#Microphone.

BIOS

Warning: There are reports that enrolling custom Secure Boot keys may brick this machine because of firmware bugs.

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

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 possibly other firmware such as the Thunderbolt controller) can be queried for and installed through fwupd.

Manual (fwupdmgr)

Lenovo may in the future provide cabinet files that can be directly installed with fwupdmgr. Check for Linux .cab files from the Lenovo ThinkPad X1 Carbon (Gen 7) driver website.

  1. Make sure the AC adapter is firmly connected to the target computer.
  2. Launch Terminal.
  3. Move to the directory where the cabinet file was placed.
  4. Run fwupdmgr install xxxxxxxx.cab to schedule firmware update.
  5. Restart the system.
  6. The computer will be restarted and the UEFI BIOS will be updated.

Sleep/Suspend

The BIOS has two "Sleep State" options, Windows and Linux, which you can find in at Config -> Power -> Sleep State. The Linux option is the traditional S3 power state where all hardware components are turned off except for the RAM, and it should work normally. The Windows option is a newer software-based "modern standby" which works on Linux (despite the name). One possible benefit to the Windows sleep state is faster wake up time, and one possible drawback is increased power usage.

S3 Suspend Bug with Bluetooth Devices

Occasionally your Thinkpad will wake up immediately after suspending with certain bluetooth devices added. To prevent this, remove the devices or disable bluetooth before suspending.

BIOS configurations

  • 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.
Tip: You may need to disable Kernel DMA protection in Security -> Virtualization -> Kernel DMA Protection - Set to "Disabled"

Firmware issues

The following issues can all be resolved by upgrading the firmware with fwupdmgr (see #BIOS Updates), but there may be alternative manual/temporary fixes.

Touchpad issues

Due to a bug in a touchpad firmware, the touchpad might not work with following logs in dmesg:

[    4.499490] i2c_designware i2c_designware.1: i2c_dw_handle_tx_abort: lost arbitration
[...]
[   12.668795] i2c_hid i2c-SYNA8005:00: failed to set a report to device.
[   13.678765] i2c_designware i2c_designware.1: controller timed out

Freeze when suspending

There are reports of the system freezing after initiating a suspend or hibernate. A temporary fix is to add snd_hda_intel.dmic_detect=0 to your kernel parameters. see [3]

Power management/Throttling issues

A bug causes the CPU to consume less power than under Windows and throttle at 80°C instead of 97°.

Lenovo has confirmed the issue, explained the cause and published updates for the embedded controller and the BIOS to LVFS .

The alternative fix is to install throttled, then run

sudo systemctl enable --now lenovo_fix.service

Audio

Note: The 4-channel audio and microphone work out-of-the-box as of 5.6.7-arch1-1 using SOF Firmware and the latest git version of PulseAudio (version 13.99, soon-to-be released as 14). You can install that version using pulseaudio-gitAUR). For the released version of PulseAudio (13 and older), please use the indications below.


To get it working with PulseAudio 13 and older, follow those steps:

1. Install sof-firmware (tested with 1.4.2-1)

2. Configure PulseAudio's to load Alsa modules with the correct device and channel settings, by adding these two lines to /etc/pulse/default.pa:

load-module module-alsa-sink device=hw:0,0 channels=4
load-module module-alsa-source device=hw:0,6 channels=4

Note that Alsa card numbers can change when adding more audio devices (like, connecting a USB headset or a docking station). To ensure that index '0' always maps to internal audio, add snd slots=snd_soc_skl_hda_dsp to your module loading options.

3. Reboot, then use alsamixer to increase the "master" channel level of the sof-hda-dsp sound card (use the <F6> key to switch cards). If you do not see sof-hda-dsp in alsamixer, you may need to add blacklist snd_hda_intel and blacklist snd_soc_skl to /etc/modprobe.d/blacklist.conf and reboot again.

4. If the output sounds tinny, try muting the "speaker" item in alsamixer.

Fingerprint sensor

An official Lenovo firmware with Linux support is available from fwupd. After installing fwupd, you can update the Synaptics Prometheus driver for the fingerprint sensor:

# fwupdmgr refresh
# fwupdmgr get-updates
   Prometheus Fingerprint Reader Device Update:
   New version:       10.01.3158804
   New features and enhancements:   Support Linux system
# fwupdmgr update

To use the fingerprint sensor, follow the instructions from Fprint.

If you had previously installed the testing version of this driver from lvfs-testing, there should be no issues updating to this driver version from the main repository.

You can temporarily disable the red LED in the ThinkPad logo on the cover:

1. Enable writing to the embedded controller registers by adding the kernel parameter ec_sys.write_support=1. If you use UEFI boot, you can add this parameter in /boot/efi/loader/entries/arch.conf under "options".

2. Disable the LED with this command:

# echo -n -e "\x0a" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null

This would need to be run after each suspend/reboot to be permanent.

Additional resources