python-validity icon indicating copy to clipboard operation
python-validity copied to clipboard

ThinkPad X1 Yoga 2nd Gen (138a:0097) - Fingerprint sensor doesn't work anymore (Arch Linux)

Open furretpaws opened this issue 6 months ago • 7 comments

I've been using my fingerprint sensor (Validity 138a:0097) for a while with no issues. It worked well under KDE, and I was able to use it to unlock my laptop regularly.

Yesterday, I noticed that the KDE lock screen no longer prompted for fingerprint input. I started troubleshooting and realized:

  • The fingerprint reader doesn't respond to LED dance or factory reset commands.
  • I'm consistently getting timeouts or error 0401.

Running led dances or factory resets lead to either a 0401 error or a timeout as seen here down below:

sudo python3 /usr/share/python-validity/playground/factory-reset.py Traceback (most recent call last): File "/usr/share/python-validity/playground/factory-reset.py", line 6, in factory_reset() ~~~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/validitysensor/sensor.py", line 86, in factory_reset assert_status(usb.cmd(reset_blob)) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/validitysensor/util.py", line 12, in assert_status raise Exception('Failed: %04x' % s) Exception: Failed: 0401

sudo validity-led-dance Traceback (most recent call last): File "/usr/bin/validity-led-dance", line 16, in init.open() ~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/validitysensor/init.py", line 50, in open open_common() ~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/validitysensor/init.py", line 31, in open_common init_flash() ~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/validitysensor/init_flash.py", line 122, in init_flash info = get_flash_info() File "/usr/lib/python3.13/site-packages/validitysensor/flash.py", line 40, in get_flash_info rsp = tls.cmd(unhex('3e')) File "/usr/lib/python3.13/site-packages/validitysensor/tls.py", line 124, in cmd rsp = self.usb.cmd(cmd) File "/usr/lib/python3.13/site-packages/validitysensor/usb.py", line 105, in cmd resp = self.dev.read(129, 100 * 1024) File "/usr/lib/python3.13/site-packages/usb/core.py", line 1043, in read ret = fn( self._ctx.handle, ...<2 lines>... buff, self.__get_timeout(timeout)) File "/usr/lib/python3.13/site-packages/usb/backend/libusb1.py", line 850, in bulk_read return self.__read(self.lib.libusb_bulk_transfer, ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dev_handle, ^^^^^^^^^^^ ...<2 lines>... buff, ^^^^^ timeout) ^^^^^^^^ File "/usr/lib/python3.13/site-packages/usb/backend/libusb1.py", line 958, in __read _check(retval) ~~~~~~^^^^^^^^ File "/usr/lib/python3.13/site-packages/usb/backend/libusb1.py", line 602, in _check raise USBTimeoutError(_strerror(ret), ret, _libusb_errno[ret]) usb.core.USBTimeoutError: [Errno 110] Operation timed out

sudo validity-led-dance Traceback (most recent call last): File "/usr/bin/validity-led-dance", line 16, in init.open() ~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/validitysensor/init.py", line 50, in open open_common() ~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/validitysensor/init.py", line 31, in open_common init_flash() ~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/validitysensor/init_flash.py", line 122, in init_flash info = get_flash_info() File "/usr/lib/python3.13/site-packages/validitysensor/flash.py", line 41, in get_flash_info assert_status(rsp) ~~~~~~~~~~~~~^^^^^ File "/usr/lib/python3.13/site-packages/validitysensor/util.py", line 12, in assert_status raise Exception('Failed: %04x' % s) Exception: Failed: 0401

I tested the same thing on an Arch Linux VM (same 0401 error), a Windows VM (it DOES work there) and pretty much, no luck so far

Has anyone experienced this behavior before? Any steps I can try to reinitialize or recover the sensor?

furretpaws avatar Jul 16 '25 12:07 furretpaws

I am struggling with this issue a couple of weeks now, and I was thinking I was doing something wrong with setting it up on NixOS, but apparently it is not.

Kind of a wild guess, but I guess this is a python and/or library issue actually.

VuiMuich avatar Jul 20 '25 15:07 VuiMuich

