Skip to content

elanspi: Add PID 04F3:3128 support and enable SIGFM OpenCV matcher - #43

Open
manishdhiman1 wants to merge 2 commits into
goodix-fp-linux-dev:sigfmfrom
manishdhiman1:elan-spi-sigfm
Open

elanspi: Add PID 04F3:3128 support and enable SIGFM OpenCV matcher#43
manishdhiman1 wants to merge 2 commits into
goodix-fp-linux-dev:sigfmfrom
manishdhiman1:elan-spi-sigfm

Conversation

@manishdhiman1

@manishdhiman1 manishdhiman1 commented Sep 13, 2026

Copy link
Copy Markdown

Summary

This PR adds support for the ELAN SPI sensor ELAN7001 (PID 04F3:3128, found in ASUS VivoBook X415EA and similar laptops) and switches the elanspi driver to use the OpenCV SIFT matcher (FPI_DEVICE_ALGO_SIGFM).

Problem

The ELAN7001 internal sensor is a small 80×80 pixel matrix. In Linux, it runs in swipe-stitch mode. Because only 1–3 minutiae points can be extracted from each swipe on this small sensor, the default NBIS bozorth3 matcher mathematically fails (always returning score 0 / verify-no-match).

Changes

  1. Added Device ID: Added ACPI ELAN7001 / PID 04F3:3128 with ELANSPI_180_ROTATE to elanspi_id_table.
  2. Enabled SIGFM: Switched algorithm to FPI_DEVICE_ALGO_SIGFM with threshold 30.
  3. Speckle Filter: Added a 7-tap separable Gaussian smoothing pass to clean up capacitive SPI noise before feature extraction.
  4. Frame Debounce Fix: Tolerates momentary 1–2 frame empty dips during continuous swipes (fp_empty_counter <= 2), preventing the driver from prematurely wiping accumulated swipe frames.
  5. Swipe Thresholds: Adjusted real/empty standard deviation thresholds and lowered minimum keypoints in fp-image.c from 25 to 5 to tolerate small swipe profiles.

Testing & Verification

  • Tested on Ubuntu 24.04 LTS (ASUS VivoBook X415EA / 04F3:3128 on spidev0.0).
  • Enrollment completed with all 7 stages passing.
  • Verification achieved genuine match scores of 140 to 399 (threshold 30), allowing reliable authentication across sudo, system login, and fprintd-verify.
  • Unit tests (sigfm-tests): 7/7 passed.

Manish Kumar added 2 commits September 13, 2026 12:08
- Add ELAN7001 / PID 04F3:3128 (ASUS VivoBook) to elanspi_id_table with ELANSPI_180_ROTATE.
- Tune motion standard deviation thresholds (MIN_REAL_STDDEV, MAX_EMPTY_STDDEV).
- Tune swipe frame limits for small 80x80 sensor capture.
- Switch elanspi to FPI_DEVICE_ALGO_SIGFM with threshold 30.
- Add separable Gaussian smoothing pass to suppress capacitive SPI speckle noise.
- Maintain native image resolution to preserve ridge frequency details.
- Tolerate short 1-2 frame empty gaps during continuous finger swipes instead of discarding accumulated frames.
- Lower minimum keypoint requirement in fp-image to prevent rejecting partial swipes.
@manishdhiman1 manishdhiman1 changed the title Elan spi sigfm elanspi: Add PID 04F3:3128 support and enable SIGFM OpenCV matcher Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant