Lenovo ThinkPad P51
| Hardware | PCI/USB ID | Working? |
|---|---|---|
| Touchpad | Yes | |
| Keyboard | Yes | |
| Integrated GPU | 8086:591b |
Yes |
| Discrete GPU | 10de:1436 |
Yes |
| Webcam | 5986:2118 |
Yes |
| Ethernet | 8086:15e3 |
Yes |
| Bluetooth | 8087:0a2b |
Yes |
| SD-card reader | 10ec:525a |
Yes |
| Audio | 8086:a171 |
Yes |
| Wi-Fi | 8086:24fd |
Yes |
| Fingerprint reader | 138a:0097 |
Yes |
| TPM | Untested |
Installation
Fingerprint sensor
- The fingerprint sensor needs python-validityAUR to work.
- For further configuration, See Fprint#Configuration
- To prevent the sensor not working when laptop waking up, create a script in
/lib/systemd/systemd-sleepto restart related service
#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
case "$1" in
pre)
#code execution BEFORE sleeping/hibernating/suspending
;;
post)
#code execution AFTER resuming
systemctl restart open-fprintd
systemctl restart python3-validity
systemctl restart open-fprintd-resume.service
;;
esac
}}
- A network manager may be corrupted from resume, adding
systemctl restart <NetworkManager>to the resume script mentioned before may help.
Troubleshooting the "Match-on-Chip" lock and Python 3.14 pathing
If the sensor fails with a "Type 15" error or Python pathing issues (common on newer Arch installs or resold devices), follow these steps:
BIOS Reset (Windows Lock)
If the laptop previously had Windows installed, the hardware may be paired to a Windows enclave.
- Reboot into BIOS.
- Go to Security > Fingerprint.
- Select Reset Fingerprint Data.
Manual Cryptographic Pairing
On systems with Python 3.14+, the AUR packages may fail to find site-packages. Stop background services and run the pairing script manually:
- Stop interfering services:
sudo systemctl stop python3-validity open-fprintd - Kill remaining processes:
sudo killall -9 python3 - Clear backoff locks:
sudo rm -f /var/run/python-validity.last_start - Run the pairing script with explicit pathing:
sudo PYTHONPATH=/usr/lib/python3.14/site-packages python3 /usr/share/python-validity/playground/prototype.py
Follow the prompts to swipe your finger and generate new keys.
Manual Enrollment Service
To enroll without service interference, start the bridge and driver in the foreground:
- In one terminal:
sudo systemctl start open-fprintd - In the same or a second terminal:
sudo PYTHONPATH=/usr/lib/python3.14/site-packages python3 /usr/lib/python-validity/dbus-service --debug - In a final terminal:
fprintd-enroll $USER
Once enrollment is complete, enable the services:
# sudo systemctl enable --now python3-validity open-fprintd
Function Keys
| Key | Visible?1 | Marked?2 | Effect |
|---|---|---|---|
Fn+Esc |
No | Yes | Toggles the Fn lock (Hardware level) |
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 |
XF86NotificationCenter
|
Fn+F10 |
Yes | Yes |
XF86PickupPhone
|
Fn+F11 |
Yes | Yes |
XF86HangupPhone
|
Fn+F12 |
Yes | Yes |
XF86Favorites
|
Fn+4 |
Yes | No |
XF86Sleep
|
Fn+S |
Yes | No |
Alt_L (Legacy Sys_Req)
|
Fn+B |
Yes | No |
Break / Pause
|
Fn+P |
Yes | No |
Pause
|
Fn+K |
Yes | No |
Scroll_Lock
|
Fn+I |
Yes | No |
XF86WakeUp
|
Fn+Space |
No | Yes | Controls keyboard backlight (HW level) |
Fn+Print |
Yes | No |
XF86SelectiveScreenshot
|
Fn+Left Arrow |
Yes | No |
Home
|
Fn+Right Arrow |
Yes | No |
End
|
- The key is visible to
xevand similar tools - The physical key has a symbol on it, which describes its function
See also
- 3dprogramin GitHub - possible fixes for P51 issues (based on an Archbang but still useful)