Enterprise-grade Linux driver integration and lightweight C-based HTTP REST microservice for DigitalPersona / Crossmatch U.are.U biometric fingerprint readers.
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.
- Direct Hardware Bridge: Communicates directly with DigitalPersona hardware via low-level C API (
libdpfpdd,libdpfj). - RESTful Endpoints: Built-in HTTP server powered by
GNU libmicrohttpdsupporting 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.
- 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)
.
├── 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
Install compiler tools and development libraries:
sudo apt update
sudo apt install -y build-essential libmicrohttpd-dev tmuxRefer 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 triggercd finger
make
./fingerThe microservice runs an HTTP daemon on localhost:
- 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" }
- 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" }
- URL:
http://127.0.0.1:5051/close - Method:
GET - Description: Cancels any in-progress capture session.
- Response:
{ "message": "Fingerprint capture canceled", "type": "true" }
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.serviceView live logs:
sudo journalctl -u digitalpersona-fingerprint.service -fThe 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.