rfIDEAS.ReaderIntegrationKit
1.7.0
dotnet add package rfIDEAS.ReaderIntegrationKit --version 1.7.0
NuGet\Install-Package rfIDEAS.ReaderIntegrationKit -Version 1.7.0
<PackageReference Include="rfIDEAS.ReaderIntegrationKit" Version="1.7.0" />
<PackageVersion Include="rfIDEAS.ReaderIntegrationKit" Version="1.7.0" />
<PackageReference Include="rfIDEAS.ReaderIntegrationKit" />
paket add rfIDEAS.ReaderIntegrationKit --version 1.7.0
#r "nuget: rfIDEAS.ReaderIntegrationKit, 1.7.0"
#:package rfIDEAS.ReaderIntegrationKit@1.7.0
#addin nuget:?package=rfIDEAS.ReaderIntegrationKit&version=1.7.0
#tool nuget:?package=rfIDEAS.ReaderIntegrationKit&version=1.7.0
rfIDEAS.ReaderIntegrationKit
A .NET library for communicating with rf IDEAS readers using a high-level reader interface. This package wraps the Reader Integration Kit native library, providing easy integration for .NET applications on Windows, Linux (x64, ARM64, and 32-bit ARM hard-float), and macOS 12.0+ (Intel + Apple Silicon).
Features
- High-level reader API for reader operations
- Support for WaveID reader types
- Native library support for Windows (x64), Linux (x64), Linux ARM64 (generic + Raspberry Pi 5), Linux 32-bit ARM (ARMhf), and macOS 12.0+ (Intel x86_64 + Apple Silicon arm64, universal binary)
- .NET 8.0 and .NET 10.0 compatibility
- Distributed via NuGet
Getting Started
- Install via NuGet:
dotnet add package rfIDEAS.ReaderIntegrationKit - Add the using directives:
using rfIDEAS.ReaderIntegrationKit; using rfIDEAS.ReaderIntegrationKit.Objects; using rfIDEAS.ReaderIntegrationKit.Enum;
Prerequisites
- Windows 10/11 (x64), Linux x64, Linux ARM64 / ARMhf (Ubuntu 24.04+ or equivalent), or macOS 12.0 (Monterey) or later (Intel x86_64 or Apple Silicon arm64)
- A connected rf IDEAS reader (USB or serial), e.g. WaveID
- .NET 8.0 or later (the package targets .NET 8.0 and .NET 10.0)
- Windows: No additional setup required
- Linux: Appropriate udev rules may be required for USB reader access
- macOS: No
sudo/ root and no App Sandbox HID/USB entitlements are required for CLI or non-sandboxed apps on macOS 12.0 Monterey and later (Intel x86_64 and Apple Silicon arm64). Reader discovery does not require Input Monitoring. Opening a keyboard-class HID collection (typical for current rf IDEAS readers) may require an Input Monitoring (kTCCServiceListenEvent) grant on the responsible process — often the host app such as Terminal.app, not the RIK binary itself. Headless or LaunchDaemon hosts can discover readers but still fail to open them when no console TCC identity is available.
Supported Platforms
| Platform | Runtime Identifier | Native Library Path (inside package) |
|---|---|---|
| Windows x64 | win-x64 |
runtimes/win-x64/native/ReaderIntegrationKit.dll |
| Linux x64 | linux-x64 |
runtimes/linux-x64/native/libReaderIntegrationKit.so |
| Linux ARM64 (generic) | linux-arm64 |
runtimes/linux-arm64/native/libReaderIntegrationKit.so |
| Linux ARM64 (Raspberry Pi 5) | linux-arm64 |
runtimes/linux-arm64/native/libReaderIntegrationKit.pi5.so |
| Linux ARM 32-bit (ARMhf) | linux-arm |
runtimes/linux-arm/native/libReaderIntegrationKit.so |
| macOS 12+ (Intel x86_64) | osx-x64 |
runtimes/osx-x64/native/libReaderIntegrationKit.dylib |
| macOS 12+ (Apple Silicon arm64) | osx-arm64 |
runtimes/osx-arm64/native/libReaderIntegrationKit.dylib |
Native libraries are included in the NuGet package and are automatically resolved at runtime for supported platforms.
osx-universal fallback:
runtimes/osx-universal/native/libReaderIntegrationKit.dylibis included for environments that do not resolve a specific RID.
ARM64: generic vs. Raspberry Pi 5
The package ships two ARM64 builds in runtimes/linux-arm64/native/:
libReaderIntegrationKit.so— portable aarch64 build, runs on any ARMv8-A device.libReaderIntegrationKit.pi5.so— build optimised for the Raspberry Pi 5 (-mcpu=cortex-a76).
At runtime the loader selects the variant via RIK_ARM_VARIANT when set (pi5 or generic);
otherwise it reads /proc/device-tree/model and falls back to generic.
Set RIK_ARM_VARIANT=pi5 to force the Pi 5-optimised build, or RIK_ARM_VARIANT=generic
for the portable build.
Note:
dotnet publish -r linux-arm64flattens native libraries to the publish output root. Theruntimes/directory tree is not present in a RID-targeted publish output. Do not configure your application to look for natives underruntimes/after a RID-targeted publish.
Keystroking Behavior
RIK opens readers non-exclusively. If a reader is configured in keystroking mode,
it will continue to send keystrokes to the focused application while RIK is
connected. This is intended behavior. Applications that connect to readers
potentially configured for keystroking should account for simultaneous keystroke
delivery when designing their input handling — for example by calling
EnableKeystroking(false) before connecting, or by ensuring no sensitive input
field is focused during card reads.
Usage Example
WaveID Reader
using rfIDEAS.ReaderIntegrationKit;
using rfIDEAS.ReaderIntegrationKit.Objects;
using rfIDEAS.ReaderIntegrationKit.Enum;
var readerDefinition = new ReaderDefinition
{
DeviceId = new DeviceId { VendorId = 0x0c27, ProductId = 0x3bfa },
ProtocolType = ProtocolType.FeatureReport
};
using var reader = new Reader(readerDefinition);
reader.Init();
// Get reader metadata (populated lazily on first access)
var metadataStruct = reader.GetMetadata();
Console.WriteLine($"Part Number: {metadataStruct.PartNumber}");
// Force refresh metadata from device
metadataStruct = reader.GetMetadata(forceRefresh: true);
// Beep the reader
reader.Beep(2, BeepDuration.BeepDurationShort);
// Get beeper volume
var volume = reader.GetBeeperVolume();
Console.WriteLine($"Beeper Volume: {volume}");
// Set beeper volume
reader.SetBeeperVolume(BeepVolume.High);
Documentation
For integration guides and complete API reference, see the rf IDEAS Documentation.
License
This package is distributed under the rf IDEAS End-User License Agreement (EULA). By installing or
using this package, you agree to the terms of the EULA included in the package. See the rfIDEAS_EULA.txt
file distributed with this package for full terms and conditions.
Copyright rf IDEAS, Inc. All rights reserved.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.7.0 | 49 | 9/14/2026 |
| 1.6.1 | 59 | 9/3/2026 |
| 1.6.0 | 43 | 9/2/2026 |
| 1.5.1 | 79 | 8/26/2026 |
| 1.5.0 | 52 | 8/21/2026 |
| 1.4.5 | 70 | 8/3/2026 |
| 1.4.4 | 58 | 7/28/2026 |
| 1.4.3 | 82 | 7/13/2026 |
| 1.4.2 | 66 | 6/22/2026 |
| 1.4.1 | 79 | 6/2/2026 |
| 1.4.0 | 63 | 6/1/2026 |
| 1.3.0 | 287 | 5/20/2026 |
| 1.2.0 | 86 | 4/14/2026 |
| 1.1.0 | 70 | 4/7/2026 |
| 1.0.1 | 74 | 3/28/2026 |