Lenovo Thinkpad X9
| Hardware | PCI/USB ID | Working? |
|---|---|---|
| ForcePad | Yes | |
| TouchScreen | Yes | |
| Stylus | Yes | |
| GPU | 8086:64a0 |
Yes |
| Webcam | No | |
| IR camera | No | |
| Audio | 8086:a828 |
Yes |
| Wi-Fi | 8086:a840 |
Yes |
| NPU | 8086:643e |
Yes |
| Bluetooth | 8086:a876 |
Yes |
| Fingerprint reader | 06cb:019d |
Yes |
| Ambient light sensor | Yes | |
| Thunderbolt 4 | 8086:a831 |
Yes |
| TPM | Yes |
In general, Linux kernel 6.14 minimum is required for most peripherals to function properly.
ForcePad
The ForcePad functions needs kernel driver for Intel THC (Touch Host Controller) which is upstreamed to Linux kernel 6.14. The following config is already enabled for linux:
config
CONFIG_INTEL_THC_HID=m CONFIG_INTEL_QUICKSPI=m CONFIG_INTEL_QUICKI2C=m
For 14" Sensel touchpad, you can adjust haptic feedback using hid-tools:
# hid-feature set /dev/hidraw1 -f b0000 <value 1-100>
and click force with:
# hid-feature set /dev/hidraw1 -f d0000 <value 1-3>
The device reverts to default settings after reboot. We can make it permanent through udev rules:
etc/udev/rules.d/99-sensel.rules
SUBSYSTEM=="hidraw", ACTION=="add", ENV{ID_VENDOR_FROM_DATABASE}=="Cirtech (UK) Ltd", RUN+="/usr/bin/hid-feature set /dev/%k -f b0000 50", RUN+="/usr/bin/hid-feature set /dev/%k -f d0000 1"
TouchScreen
Same as #ForcePad.
Stylus
Same as #ForcePad.
Audio
This laptop requires Sound Open Firmware in order to make the sound card working.
Power Management
There are typically battery charging adjustments available for ThinkPad laptops.
See Power management/Suspend and hibernate#Changing suspend method.
Ambient Light Sensor
This model needs linux-firmware-intel for the ambient light sensors.
Webcam
Certain models feature a MIPI camera (Sony IMX471 sensor) connected to the Intel IPU7 interface. Unlike standard USB webcams, this requires a complex driver stack and is not yet supported out-of-the-box.
Conversely, non-MIPI cameras are expected to work out of the box.
Kernel Support
Support for IPU7 was merged into the staging area of kernel 6.17, however the driver for the IMX471 sensor has not been upstreamed.
The camera sensor driver can be installed using DKMS: imx471-dkms-gitAUR
IPU bridge support is also needed. For kernel versions 6.17 and 6.18, drivers/media/pci/intel/ipu-bridge.c must be patched to support the sensor. See this GitHub issue for patch details. 6.19+ has support out-of-the-box [1].
You can verify the module is loaded with $ lsmod | grep imx471
User Space
The proprietary Intel HAL is currently difficult to setup on Arch. An alternative is using libcamera's SoftISP, which processes the raw sensor data on the GPU or CPU.
There is a caveat that picture quality is currently worse than the proprietary stack.
- Install libcamera, which as of v0.6.0 supports IPU7.
- Install pipewire-libcamera to bridge the camera to PipeWire.
You can check if your camera is working with $ qcam.
WirePlumber Configuration
WirePlumber may not monitor libcamera devices by default. Create the following configuration file to force it.
~/.config/wireplumber/wireplumber.conf.d/10-libcamera.conf
wireplumber.profiles = {
main = {
monitor.libcamera = required
}
}
Restart the relevant user services:
$ systemctl --user restart wireplumber pipewire
media.webrtc.camera.allow-pipewire To trueIR Camera
Same as Webcam. The driver for the IR camera sensor (HM1092) is not available yet.
Firmware
Can be updated via fwupd or the official bootable ISO updater provided by Lenovo.
Function keys
| Key | Visible?1 | Marked?2 | Effect |
|---|---|---|---|
Fn |
Yes | No |
KEY_WAKEUP
|
Fn+Esc |
No3 | Yes | Enables Fn lock |
Fn+F1 |
Yes3 | Yes |
KEY_MUTE
|
Fn+F2 |
Yes | Yes |
KEY_VOLUMEDOWN
|
Fn+F3 |
Yes | Yes |
KEY_VOLUMEUP
|
Fn+F4 |
Yes3 | Yes |
KEY_F204 Mutes microphone
|
Fn+F5 |
Yes | Yes |
KEY_BRIGHTNESSDOWN5
|
Fn+F6 |
Yes | Yes |
KEY_BRIGHTNESSUP5
|
Fn+F7 |
Yes | Yes |
KEY_SWITCHVIDEOMODE4
|
Fn+F8 |
No | Yes | Toggles ACPI platform profile |
Fn+F9 |
Yes3 | Yes | SW_CAMERA_LENS_COVER4 Toggles integrated camera |
Fn+F10 |
Yes | Yes |
KEY_SYSRQ4
|
Fn+F11 |
Yes | Yes |
KEY_LINK_PHONE4
|
Fn+F12 |
Yes | Yes |
KEY_BOOKMARKS4
|
Fn+End |
Yes | Yes |
KEY_INSERT
|
Fn+B |
Yes | No |
KEY_LEFTCTRL+KEY_PAUSE
|
Fn+P |
Yes | No |
KEY_PAUSE
|
Fn+K |
Yes | No |
KEY_SCROLLLOCK
|
Fn+H |
No | No | switch to performance profile |
Fn+M |
No | No | switch to balanced profile |
Fn+L |
No | No | switch to low power profile |
Fn+Up |
Yes | Yes |
KEY_PAGEUP
|
Fn+Down |
Yes | Yes |
KEY_PAGEDOWN
|
Fn+Left |
Yes | No |
KEY_HOME
|
Fn+Right |
Yes | No |
KEY_END
|
Fn+S |
Yes | No |
KEY_LEFTALT+KEY_SYSRQ
|
- The key is visible via
evtestand similar tools - The physical key has a symbol on it, which describes its function
- An LED indicates the state of this switch
- This event is handled by "ThinkPad Extra Buttons"
- This event is handled by "Video Bus"
Fn and LeftCtrl can be swapped in the BIOS menu. The keycaps are the same size, so they could theoretically also be swapped to match the BIOS setting.
As of BIOS version N4DET32W (1.15 on the X9-14), the "Fool proof FN Ctrl" feature is enabled by default and Fn+C, Fn+V and some other act as LeftCtrl+C etc…
Fingerprint sensor
Fingerprint sensor is located on the power button, reported as "Synaptics Sensors".
The fingerprint reader works out of the box using fprintd. See Fprint.