Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DigitalPersona U.are.U SDK & Fingerprint Microservice for Linux

Platform: Linux SDK: DigitalPersona U.are.U Protocol: HTTP/REST License: Proprietary / Enterprise

Enterprise-grade Linux driver integration and lightweight C-based HTTP REST microservice for DigitalPersona / Crossmatch U.are.U biometric fingerprint readers.


Overview

This repository provides all required packages, runtime libraries, configuration files, and an embedded HTTP microservice allowing web-based kiosk terminals, web applications (Angular, React, Vue), and desktop frontends to communicate seamlessly with USB fingerprint hardware on Linux operating systems.

Key Capabilities

  • Direct Hardware Bridge: Communicates directly with DigitalPersona hardware via low-level C API (libdpfpdd, libdpfj).
  • RESTful Endpoints: Built-in HTTP server powered by GNU libmicrohttpd supporting CORS out of the box.
  • Base64 Bitmap Stream: Converts captured biometric scans into standard Base64-encoded BMP images for direct frontend rendering.
  • Production-Ready Daemon: Includes Systemd unit configurations and desktop autostart scripts for unattended kiosk setups.

Supported Hardware

  • DigitalPersona / Crossmatch U.are.U Series: 4500, 5100, 5200, 5300
  • Eikon Series: Eikon 510, 710, Eikon2
  • Architecture: Linux x86_64 / x64 (ARM and ARMHF supported via SDK redist tarballs)

Repository Structure

.
├── Crossmatch/                # DigitalPersona runtime libraries (x64 and Java)
│   └── urusdk-linux/
│       └── Linux/
│           └── lib/
│               ├── java/      # Java bindings (dpuareu.jar)
│               └── x64/       # Core shared libraries (*.so)
├── finger/                    # C HTTP Microservice source code
│   ├── Makefile               # Build script for gcc & libmicrohttpd
│   ├── execute_fingerprint.sh # Startup execution wrapper script
│   ├── restart-service.sh     # Session termination / restart script
│   ├── restart-fingerprint-service.desktop # Desktop launcher
│   ├── fingerprint_capture.c  # Biometric capture & BMP image conversion
│   ├── fingerprint_capture.h  # Capture function definitions & structures
│   ├── fingerprint_selection.c# Device enumeration & opening logic
│   ├── fingerprint_selection.h# Selection function prototypes
│   └── fingerprint_server.c   # Multi-port HTTP REST server implementation
├── sdk/                       # Official vendor installer & documentation
│   ├── Docs/                  # PDF developer & platform guides
│   ├── README.txt             # Vendor release notes & hardware requirements
│   └── sdk/                   # Official installation binaries & scripts
├── systemd/                   # Systemd service unit files
│   └── digitalpersona-fingerprint.service
├── INSTALLATION.md            # Detailed installation and setup manual
├── restart-fingerprint-service.desktop # Desktop shortcut for restarting service
└── README.md                  # Project documentation

Quick Start

1. Prerequisites

Install compiler tools and development libraries:

sudo apt update
sudo apt install -y build-essential libmicrohttpd-dev tmux

2. Configure Dynamic Libraries & Udev Rules

Refer to INSTALLATION.md for full setup instructions:

# Link libraries
sudo cp -r Crossmatch /usr/lib/
sudo bash -c 'echo -e "/usr/lib/Crossmatch/urusdk-linux/Linux/lib/java\n/usr/lib/Crossmatch/urusdk-linux/Linux/lib/x64" > /etc/ld.so.conf.d/digitalpersona.conf'
sudo ldconfig

# Reload udev USB rules
sudo cp /opt/Crossmatch/urusdk-linux/redist/*.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

3. Build & Run Microservice

cd finger
make
./finger

REST API Reference

The microservice runs an HTTP daemon on localhost:

1. Check Connection Status

  • URL: http://127.0.0.1:5050/isConnected
  • Method: GET
  • CORS: Access-Control-Allow-Origin: *
  • Response (Connected):
    {
      "message": "Fingerprint reader connected",
      "type": "true"
    }
  • Response (Disconnected):
    {
      "message": "Fingerprint reader not connected",
      "type": "false"
    }

2. Capture Fingerprint

  • URL: http://127.0.0.1:5050/Connect
  • Method: GET
  • Description: Waits for finger placement, captures biometric features, generates a BMP image, and returns the Base64 image payload.
  • Response (Success):
    {
      "message": "<base64_bmp_data>",
      "type": "true",
      "serial_num_divice": "5000216000000000"
    }
  • Response (Failure / Timeout):
    {
      "message": "Error capturing fingerprint",
      "type": "false",
      "serial_num_divice": "5000216000000000"
    }

3. Cancel Active Session

  • URL: http://127.0.0.1:5051/close
  • Method: GET
  • Description: Cancels any in-progress capture session.
  • Response:
    {
      "message": "Fingerprint capture canceled",
      "type": "true"
    }

Production Deployment (Systemd)

To ensure the microservice automatically starts upon system boot and recovers on failure:

sudo cp -r finger /opt/Crossmatch/urusdk-linux/Linux/
sudo cp systemd/digitalpersona-fingerprint.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable digitalpersona-fingerprint.service
sudo systemctl start digitalpersona-fingerprint.service

View live logs:

sudo journalctl -u digitalpersona-fingerprint.service -f

License & Compliance

The DigitalPersona U.are.U SDK binaries and shared objects are proprietary to Crossmatch Technologies, Inc. / DigitalPersona, Inc. Refer to sdk/Docs/EULA_SDK.txt for licensing terms and usage restrictions.

About

DigitalPersona U.are.U SDK & Fingerprint Microservice for Linux.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages