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:

# sudo 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 No⁴ snd_sof, snd_sof_intel_hda
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 and a reverse engineered driver are in the works [3] (06cb:00bd).
  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.

Hardware

Additional hardware information from lsusb and lspci can be found bellow when using the linux kernel 5.2.7:

lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 06cb:00bd Synaptics, Inc. 
Bus 001 Device 002: ID 04f2:b67c Chicony Electronics Co., Ltd 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lspci
00:00.0 Host bridge: Intel Corporation Device 3e34 (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (Whiskey Lake) (rev 02)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 0c)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Cannon Point-LP Thermal Controller (rev 11)
00:14.0 USB controller: Intel Corporation Cannon Point-LP USB 3.1 xHCI Controller (rev 11)
00:14.2 RAM memory: Intel Corporation Cannon Point-LP Shared SRAM (rev 11)
00:14.3 Network controller: Intel Corporation Cannon Point-LP CNVi [Wireless-AC] (rev 11)
00:15.0 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP Serial IO I2C Controller #0 (rev 11)
00:15.1 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP Serial IO I2C Controller #1 (rev 11)
00:16.0 Communication controller: Intel Corporation Cannon Point-LP MEI Controller #1 (rev 11)
00:1d.0 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #9 (rev f1)
00:1d.4 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #13 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Cannon Point-LP LPC Controller (rev 11)
00:1f.3 Audio device: Intel Corporation Cannon Point-LP High Definition Audio Controller (rev 11)
00:1f.4 SMBus: Intel Corporation Cannon Point-LP SMBus Controller (rev 11)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP SPI Controller (rev 11)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-V (rev 11)
03:00.0 Non-Volatile memory controller: Sandisk Corp WD Black 2018/PC SN720 NVMe SSD
05:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:01.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:02.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:04.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
07:00.0 System peripheral: Intel Corporation JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016] (rev 02)
2d:00.0 USB controller: Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] (rev 02)

BIOS

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.

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

The solution is to update touchpad firmware (version 1.3.3013412 works correctly).

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 (see #BIOS Updates).

throttled

If you are stuck on an earlier version of the firmware and BIOS (or do not want to upgrade), you can install throttled, then run

sudo systemctl enable --now lenovo_fix.service

Audio

As there are physically four loudspeakers, you need to configure to 4.0 audio output. When using PulseAudio there are various configuration utilities.

Volume controls

In order for volume controls to work correctly you must edit /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common by adding the following above [Element PCM]:

[Element Master]
switch = mute
volume = ignore

A PulseAudio restart is required for this change to take effect. Make sure to increase the "Master" channel volume to 100% for the top-firing speakers to work (using amixer or alsamixer, found in alsa-utils).

Persistent fix

Upgrading or reinstalling pulseaudio will overwrite this file, and PulseAudio doesn't appear to offer another way to make this configuration change. To prevent pacman from overwriting the file, add the following line under [options] in /etc/pacman.conf:

NoUpgrade = usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common

Microphone

On kernel up to 5.2, the internal microphones are detected but no audio is captured. Unfortunately even on the 5.3 kernels, the microphones still don't work out of the box.

You might be able to get the microphones working by following the instructions in this docx file from the Lenovo Forums. Also check out this post from the Arch Forums.

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