Skip to content

feat(systemd): add robust resume service for sensor re-initialization#1

Open
sidneijp wants to merge 2 commits into
masterfrom
fix-resume-reliability
Open

feat(systemd): add robust resume service for sensor re-initialization#1
sidneijp wants to merge 2 commits into
masterfrom
fix-resume-reliability

Conversation

@sidneijp
Copy link
Copy Markdown
Owner

@sidneijp sidneijp commented May 17, 2026

feat(systemd): add robust resume service for sensor re-initialization

Problem

Fingerprint sensor fails to re-initialize correctly after system suspend/hibernate on modern kernels. The python3-validity service loses its connection to the hardware or enters an inconsistent state, preventing fingerprint authentication upon resume.

Solution

Add a dedicated systemd resume service python3-validity-resume.service that explicitly restarts python3-validity.service and open-fprintd.service when the system wakes up. This ensures a clean state for the driver and the fprintd bridge.

Environment Information

Hardware

  • Device: Synaptics, Inc. Metallica MIS Touch Fingerprint Reader
  • USB ID: 06cb:009a
  • Host System: ThinkPad T480 (Model: <GENERIC_LAPTOP_MODEL>)

Software

  • OS: Ubuntu 26.04 LTS (Resolute Raccoon)
  • Kernel: 7.0.0-15-generic
  • Display Manager: SDDM 0.21.0 (KDE Plasma/Breeze)
  • PAM: libpam-modules 1.7.0, libpam-systemd 259.5
  • Related Services:
    • open-fprintd (0.7~ppa2)
    • python3-validity (0.15+)

Changes

  • Created debian/python3-validity-resume.service to trigger on resume targets.
  • Updated debian/rules to ensure proper installation.
  • Includes a D-Bus 'readiness gate' via ExecStartPost to ensure the driver is responsive before the service is marked finished.

Steps to Reproduce

  1. Complete hardware/firmware setup and enroll fingerprints.
  2. Verify initial fingerprint authentication works (e.g., sudo or login).
  3. Suspend the system (Sleep/Hibernate).
  4. Resume the system.
  5. Attempt fingerprint authentication.
    • Observed Behavior (without fix): Sensor is unresponsive or returns USBError [Errno 19]. User is forced to use password fallback.

Validation Steps

  1. Install the updated package including python3-validity-resume.service.
  2. Suspend the system.
  3. Resume the system.
  4. Verify the python3-validity-resume.service triggered successfully: systemctl status python3-validity-resume.service.
  5. Verify fingerprint authentication works at the login/lock screen.
  6. Verify sudo <command> correctly prompts for fingerprint authentication (if enabled in PAM).

Resolves uunicorn#254.

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.

Fingerprint reader fails on resume; insufficient resume strategy: proposal fix

1 participant