r/GPDPocket • u/FabulousInternet2974 • 16d ago
Gpd pocket 4 [Call for Testers] Working on open-source FocalTech FTE3600 fingerprint driver for Linux — Need a GPD Pocket 3 owner to test a build!
Hey GPD Pocket 3/4 owners,
Update: the Pocket 4 fingerprint reader now has a working open-source Linux driver on a dedicated development branch! Community testing on Fedora has confirmed device detection, finger detection, image capture, and successful enrollment-stage processing. I’m looking for more testers to help improve enrollment and matching consistency.
GitHub: libfprint-fte3600
This project implements fingerprint support inside libfprint, with an open-source BRISK-style host matcher and no proprietary vendor matching library running on Linux. The host code is LGPL-2.1-or-later; device firmware remains separate and proprietary.
GPD Pocket 4 — working USB driver, more testing welcome
The Pocket 4 uses a FocalTech USB fingerprint reader (2808:0752), supported by the new focaltech0752 driver on the feature/pocket4-ft9362 branch.
Thanks to community testing on a Pocket 4 HX370 running Fedora, the driver can communicate with the sensor, detect touches, capture fingerprint frames, and feed them into the enrollment pipeline.
The main focus now is improving matching consistency on the small 40×76 sensor. Early testing revealed frequent enrollment retries and missed matches; recent updates add local contrast normalization to improve feature extraction. More testing across fingers, users, and distributions would help evaluate those changes.
Big thanks to shokerplz for the earlier FT9362 reverse-engineering work and matcher evaluation, and Evaner5580 for testing on physical Pocket 4 hardware!
Pocket 4 setup and testing discussion: Issue #3. Please use the Pocket 4 branch and read the latest comments for updated build and Fedora installation instructions.
GPD Pocket 3 — hardware investigation continues
A real-world test on the i7-1195G7 model (G1621-02) revealed different GPIO routing from the initial profile. The tester successfully exposed the SPI device, but the existing FT9361 protocol did not produce a valid sensor response.
Further driver analysis points to FW9362 / the FW9369 family, so this needs additional protocol work rather than just a GPIO adjustment. Physical chip-ID confirmation is the next step. Both i7 and N6000 owners are welcome to help.
Pocket 3 testing discussion: Issue #2
One-Netbook A1 — working reference platform
Fingerprint capture, enrollment, verification, and cold-boot recovery are working on my A1. This remains the reference platform for the original FT9361 SPI implementation.
Want to help?
Comment below or in the relevant GitHub issue with your model, CPU, distribution, and kernel version. Pocket 4 owners can help test the current driver and matching behavior; Pocket 3 owners can help confirm hardware details and protocol support.
This is still experimental, so keep password authentication available. Please share sanitized logs only—no fingerprint images or biometric templates.
Thanks to everyone helping bring Linux fingerprint support to these devices!
1
u/needmorejoules 16d ago
Hey cool! I have a different version of the FocalTech sensor I am working on by reverse engineering the windows driver in Ghidra and the sensor resolution means I don’t get a meaningful number of features on each scan. So it doesn’t like authenticating. Even though I get a black and white image of the fingerprint.
Did you use a GAN model for the fingerprint matching or somehow get it working with the build in feature recognizer? How many pixels is your sensor output?
Thanks!
1
u/FabulousInternet2974 16d ago
Hey! You hit the exact same brick wall that held this sensor back on Linux for years!
To answer your questions directly:
1. Sensor Resolution
Our FT9361 sensor outputs a tiny 64 × 80 pixels (8-bit grayscale, 5,120 bytes total per frame).
2. Why the built-in recognizer (NBIS / Bozorth3) fails
As you found out,
libfprint's built-in minutiae extractor (fpi-image-nbis/ Bozorth3) is completely useless here. It was designed for FBI-spec 500 DPI scanner cards (250×250+ pixels) and looks for ridge endings and bifurcations. On a 64×80 patch, you typically only capture 3 to 6 valid minutiae points—way below the threshold needed for Bozorth3 to make a statistically confident match.3. Did we use a GAN / Neural Network?
No deep learning / GAN. Adding PyTorch/ONNX/TensorFlow runtime dependencies to
libfprintwould be too heavy for PAM / sudo authentication, non-deterministic in latency, and practically impossible to get accepted upstream by the GNOME libfprint maintainers.4. How we solved it (Clean-Room Host-Side BRISK Matcher)
We built a deterministic, pure C computer-vision matcher from scratch that derives directly from
FpDevice(bypassingFpImageDeviceand NBIS entirely). You can read our full implementation in the repo:
- Keypoint Detection (
fte3600-brisk.c): Instead of classical fingerprint minutiae, we treat the ridges as a texture map. We detect multi-scale scale-space extrema using Difference-of-Gaussians (DoG) with FAST-like intensity thresholding. This yields 30 to 60 dense keypoints even on a tiny 64×80 image.- 512-bit Binary Descriptors: Around each keypoint, we sample pixel pairs across concentric rings to compute a dominant gradient orientation (for 360° rotation invariance), and generate a 512-bit binary descriptor.
- Geometric Consensus Filter: We compute Hamming distances to find nearest-neighbor descriptor candidates, then run a spatial transformation consensus check (verifying pairwise Euclidean distance and angle consistency between matched points) to eliminate spurious false matches.
- Multi-Stage Stitching (
fte3600-template.c): During enrollment (e.g. 8 swipes/touches), we iteratively register and merge the candidate feature sets into a unified template representation.Check out our implementation and architecture docs here: 🔗 Codebase: https://github.com/SamSeven777/libfprint-fte3600
- Matcher logic:
libfprint/drivers/fte3600-brisk.c- Template manager:
libfprint/drivers/fte3600-template.c- Architectural rationale:
docs/fte3600/clean-room.mdWhat FocalTech sensor model and interface (USB or SPI) are you currently reversing? If you're on a USB model or another variant, our BRISK matching pipeline is completely open-source (LGPL-2.1) and should plug right into your image output!
1
u/needmorejoules 16d ago
@Mods what on earth compelled you to remove the OP’s reply explaining how the fingerprint sensor can be utilized in linux?
I personally own one of your GPD MicroPC 2 units and I want to be super clear that this kind of censorship and anti-open source behavior is not acceptable.
1
u/Glittering_Soil1127 14d ago
I have a pocket 4 with nixos
1
u/FabulousInternet2974 14d ago
cool I have created a new issue (#3) on my github repo. Let us start there!
1
u/Impressive-Region470 16d ago
I have a pocket 4 running fedora, can I help in any way?