Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fpdriver

A custom fingerprint driver for the FocalTech FT9201 external USB scanner on Linux.

Important: This project targets VID 0x2808 only (FT9201 USB dongle). If your laptop has a built-in fingerprint reader, it uses a different chip/driver and is not touched by this tool.

Device identity

PID Role
2808:93a9 Bootloader stage
2808:a658 Runtime bridge (use this for capture)

Both PIDs may appear simultaneously on different USB buses.

Setup (Fedora)

# C tool dependencies
sudo dnf install libusb1-devel gcc make

# Python tool dependencies
pip install --user pyusb

# USB permissions (no sudo needed after this)
sudo cp 50-focaltech.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
# Unplug and replug the FT9201 USB scanner

Usage

Python (works immediately after pyusb + udev)

USB topology (important!)

The same physical dongle exposes two PIDs with different endpoints:

PID Role Bulk OUT Bulk IN Packet size
93a9 Bootloader / control API 0x02 0x83 16 / 32 B
a658 Runtime image bridge 0x01 0x82 512 / 512 B
  • Control init (bootstrap, session, pipeline) runs on 93a9
  • Bulk image capture reads from a658 EP 0x82
  • Do not send 0x02/0x83 to a658 — it will crash with "Invalid endpoint"
python3 ft9201.py init-dual            # recommended: init 93a9, probe a658
python3 ft9201.py init --pid 93a9     # control init only
python3 ft9201.py capture -o test     # init 93a9 + bulk read a658

C tool (after libusb1-devel installed)

make ft9201
./ft9201 list
./ft9201 init --pid a658
./ft9201 capture -o test

Two sensors on one machine

ft9201 / ft9201.py open devices by VID 0x2808 + PID only. Your built-in laptop reader (Goodix, Synaptics, etc.) will never be selected.

Use python3 ft9201.py list to confirm you're talking to the external USB device:

Bus 003 Dev 015  PID 0xa658  (runtime-bridge)   ← target this
Bus 001 Dev 019  PID 0x93a9  (bootloader)

Documentation

Extended RE notes: https://docs.google.com/document/d/1Xe3jpMAEk6xfgdvdpNng9Ath9bWOPLXa4qZ9WV_r_RQ/edit?usp=sharing

Protocol constants: src/protocol/commands.h

About

A custom fingerprint driver for Linux Systems

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages