OpenRFID Android Handheld Middleware & UHF SDK
Universal Android native SDK & background middleware service app for industrial handheld RFID terminals (Chainway, Zebra, Honeywell, Seuic).
Watch Video Walkthrough Before Using
RFID Stock Management System | Handheld Bulk Reading, Tracking & Anti-Theft
View Dedicated Video Page & Notes →Watch real-world industrial UHF handheld terminal bulk scanning (Chainway C72 & AUTOID), Geiger-counter audio locate mode, and live inventory audit sync.
Project Overview & Architecture
Production-ready, universal Android native SDK and background middleware service engineered to standardize RFID hardware integration across fragmented industrial handheld terminals and sled devices (Chainway C72/C71/C66, Zebra TC26/MC3300R/RFD8500, Seuic AutoID9U, ATID AT911N, Honeywell). Built with a reflection-based Hardware Abstraction Layer (UhfReaderManager.kt), it auto-detects underlying Impinj E710 & R2000 UHF modules to deliver high-velocity tag inventory (200+ tags/second), dynamic RF power adjustment (5 dBm to 30 dBm), audio Geiger counter asset locating with visual RSSI heatmaps, and simultaneous 2D optical barcode scanning. Includes a persistent background Android Foreground Service with encrypted SQLite offline buffering and automatic REST API / MQTT webhook synchronization.
4-Tier Edge Pipeline Architecture
Hardware Detection
Dynamically probes serial UART ports and Android USB/Bluetooth interfaces to identify connected reader chips.
Inventory Stream
Executes low-latency C/C++ native callbacks streaming EPC, TID, and RSSI telemetry at 200+ tags/sec.
Geiger & Feedback
Calculates normalized signal strength to trigger pitch-modulated audio beeps and visual heatmaps.
Foreground Service
Maintains persistent SQLite queue for offline warehouse zones; dispatches HTTP webhooks on Wi-Fi reconnect.
Supported Handheld Terminals & Driver Matrix
| Hardware Vendor | Models | Communication Bus | UHF Module | Native Driver |
|---|---|---|---|---|
| Chainway | C72, C71, C66, C61 | Internal UART (/dev/ttyMT2 @ 115200) | Impinj E710 / R2000 | cw-deviceapi20191022.jar |
| Zebra Technologies | MC3300R, RFD8500, RFD40/90 | IPC / Bluetooth RFCOMM | Zebra Custom Gen2 | rfidapi3lib-2.0.5.275.aar |
| Seuic | AutoID9U, UF3 Industrial | Internal Serial Bus | ThingMagic / Impinj | uhf.jar & scankey.jar |
| ATID Korea | AT911N, AB700 Handhelds | Internal UART Bus | Phychips / Impinj | atid.dev.rfid.jar |
Feature Benchmark: OpenRFID Solution vs. Proprietary Alternatives
| Feature Capability | OpenRFID Solution (MIT) | Commercial Paid Solutions | Hardware Rig / Manual |
|---|---|---|---|
| SDK License & Code Access | 100% Free & Open Source (MIT) | Proprietary SDK ($1,500 / App) | Vendor Closed-Source Jar |
| Multi-Vendor Handheld Support | ✓ Single APK runs on Chainway, Zebra, Seuic, ATID | Separate SDK builds per hardware vendor | Strictly single vendor only |
| Audio Geiger Counter Search | ✓ Built-in Pitch-Modulated RSSI Feedback | Basic RSSI bar without audio | Requires vendor demo app |
| Simultaneous 2D Barcode + RFID | ✓ Dual Hardware Trigger Interceptor | Mode toggle required (cannot scan both) | Hardware button conflict |
| Offline SQLite Queue Service | ✓ Android Foreground Service with Auto-Sync | In-memory list only (lost on app crash) | No built-in storage engine |
CLI Arguments & Configuration Reference
| Parameter / Flag | Type | Default | Description & Action |
|---|---|---|---|
| setPower(5..30) | int | 30 dBm | Configures reader RF output power from 5 dBm (near-field) to 30 dBm (15m+ long range). |
| setSession(S0..S3) | enum | S1 | EPC Gen2 inventory session query parameter for tag population persistence. |
| setTarget(TARGET_A..B) | enum | TARGET_A | Gen2 inventoried flag target state for continuous vs single-sweep tag audits. |
| enableGeiger(epc) | string | null | Activates audio pitch modulation tracking for a specific target EPC hex string. |
| setSyncEndpoint(url) | url | "https://api.erp.local/scans" | Configures background HTTPS webhook endpoint for offline SQLite queue flushing. |
Code & Integration Blueprint
Copyable starter templates, CLI flags, and CI/CD pipelines:
Technical Specifications & Runtime Environment
| Target Architecture | Kotlin / Java / Android Native SDK / Jetpack Compose • MIT Open Source License |
| Supported Protocols | REST API, WebSockets, MQTT, TCP Raw Sockets, Serial RS232 |
| Supported UHF Modules | Impinj E710, Impinj R2000, ThingMagic M6e, Zebra SE4710 |
| Air Interface Protocol | EPC Class 1 Gen 2 / ISO 18000-6C |
| Read Speed | Up to 200+ tags/second bulk inventory |
| Android OS Target | Android 7.0 Nougat through Android 14.0+ |
Key Features & Capabilities
- ✓ Universal Hardware Abstraction Layer (HAL) for Chainway, Zebra, Seuic, and ATID
- ✓ High-Speed UHF Bulk Scanning (200+ Tags/Sec with Impinj E710 & R2000 Modules)
- ✓ Software-Tunable RF Power Output (5 dBm to 30 dBm) for Near-Field & Long-Range (15m+)
- ✓ Audio Geiger Counter Asset Locator with Pitch-Modulated RSSI Signal Feedback
- ✓ Dual Hardware Trigger Interceptor for Simultaneous 2D Barcodes & UHF RFID Tags
- ✓ Persistent Background Android Service with Local SQLite Buffer Queue & REST Sync
- ✓ Gen2 Memory Bank Password Lock & Kill Management (Reserved, EPC, TID, User)
- ✓ Jetpack Compose UI Sample with Real-Time Inventory Table & CSV Export
Related Hardware & Commercial Solutions
Explore compatible RFID readers, pre-built warehouse inventory software, and asset management systems developed by RFID Softwares:
Frequently Asked Questions
Which handheld RFID readers are supported by OpenRFID Handheld Android Middleware? ↓
It supports Chainway (C72, C71, C66), Zebra (TC26, MC3300R, RFD8500), Seuic (AutoID9U), ATID (AT911N), Honeywell, and CipherLab industrial Android handheld terminals.
How does the Universal Hardware Abstraction Layer (HAL) work? ↓
The SDK provides `UhfReaderManager.kt` which utilizes reflection-based device probing. It dynamically binds vendor drivers (e.g. `RFIDWithUHFUART` for Chainway vs `com.zebra.rfid.api3` for Zebra) at runtime, allowing a single APK to run across heterogeneous hardware fleets.
Does the SDK support Impinj E710 and R2000 UHF RFID chipsets? ↓
Yes! The SDK automatically detects the underlying hardware module (Impinj E710 or R2000) and configures optimal UART baud rates (115200) and command frames to achieve 200+ tags/sec scan speeds.
How does the Audio Geiger Counter asset locator work? ↓
The Geiger locator calculates the difference between current tag RSSI (-30 to -85 dBm) and a target threshold. It modulates audio beep frequency and pitch in real time, guiding warehouse operators directly to missing inventory.
Can it scan 2D barcodes and UHF RFID tags simultaneously? ↓
Yes. Dual hardware triggers enable simultaneous 2D optical barcode (Zebra SE4710) scanning and high-speed UHF tag inventory callbacks without driver conflicts.
Does RFID Softwares offer paid customization for mobile RFID apps? ↓
Yes. While community support on GitHub is completely free, our engineering team offers paid custom mobile app development, backend integration, and ERP sync.
Application & SDK Preview

Tested Hardware Devices
Paid Customization & Free Help
We offer free community help on GitHub issues and discussions. If you need bespoke features, customized mobile apps, or dedicated on-site deployment, contact us for paid enterprise integration services.