Same on a fresh new install of Endeavor,but this time on my t480s.The problem was also present on Arch,yesterday,before wiping the drive and installing Endeavor...I wonder what's the problem.EDIT: I solved the problem.Basically I factory reset my fingerprint reader from the BIOS, then I initialized it from Windows and registered one fingerprint. After that, I eliminated all the fingerprints using this tool: https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe It’s the official Windows driver for the fingerprint reader, but it also includes a utility to completely delete registered fingerprints from the reader’s internal memory. Then I returned to Linux, ran fprintd-enroll again, and when I verified it, everything worked flawlessly. Turns out the fingerprint sensor needs to be properly initialized and cleared through Windows tools before it can work reliably under Linux. Now it works without issues. Image

Jack2267 avatar Aug 05 '25 20:08 Jack2267

Same on a fresh new install of Endeavor,but this time on my t480s.The problem was also present on Arch,yesterday,before wiping the drive and installing Endeavor...I wonder what's the problem.EDIT: I solved the problem.Basically I factory reset my fingerprint reader from the BIOS, then I initialized it from Windows and registered one fingerprint. After that, I eliminated all the fingerprints using this tool: https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe It’s the official Windows driver for the fingerprint reader, but it also includes a utility to completely delete registered fingerprints from the reader’s internal memory. Then I returned to Linux, ran fprintd-enroll again, and when I verified it, everything worked flawlessly. Turns out the fingerprint sensor needs to be properly initialized and cleared through Windows tools before it can work reliably under Linux. Now it works without issues. Image

I have the same problem, but I can't afford to erase the disk to install Windows and then reinstall Arch Linux, any alternative solution?

JesusChapman avatar Aug 09 '25 04:08 JesusChapman

I have the same problem, but I can't afford to erase the disk to install Windows and then reinstall Arch Linux, any alternative solution?

I used virtmanager with a w10 iso to install windows on a usb disk (just add the usb drive i.e. /dev/sdX as a SATA device in your VM and make sure to choose the correct option for BIOS or UEFI – embarrassingly enough the last part was a mistake by my first attempts that took me half the day to notice...), from there I was able to follow the steps @Jack2267 described. Now I am back on track to run the linux side of the initialization, will report back in later..

VuiMuich avatar Aug 09 '25 13:08 VuiMuich

Same on a fresh new install of Endeavor,but this time on my t480s.The problem was also present on Arch,yesterday,before wiping the drive and installing Endeavor...I wonder what's the problem.EDIT: I solved the problem.Basically I factory reset my fingerprint reader from the BIOS, then I initialized it from Windows and registered one fingerprint. After that, I eliminated all the fingerprints using this tool: https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe It’s the official Windows driver for the fingerprint reader, but it also includes a utility to completely delete registered fingerprints from the reader’s internal memory. Then I returned to Linux, ran fprintd-enroll again, and when I verified it, everything worked flawlessly. Turns out the fingerprint sensor needs to be properly initialized and cleared through Windows tools before it can work reliably under Linux. Now it works without issues. Image

I have the same problem, but I can't afford to erase the disk to install Windows and then reinstall Arch Linux, any alternative solution?

you can install windows on a usb using wintogo with rufus...i think it could work....

Jack2267 avatar Aug 09 '25 13:08 Jack2267

🎉 following the guide for the 25.05 NixOs Flake I finnaly was able to successfully enroll a finger.

VuiMuich avatar Aug 09 '25 15:08 VuiMuich

Same on a fresh new install of Endeavor,but this time on my t480s.The problem was also present on Arch,yesterday,before wiping the drive and installing Endeavor...I wonder what's the problem.EDIT: I solved the problem.Basically I factory reset my fingerprint reader from the BIOS, then I initialized it from Windows and registered one fingerprint. After that, I eliminated all the fingerprints using this tool: https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe It’s the official Windows driver for the fingerprint reader, but it also includes a utility to completely delete registered fingerprints from the reader’s internal memory. Then I returned to Linux, ran fprintd-enroll again, and when I verified it, everything worked flawlessly. Turns out the fingerprint sensor needs to be properly initialized and cleared through Windows tools before it can work reliably under Linux. Now it works without issues. Image

I confirm - this helps for me. After windows fingerprints (add then remove) in arch sensor works like a charm

subn0wa avatar Aug 19 '25 22:08 subn0wa