Low Level Reader Protocol (LLRP v1.0.1 / v1.1)
LLRP provides standard binary message serialization between host middleware and physical RFID readers. It allows granular configuration of reader operations (ROSpecs), antenna ports, RF power (dBm), filter algorithms, and real-time RO_ACCESS_REPORT event notifications.
Core Protocol Architecture & Specifications
- ✓ Standardized binary encoding with 10-bit Message Type and 32-bit Length headers
- ✓ Configurable ROSpec (Reader Operation Specification) with periodic and trigger-based inventory runs
- ✓ Granular antenna port power, sensitivity, and tag dwell time control
- ✓ Real-time RO_ACCESS_REPORT message decoding with Peak RSSI, Antenna ID, and PC/EPC bytes
- ✓ Zero vendor lock-in across Impinj, Zebra, Alien, and generic UHF readers
using System.Buffers.Binary;
public static class LlrpMessageDecoder
{
public const ushort RO_ACCESS_REPORT_MSG_TYPE = 61;
public const ushort PARAM_TAG_REPORT_DATA = 240;
public const ushort PARAM_PEAK_RSSI = 218;
public const ushort PARAM_ANTENNA_ID = 221;
public static List<(string EPC, float RSSI, int Antenna)> DecodeRoAccessReport(byte[] buffer)
{
var tags = new List<(string EPC, float RSSI, int Antenna)>();
if (buffer == null || buffer.Length < 10) return tags;
ushort msgTypeHeader = BinaryPrimitives.ReadUInt16BigEndian(buffer.AsSpan(0, 2));
ushort msgType = (ushort)(msgTypeHeader & 0x03FF);
uint length = BinaryPrimitives.ReadUInt32BigEndian(buffer.AsSpan(2, 4));
if (msgType != RO_ACCESS_REPORT_MSG_TYPE || buffer.Length < length) return tags;
int index = 10;
int maxIndex = (int)length;
while (index + 4 <= maxIndex)
{
ushort paramHeader = BinaryPrimitives.ReadUInt16BigEndian(buffer.AsSpan(index, 2));
ushort paramType = (ushort)(paramHeader & 0x03FF);
ushort paramLength = BinaryPrimitives.ReadUInt16BigEndian(buffer.AsSpan(index + 2, 2));
if (paramLength == 0 || index + paramLength > maxIndex) break;
if (paramType == PARAM_TAG_REPORT_DATA)
{
// Parse EPC-96, RSSI, and Antenna Port
var tag = ParseTagReportData(buffer, index + 4, index + paramLength);
if (!string.IsNullOrEmpty(tag.EPC)) tags.Add(tag);
}
index += paramLength;
}
return tags;
}
} Verified Hardware Implementations
Our engineering team has thoroughly tested and validated LLRP across the following reader models, embedded modules, and smart transponders:
Target Deployments
- High-speed conveyor portals
- Warehouse dock door loading gates
- Automated manufacturing lines
- Multi-antenna smart shelves
Deploy with OpenRFID
Integrate LLRP into your ERP, warehouse software, or custom mobile app with pre-built C# / C++ drivers.