In search of contributors to a Linux Chromebook fingerprint PAM module

What

Ability to unlock Linux (KDE lock screen, sudo) with the Chromebook’s fingerprint sensor. As of now, you can’t do that. I want to do that.

How

How to use ectool to use the fingerprint sensor

Try this on your Chromebook which has a fingerprint sensor.

Set the seed

sudo ectool --name=cros_fp fpseed aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

This is needed before enrolling fingers. It must be exactly 32 bytes. If you’re getting errors for other commands, you may need to set the seed again. When you upload templates you must use the same seed that you had when you enrolled the templates.

Enroll a finger

sudo ectool --name=cros_fp fpmode enroll

Then touch your finger to the sensor. Then run

sudo ectool --name=cros_fp fpmode

to check the fpmode. You should have to do this exactly 5 times to enroll a finger, but you may need to do it a few extra times if your finger didn’t get sensed properly.

If it says 0x30

That means it didn’t detect your finger. Press your finger to the sensor until the fpmode is not 0x30.

If it says 0x10

That means that it detected your finger, but it still needs more data to calibrate it. Run enroll again, press the same finger to the sensor, and check the mode again.

If it says 0x0

That means that your finger is enrolled.

Downloading the template

Choose a place where you want to save the template. I recommend making a fingers folder for your templates. Downloading the template lets you match the template even after the Chromebook suspends, shuts down, and ec resets.

sudo ectool --name=cros_fp fptemplate 0 > r1

You can replace r1 with any file name. I use r1 as an ID for right thumb. r2 would be right index finger, and so on.

Clearing the loaded templates

Before enrolling another finger, I recommend clearing the loaded templates to avoid errors. Remember to download the template before you clear templates.

sudo ectool --name=cros_fp fpmode reset_sensor

Uploading a saved template

sudo ectool --name=cros_fp fptemplate r1

Where r1 is the name/path to the file with the template.

Finding out the maximum number of fingerprint template slots

sudo ectool --name=cros_fp fpinfo

Sample output:

Fingerprint sensor: vendor 20435046 product 9 model 21f version 1
Image: size 160x160 8 bpp
Error flags: 
Dead pixels: UNKNOWN
Templates: version 4 size 5156 count 0/5 dirty bitmap 0

The key info is 0/5. It means that there are 5 slots total and 0 of them are currently being used.

Matching a finger

Before you do this, use fpinfo to check that you have at least 1 template loaded.

sudo ectool --name=cros_fp fpmode match

Then press a finger to test to the sensor. Then run

sudo ectool --name=cros_fp fpstats

Sample output:

FP stats (t0=115662613 us):
Last capture time:  90645 us
Last matching time: 180720 us (finger: 2)
Last overall time:  272723 us

This means that the test finger matched the template with the index 2 (it starts from 0).
Sample output:

FP stats (t0=2394100110 us):
Last capture time:  90756 us
Last matching time: Invalid
Last overall time:  Invalid

Invalid means that the test finger was not the same finger as any loaded templates.

The plan to implement fingerprint login

DBus interface

A program will run as root (to access /dev/cros_fp) and start a system DBus interface to allow interacting with the fingerprint sensor.

DBus client

Programs can run as normal users and interact with the dbus interface to access the fingerprint sensor as a normal user.

CLI

A CLI will be made which uses a DBus client to enroll fingerprints. This could be made into an app, but since you don’t really need to enroll fingerprints often, making a CLI makes more sense. No one’s stopping people from making an app though.

PAM Module

This function interacts with other programs to check if they should give you access to certain things. For example, KDE can interace with this function to unlock the lock screen if you press a valid finger to the sensor.

The plan is to write everything in Rust.

Who can contribute

  • Has a Chromebook with a fingerprint sensor
  • Is able to use ectool to manually enroll, download, upload, and match, and understand how to use the commands (I can help you learn)
  • Can contribute to Rust code (you can learn Rust)

How to contribute

Reply to this thread with any ideas, questions, or things you can do. I will be continueing development of GitHub - ChocolateLoverRaj/cros-fp-pam: PAM module for authenticating with fingerprint on Chromebooks in a few weeks. You can start sooner or later. Once I have a kind-of-working version, people who test it, report bugs, and hopefully find the cause and fix the bugs would be very helpful.

@Ultrabook u may be interested in this.

1 Like