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 | No | |
| 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 a custom Intel ISH (Integrated Sensors Hub) firmware for the ambient light sensors. The custom firmware is not upstreamed yet and can be extracted from the Windows driver package through innoextract. The ISH firmware is located at:
/lib/firmware/intel/ish/ish_lnlm.bin.zst
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 was not upstreamed.
To enable the camera, you can compile a kernel (6.17+) with the following modifications:
- The sensor driver must be added to
drivers/media/i2c/(and enabled in kernel config). -
drivers/media/pci/intel/ipu-bridge.cmust be patched to support the sensor. (May not be required from kernel 6.19).
You can verify the module is loaded with $ lsmod | grep imx471
See this GitHub issue for patch details.
User Space
The proprietary Intel HAL is currently difficult to setup on Arch. An alternative is using Libcamera's SoftISP, which processes the raw data on the CPU.
There is a caveat that picture quality is 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.