Skip to content

Add support for Validity sensor 138a:0092 (HP EliteBook x360 1030 G2)#259

Open
milad-o wants to merge 3 commits into
uunicorn:masterfrom
milad-o:device/0092-merge
Open

Add support for Validity sensor 138a:0092 (HP EliteBook x360 1030 G2)#259
milad-o wants to merge 3 commits into
uunicorn:masterfrom
milad-o:device/0092-merge

Conversation

@milad-o
Copy link
Copy Markdown

@milad-o milad-o commented May 27, 2026

Summary

This PR adds support for the Validity VFS7552 fingerprint sensor with USB ID 138a:0092, found in HP EliteBook x360 1030 G2 and similar HP laptops. The sensor uses the 0x1825 firmware type.

Changes

1. Device registration (usb.py, blobs.py, firmware_tables.py)

  • Add DEV_92 = (0x138a, 0x0092) to SupportedDevices
  • Map to blobs_9d (same blob set as similar sensors)
  • Add firmware partition table entries for DEV_92

2. Finger detection fix (sensor.py)

  • Root cause: The 0x1825 firmware does not understand chunk type 0x4e (used by newer sensors like 0x199). When sent 0x4e, it captures immediately without waiting for a finger, producing invalid data.
  • Fix: Use chunk 0x26 with adjusted threshold parameters (0x5400/0x3400 instead of 0x8700/0x6700) for both IDENTIFY and ENROLL modes.
  • Set calibration_iterations = 2 for 0x1825 (the 0x199 uses 3).

3. USB initialization (init.py)

  • Add USB device reset + 1s delay before TLS handshake for 0092, preventing stale-state timeout issues.

Testing

Tested on HP EliteBook x360 1030 G2 (Fedora 44, kernel 7.0.10):

  • ✅ Device detection and TLS handshake
  • ✅ Calibration (2 iterations)
  • ✅ Finger detection (sensor correctly waits for finger placement)
  • ✅ Enrollment (12 scans per finger)
  • ✅ Identification (matches enrolled fingers reliably)
  • ✅ D-Bus service integration with open-fprintd
  • ✅ KDE Plasma System Settings fingerprint management
  • ✅ PAM authentication (sudo, lock screen, SDDM login)
  • ✅ Multiple finger enrollment (right-index, left-index)

Relationship to device/0092 branch

This PR is a cleaned-up minimal subset of the existing device/0092 branch. The branch contains additional calibration improvements (scale_mul/scale_div, numpy float32 logic) that are not strictly necessary for basic functionality and can be added as a follow-up.

Hardware Info

Bus 001 Device 003: ID 138a:0092 Validity Sensors, Inc.
Sensor type: 0x1825
ROM: product=0x30 major=0x6 minor=0x7 build=0xa4
Firmware: SoftwareId = StgWindsor

milad-o added 3 commits May 27, 2026 18:21
Add DEV_92 (0x138a, 0x0092) to SupportedDevices in usb.py.
Map device 0x0092 to use blobs_9d in blobs.py.
Add proper firmware partition table entries for DEV_92 in firmware_tables.py.

This sensor is found in HP EliteBook x360 1030 G2 and similar HP laptops.
It uses sensor type 0x1825 with ROM product=0x30 major=0x6 minor=0x7.
The 0x1825 sensor firmware does not understand chunk type 0x4e used by newer
sensors for finger detection during IDENTIFY mode. Instead, it requires
chunk 0x26 with adjusted threshold parameters for both IDENTIFY and ENROLL.

Key changes:
- IDENTIFY mode: Use chunk 0x26 (not 0x4e) with threshold bytes 0x5400/0x3400
- ENROLL mode: Use chunk 0x26 with same adjusted threshold parameters
- Set calibration_iterations=2 for 0x1825 (differs from 0x199 which uses 3)

Without this fix, the sensor captures immediately without waiting for a finger
to be placed, resulting in empty/invalid fingerprint data.

Tested on HP EliteBook x360 1030 G2 with successful enrollment and
identification of multiple fingers.
The 0092 sensor requires a USB device reset before establishing TLS
communication, otherwise the first USB bulk transfer times out. This adds
a reset + 1 second delay in init.open() when the device is detected.

This workaround is necessary on Linux where the sensor may be in a stale
state from a previous session or from being previously claimed by another
driver.
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