Lenovo ThinkPad X1 Yoga (Gen 4)

From ArchWiki
Hardware PCI/USB ID Working?
Touchpad Yes
TrackPoint Yes
Keyboard Yes
Video Yes
Webcam 04f2:b67c Yes
IR Webcam 13d3:56ba Yes
Ethernet Yes
Bluetooth Yes
Audio Yes
Wireless Yes
Mobile broadband Untested
Fingerprint reader Yes
NFC Yes
Screen orientation sensor Yes
Touch screen Yes
Wacom pen Yes

The Lenovo ThinkPad X1 Yoga, 4th generation is a 2-in-1 convertible laptop introduced in late 2019. Its design is closely related to the Lenovo ThinkPad X1 Carbon (Gen 7). It 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 -t system | grep Version
       Version: ThinkPad X1 Yoga 4th

Firmware

Updates

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.

BIOS hanging, not booting into bootloader

Sometimes, the BIOS just "hangs" and you cannot do anything but force-power off. This was fixed in the latest version of the Synaptics touchpad which you can install using fwupdmgr.

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.

Enabling S3

The UEFI has two Sleep State options, called Windows and Linux, which you can find in at Config > Power > Sleep State. See Power management/Suspend and hibernate for the explanation of the various sleep states.

Reboot and verify whether deep sleep is available, as explained in Power management/Suspend and hibernate#Changing suspend method.

Touchpad

Sometimes after a boot, the touchpad does not work. This was fixed in the latest firmware for the Synaptics device which you can install using fwupdmgr.

Fingerprint sensor

Install the latest fprintd package. Also install the firmware modules with fwupdmgr from the lvfs-testing remote:

$ fwupdmgr enable-remote lvfs-testing
$ fwupdmgr refresh
$ fwupdmgr update

See fprint for more details on how to setup fingerprints.

IR Webcam

Confirm you have an IR camera by typing:

$ lsusb|grep IMC.Networks.Integrated.Camera 

Shows (something like):

Bus 001 Device 003: ID 13d3:56ba IMC Networks Integrated Camera

The kernel drivers in Arch pick this up just fine, but there are packages like Howdy|howdyAUR authentication pam/python scripts that require linux-enable-ir-emitter

install the package linux-enable-ir-emitterAUR

# linux-enable-ir-emitter configure

Follow the prompts

Then run the enablement scripts:

# linux-enable-ir-emitter run

(Optional) test the functionality:

# linux-enable-ir-emitter test

Create the systemd link to the enablement scripts:

# linux-enable-ir-emitter boot

NFC

See https://github.com/nfc-tools/libnfc/issues/455

Screen orientation sensor

Install the latest iio-sensor-proxy package and reboot the system. Do not manually start the service as systemd DBUS handles it for you.

You can confirm the sensor is working by typing:

$ monitor-sensor --accel
=== Has accelerometer (orientation: normal)

Try open your Thinkpad to tablet mode and rotate it around to confirm it is sensing correctly. Use Ctrl+c to close the monitor-sensor process when done.

Function keys

Key Visible?1 Marked?2 Effect
Fn+Esc No Yes Enables Fn lock
Fn+F1 Yes Yes XF86AudioMute
Fn+F2 Yes Yes XF86AudioLowerVolume
Fn+F3 Yes Yes XF86AudioRaiseVolume
Fn+F4 Yes Yes XF86AudioMicMute
Fn+F5 Yes Yes XF86MonBrightnessDown
Fn+F6 Yes Yes XF86MonBrightnessUp
Fn+F7 Yes Yes XF86Display
Fn+F8 Yes Yes XF86WLAN
Fn+F9 Yes Yes XF86Tools
Fn+F10 Yes Yes XF86Bluetooth
Fn+F11 No Yes none/opens keyboard config in Windows
Fn+F12 Yes Yes XF86Favorites
Fn+B Yes No Break
Fn+K Yes No ScrollLock
Fn+P Yes No Pause
Fn+S Yes No SysRq
Fn+4 Yes3 No XF86Sleep
Fn+Space No No toggle keyboard backlight
Fn+Left Arrow Yes No Home
Fn+Right Arrow Yes No End
Fn+L No No low power mode
Fn+M No No normal power mode
Fn+H No No high power mode
  1. The key is visible to xev and similar tools
  2. The physical key has a symbol on it, which describes its function
  3. systemd-logind handles this by default

Battery threshold settings

It is possible to set thresholds for when the battery should stop/start charging using

$ tlp setcharge start_value stop_value

The following values are recommended: [1]

Laptop Usage start value stop value
Regularly complete discharge (<20%) of battery 95 100
No complete discharge, between 50% to 100% 75 80
No battery usage, always AC 45 50