Lenovo ThinkPad X1 Carbon (Gen 9)

From ArchWiki

This article or section does not follow the Laptop page guidelines.

Reason: Missing IDs in the hardware table, an Accessibility, Firmware and Function keys section. (Discuss in Talk:Lenovo ThinkPad X1 Carbon (Gen 9))
Hardware PCI/USB ID Working?
Video 8086:9a49 Yes
Wireless 8086:a0f0 Yes
Ethernet Yes
Mobile broadband Yes
Audio 8086:a0c8 Yes
TouchPad 06cb:00fc Yes
TrackPoint 06cb:00fc Yes
Webcam 174f:2454 Yes
Fingerprint reader 06cb:00fc Yes
Bluetooth 8087:0026 Yes
NFC Untested

Wireless

For 802.11n connections, maximum speeds are limited to about 25Mbps for downloads and 50Mbps for uploads.

Audio

This laptop requires ALSA firmware in order for the sound card to work (i.e. install sof-firmware).

The audio from the built-in speakers may still sound very quiet and "tinny" in comparison to Windows. This laptop requires audio post-processing to achieve an enjoyable audio experience. If you use PipeWire or Wireplumber, install EasyEffects and the EasyEffects presets bundle. Apply the "Laptop" preset (recommended) or "Advanced Auto Gain" preset as per your preferences.

Microphone

This laptop boast a 4-way microphone.

  • Dmic0 Front
  • Dmic0 Rear
  • Dmic1 2nd Front
  • Dmic1 2nd Rear

They are individually configurable, but also grouped as a single DMIC and DMIC16kHz.

To get them to properly work, usbcore must register snd-usb-audio before the snd_hda_codecs are processed. to do that, you'll need your hwdb.bin inside your initramfs. follow these steps:

  1. Edit /etc/mkinitcpio.conf and add /etc/udev/hwdb.bin to the FILES array (i.e. FILES=("/etc/udev/hwdb.bin"))
  2. Update the hardware database index
  3. Regenerate the initramfs

Then make sure to select the DMIC16kHz as your microphone.

Video

If you are getting laggy/stuttering UI and mouse movements in your desktop environment add i915.enable_psr=0 to your kernel parameters. However, this can be expensive in terms of power consumption (around 2-3 W), and may be not needed with recent kernels (e.g., 5.14).

Using intel-media-driver provides good graphics performance.

Fingerprint reader

The fingerprint reader works out of the box using fprintd. See Fprint.

IR Camera

See Howdy for logging in with the IR camera. The IR emitters can be enabled with linux-enable-ir-emitterAUR if they do not already work.

Mobile broadband

The laptop allows several different WWAN modules, including: Fibocom L860 (Intel based), Quectel EM120 (Qualcomm based) and Foxconn SDX55 (Qualcomm based). All these modules use a direct PCI connection instead of USB, and they are all integrated through the new "wwan" subsystem: the Qualcomm based ones are supported in the kernel since 5.13, and the Intel based ones since 5.14.

The SDX55 model is fully operational with:

  • kernel 5.13, see [1]
  • ModemManager 1.16.6, which includes the FCC unlock operation, see [2] and [3]
  • Intel VT-D enabled in the laptop bios, see [4].

The EM120 model is fully operation with 5.13 and works after installing and selecting the FCC unlock procedure needed as detailed in Mobile broadband modem#FCC locking.

The L860 model should be usable since 5.14, it is possible that L860 model can be unlocked similarly as EM120 model with correct FCC unlock operation. Please open a new issue in ModemManager if that is the case, see [5].

The FCC unlock operations are required in all these WWAN modules because Lenovo wants to make sure that these modules are exclusively used in the certified Lenovo platforms. Without the FCC unlock, the module would be detected by ModemManager, but it would be impossible to put the modem in "online" mode (RF on). At some point Lenovo will publish a proprietary tool to perform this platform check and run the FCC unlock via the tool; but until that tool is published, there is no known way to FCC unlock the L860; so even if the kernel supports them, they would be unusable.

Since release 1.18.4, the ModemManager daemon no longer automatically performs the FCC unlock procedure by default. [6]

# ln -sft /etc/ModemManager/fcc-unlock.d /usr/share/ModemManager/fcc-unlock.available.d/<vid>:<pid>

Replace <vid>:<pid> with a proper value for the device, that is value in the brackets at the end of the line for the modem:

# lspci -nn

For SDX55 that would be:

# ln -sft /etc/ModemManager/fcc-unlock.d /usr/share/ModemManager/fcc-unlock.available.d/105b:e0ab

Performance modes

Lenovo supports 'platform-profiles' on newer kernels which can either greatly improve performance and throttling, or battery life and thermals. The default mode is "balanced" however users can switch between these modes using the following keyboard shortcuts.

  • Fn+l - Low-power mode
  • Fn+m - Balanced mode
  • Fn+h - Performance mode

The currently active mode can be checked with the following command:

# cat /sys/firmware/acpi/platform_profile

TrackPoint

Some users may find that the default TrackPoint sensitivity is too low or too high for accurate and comfortable use on Linux. Changing mouse speed from your DE's built-in settings may not fix this problem, as the TrackPoint will still be inaccurate and jumpy. This can be remedied by editing TrackPoint config files.

TrackPoint configuration files are usually located in:

/sys/devices/platform/i8042/serio1/

Some users may find the config files are in a sub-directory named serio2 or serio3. You need to look for a file named 'sensitivity' and change the value to suit your preferences (the value must be between 0 to 255). A recommended starting value is 60 if the user finds the TrackPoint is too sensitive by default.

The setting should take effect immediately after saving changes to the file. For further tweaking, see also the files named 'speed', 'resolution', 'rate' and 'inertia' (these files may not necessarily be present).

Use sysfsutils to make these changes persistent on boot.

Troubleshooting

TrackPoint/Keyboard/Trackpad does not work after booting into the desktop

Note: This issue has been fixed in BIOS 1.52

A workaround is to turn off all pre-desktop authorization options in the UEFI settings. This is located under Security > Fingerprint.

Furthermore, sleep state should be set to "Windows and Linux" (modern/S0ix suspend) in UEFI, as the "Linux S3" sleep state was broken before BIOS 1.52. This is located under Config > Power.