How to enable fingerprint device for Thinkpad t430s in 12.04?

Okay I'm running a Thinkpad X1 and the same biometric chip is on it. I searched the whole internets twice for this problem, but, good news, I found a way to make it work in all cases, so here's a small "tutorial" that compiles the info from this thread and other places:

Installing the software

First, add the fingerprint PPA as mentioned by the previous posts, and install the required packages:

sudo add-apt-repository ppa:fingerprint/fingerprint-gui
sudo apt-get update
sudo apt-get install libbsapi policykit-1-fingerprint-gui fingerprint-gui

Then, download and untar this http://volker.de/wp-content/uploads/2012/12/BSAPI_4.3.291Lite_SDK_for_Linux.tar.gz.

Modifying libbsapi

Libbsapi's PPA currently does not really support this chipset, however, replacing the install's with the latest version will work. First, figure out you architecture (32 or 64), and then locate the libbsapi.so file in either the lib folder (for 32 bit) or the lib64 folder (for 64 bit). Then, copy this file (using sudo, or gksudo on nautilus) to the /usr/lib folder.

Then, we have to make an addition to this file: /lib/udev/rules.d/40-libbsapi.rules . The code do be added is:

#Added for Upek 2020 support
ATTRS{idVendor}==”147e”, ATTRS{idProduct}==”2020″,   SYMLINK+=”input/touchchip-%k”, MODE=”0664″, GROUP=”plugdev”
ATTRS{idVendor}==”147e”, ATTRS{idProduct}==”2020″,   ATTR{power/control}==”*”, ATTR{power/control}=”auto”

Do it using either : sudo nano /lib/udev/rules.d/40-libbsapi.rules or sudo gedit /lib/udev/rules.d/40-libbsapi.rules, whichever you might prefer.

Last modification and it's all done

We have to grant fingerprint-gui access to the reader's USB bus. Run lsusb and locate the line that may look like this Bus 001 Device 003: ID 147e:2020 Upek (actually look for the 147e:2020 Upek ID). 001 here indicates its bus id, and 003 is its Device id. Note yours. Then, issue the command (in my case, but adapt to your own bus and device id's):

sudo chmod 666 /dev/bus/usb/001/003

Then, start fingerprint-gui, and it should recognize your device, and configure it happily.


Actually, there is a newer version of libbsapi available than is packaged in the fingerprint-gui PPA that supports this device. I've tried it out with my T530 (scanner deviceid 147e:2020) and it works.

There is an instruction and a source for this lib on this page (scroll down on linked page for the English version). On my Ubuntu 12.10 setup, the path to the udev rule file that has to be edited is different from the one in the tutorial, it is:

/lib/udev/rules.d/40-libbsapi.rules

Supported readers (run command lsusb to find out the ID of your reader)
============
  045e:00bb        061a:0110        147e:1002
  045e:00bc        08ff:1600        147e:1003
  045e:00bd        08ff:2500        147e:2015
  045e:00ca        08ff:2580        147e:2016
  0483:2015        08ff:5501        147e:3000
  0483:2016        138a:0001        147e:3001
  05ba:0007        147e:1000        147e:5002
  05ba:0008        147e:1001        147e:5003
  05ba:000a

Installation

  1. First of all, if you have installed Fingerprint GUI manually before, get rid of it completely. Remove all binaries, shared libraries, any other files and undo all the changes you have made to your system config files (especially to files under /etc/pam.d/).

  2. Add this PPA to your sources:

    sudo add-apt-repository ppa:fingerprint/fingerprint-gui
    sudo apt-get update
    
  3. Install the packages:

    sudo apt-get install libbsapi policykit-1-fingerprint-gui fingerprint-gui
    
  4. Log out of your session and log back in (we need the new session defaults to be picked up).

Setup

After installation launch Fingerprint GUI (can be found under System > Preferences) and enrol your fingerprints.

That should be all you need to do!

Try locking your screen, logging out and in, sudo in terminal and running graphical apps requiring root privileges.