LlrpSdk 2.0.5

dotnet add package LlrpSdk --version 2.0.5
                    
NuGet\Install-Package LlrpSdk -Version 2.0.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LlrpSdk" Version="2.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LlrpSdk" Version="2.0.5" />
                    
Directory.Packages.props
<PackageReference Include="LlrpSdk" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LlrpSdk --version 2.0.5
                    
#r "nuget: LlrpSdk, 2.0.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LlrpSdk@2.0.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LlrpSdk&version=2.0.5
                    
Install as a Cake Addin
#tool nuget:?package=LlrpSdk&version=2.0.5
                    
Install as a Cake Tool

LlrpSdk

LlrpSdk is the managed .NET API for connecting to one RFID reader and running the normal reader workflow. It hides versioned LLRP messages and resource lifecycles behind LlrpReader, ReaderSettings, and InventorySession.

What It Provides

  • LLRP 1.0.1 and 1.1 connection and version negotiation;
  • managed Reader Settings defaults, validation, query, apply, and clear;
  • managed inventory start, monitoring, stop, and report streams;
  • translated TagReport values;
  • standard C1G2 tag memory read, write, lock, kill, and block erase operations;
  • protocol modules and vendor extensions without an ImpinjReader inheritance tree.

Quick Start

using LlrpSdk;

await using LlrpReader reader = LlrpReader.CreateBuilder("192.0.2.10")
    .WithPort(5084)
    .Build();

await reader.ConnectAsync();

ReaderSettings settings = (await reader.GetDefaultSettingsAsync()).Settings;
await reader.ApplySettingsAsync(settings);

await using InventorySession session = await reader.StartInventoryAsync();
await foreach (TagReport report in session.ReadReportsAsync())
{
    Console.WriteLine(report.Epc);
}

await reader.StopAsync();

ValidateSettingsAsync() can be called before ApplySettingsAsync() and does not send protocol messages. ApplySettingsAsync() deploys managed settings in a stopped state; StartInventoryAsync() starts the deployed inventory and returns an isolated report stream.

The SDK has two control planes. The managed plane owns ROSpec 14150, AttachedData AccessSpec 14151, and temporary Tag Access resources. The expert plane is exposed by reader.RoSpecs, reader.AccessSpecs, and reader.Protocol side-by-side; it is available whenever the connection is Ready and callers own the resource lifecycle. Expert writes end an active managed session and mark ObservedState stale while retaining DesiredSettings. There is no separate resource-mode gate: expert resource operations are available whenever the connection is Ready.

When a resource write or exact raw frame makes the device observation stale, the desired inventory settings remain available. High-level APIs can reconcile the SDK-reserved resources immediately; the default PreserveForeign policy leaves foreign ROSpecs and AccessSpecs untouched. Use the overload accepting ResourceTakeoverPolicy.ReplaceAll only when deleting every standard resource is intentional. SynchronizeStateAsync() refreshes the observed resource snapshot and is useful for inspection, but it is not required before a managed operation. StartExistingRoSpecAsync(id) can attach a report session to an expert/raw-created ROSpec without compiling, replacing, or deleting it.

ReaderCapabilities.ResourceLimits exposes nullable ROSpec, AccessSpec, graph, OpSpec, priority, and C1G2 select-filter limits. A zero is an explicit device limit; null means the reader did not report that capability. Managed deployment preflights final capacity under PreserveForeign (the default) or explicit ReplaceAll before changing reader resources.

For connection-wide observation, use TagsReported or ReadTagReportsAsync(); these observer outlets are mutually exclusive with the session stream during an active inventory. When a reader omits the optional ROSpecID, the SDK-owned exclusive session still accepts non-conflicting inventory reports. Do not consume both InventorySession.ReadReportsAsync() and an observer outlet for the same inventory. For direct LLRP messages, expert ROSpec/AccessSpec ownership, or protocol generation, use the lower-level LlrpNet projects.

License And Standard

  • This SDK is distributed under the MIT License.
  • LLRP 1.0.1 and 1.1 are open standards published by GS1/EPCglobal.
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on LlrpSdk:

Package Downloads
LlrpSdk.Extensions.Impinj

Impinj RFID reader extension plugin for LlrpSdk, providing UseImpinj(), custom capabilities, Serialized TID, RF Phase, and Impinj extensions.

LlrpSdk.Extensions.Zebra

Zebra (Moto) RFID reader extension plugin for LlrpSdk, providing UseZebra(), reader configuration, inventory report options, and tag-report phase/GPS/XPC projections.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.5 157 8/31/2026
2.0.4 143 8/27/2026
2.0.3 170 8/22/2026
2.0.1 190 8/20/2026
2.0.0 139 8/19/2026
1.5.0 133 8/18/2026
1.4.0 142 8/14/2026
1.3.0 111 8/12/2026
1.2.1 110 8/11/2026
1.2.0 109 8/7/2026
0.9.0 115 8/7/2026
0.8.0 142 8/5/2026
0.7.2 124 8/5/2026
0.7.1 125 8/4/2026
0.7.0 122 8/4/2026
0.6.0 128 8/4/2026
0.5.0 120 8/3/2026
0.4.0 122 8/3/2026
0.3.1 132 7/31/2026
0.3.0 122 7/30/2026
Loading failed