It would be very nice to have ability to login to my Linux desktop PC using a fingerprint. However, it seems there are no reasonably reliable and generally available fingerprint readers compatible with libfprint… I bought a couple on Amazon and while they work, they’re so unreliable to the point of being useless.
However, I found the fingerprint module used in the Framework Laptop 13 to be reasonably reliable (although it still fails to scan the fingerprint sometimes, and due to the generally bad fingerprint UX in Linux/KDE Plasma I then have to use my password…). And since the module is available in the Marketplace for €30, I thought it would be cool to make an external fingerprint device with it, in a 3D printed case. The reader module attaches to USB, so the main issue would be to figure out how to connect the existing connector (on a flex cable I assume) to a cable (or even better, a USB-C socket). I’m too lazy to take my Framework apart right now, but I’m going to soon and will try to figure out what connector is used and if the other part could be obtained. I have some experience with designing and ordering PCBs, so the cleanest way would be to make a small adapter PCB with a USB-C socket.
Anyway, if you have any input, please do chime in. If you have any tips on reliable external fingerprint readers for Linux, please also let me know - while this would be a cool project, I have quite a few in a pipeline already…
There should be some information about the connector and interface on the Framework Github. I know the webcam uses standard D+/D- USB2 lanes, but the fingerprint sensor is more likely I2C or something.
The Fingerprint Reader resides on the Input Cover and connects though the Touchpad. All of its signals are directly passed to the Input Cover Interface described above. The connector used is Kyocera 046809610110846+.
Pin
Signal
Notes
1
VBUS
5V
2
USB_P
USB data
3
USB_N
USB data
4
GND
5
FPR_CTRL
Output (mask switch events)
6
SWITCH
Open collector output
7
FPR_LED_W
8
FPR_LED_G
9
FPR_LED_R
10
FPR_LED_COM
5V
https://www.mouser.com/c/?q=Kyocera+046809610110846
It’s a FFC Connector 0.5mm Pitch 10pos. Common enough that connectors and cables are available from aliexpress, in addition to major suppliers of course.
Thanks a lot for that, @MJ1 ! And apologies for not doing my own research first.
This means that it should be straightforward to connect the fingerprint reader itself to USB. The connectors should be relatively easy to hand-solder, too. (The RGB LED would need something to drive it, probably a MCU - but as it happens I have a few cheap a USB2 hub modules at hand that could be built into the device to connect the FPR and the MCU using a single USB cable.)
Now just to find a way to spread the shipping cost among multiple items somehow - paying €30 shipping on a €30 part wouldn’t be very economical… If anybody in the EU is looking to get anything from the Marketplace, please let me know - we could do a small “group buy”
Checked the datasheet. It actually uses a notched FPC/FFC cable. But I think regular non-notched cable may fit. In case that’s easier or cheaper to source in your country for prototyping.
The narrowest part at the notch of the specified cable is 5.45mm ±0.05. A non-notched Molex cable has an overall width of 5.5mm ±0.06 https://www.molex.com/pdm_docs/sd/982660098_sd.pdf
I finally started working on it. By coincidence, Framework products became available here just a couple of days ago (at last!) which should speed things up - I already ordered the fingerprint scanner module (plus some other upgrade bits - stiffer hinges and new webcam module).
The MVP would be a simple adapter PCB with a connector for the FPR FPC/FFC cable and a USB port - however, there’s also the RGW lighting around the reader (yes - red, green and white ) plus the switch, so I wouldn’t be happy with those not being used.
So I’d like to implement the following design:
4-port USB 2.0 hub using the USB2514 chip
One port connected to the FPR
Another port connected to a RP2040 which will control the lighting and read the switch
2 remaining USB 2.0 ports available on USB A sockets
5 (or so) Cherry MX compatible switches (with hotswap sockets) connected to the RP2040, at least one position optionally supporting an EC11 rotary encoder; WS2812B-compatible RGB module in each switch as indicator
BOM cost looks very reasonable. I already designed a RP2040-based controller module for custom mechanical keyboards and I’m familiar with QMK firmware, so it’s just a matter of laying out the USB hub circuit without any stupid mistakes
I’ll post a link to the KiCad project as soon as I push the initial version.