SVappsLAB.iRacingTelemetrySDK 1.0.0

Prefix Reserved
dotnet add package SVappsLAB.iRacingTelemetrySDK --version 1.0.0
                    
NuGet\Install-Package SVappsLAB.iRacingTelemetrySDK -Version 1.0.0
                    
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="SVappsLAB.iRacingTelemetrySDK" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SVappsLAB.iRacingTelemetrySDK" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="SVappsLAB.iRacingTelemetrySDK" />
                    
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 SVappsLAB.iRacingTelemetrySDK --version 1.0.0
                    
#r "nuget: SVappsLAB.iRacingTelemetrySDK, 1.0.0"
                    
#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 SVappsLAB.iRacingTelemetrySDK@1.0.0
                    
#: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=SVappsLAB.iRacingTelemetrySDK&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=SVappsLAB.iRacingTelemetrySDK&version=1.0.0
                    
Install as a Cake Tool

iRacing Telemetry SDK for C# .NET

High-performance .NET SDK for accessing live telemetry data from iRacing simulator and IBT file playback. Features compile-time code generation for strongly-typed telemetry access with lock-free performance optimizations.

Why Use This SDK?

  • Type Safety: Enum-based telemetry variables with IntelliSense/Copilot support and compile-time validation
  • High Performance: Processes 600,000+ telemetry records/second with lock-free data streaming architecture
  • Background Processing: Dedicated threads for telemetry collection and processing - your app's processing speed never blocks the streaming telemetry data
  • Modern Async API: Async data streams with async/await patterns and automatic backpressure handling
  • Live Telemetry: Real-time access to speed, RPM, tire data, and 200+ variables during iRacing sessions
  • IBT File Support: Cross-platform playback of historical telemetry using the same strongly-typed API
  • Robust Buffering: 60-sample ring buffer (1 second at 60Hz) ensures reliable data delivery even when your app can't keep pace

Architecture Benefits

Production-Ready Data Streaming:

  • 60-sample ring buffer provides 1 second of buffering at iRacing's 60Hz update rate
  • FIFO with drop-oldest strategy automatically handles backpressure when your processing can't keep up
  • Never blocks the iRacing data stream - always prioritizes the most recent telemetry
  • Prevents memory exhaustion - bounded buffers protect against slow consumer scenarios
  • Zero data loss when your app processes faster than 60Hz (~16ms per sample)

This architecture means your dashboard or analysis tool stays responsive and current, even during CPU-intensive operations like rendering charts or writing to disk.

Use Cases

Perfect for building:

  • Real-time Dashboards - Display live telemetry on secondary screens
  • Data Analysis Tools - Analyze racing performance from IBT files
  • Race Engineering Apps - Track tire wear, fuel consumption, lap times
  • Telemetry Visualizations - Create charts and graphs from historical data

Installation

dotnet add package SVappsLAB.iRacingTelemetrySDK

Quick Start

using Microsoft.Extensions.Logging;
using SVappsLAB.iRacingTelemetrySDK;

// 1. Define the telemetry variables you want to track
// Source generator creates strongly-typed TelemetryData struct at compile-time
[RequiredTelemetryVars([TelemetryVar.Speed, TelemetryVar.RPM])]

public class Program
{
    public static async Task Main(string[] args)
    {
        // 2. Create logger
        var logger = LoggerFactory.Create(builder => builder.AddConsole())
                                  .CreateLogger("Simple.Program");

        // 3. Choose data source
        IBTOptions? ibtOptions = null;  // null for live telemetry from iRacing
                                        // = new IBTOptions("gt3_spa.ibt");  // IBT file path for playback

        // 4. Create telemetry client
        await using var client = TelemetryClient<TelemetryData>.Create(logger, ibtOptions);
        using var cts = new CancellationTokenSource();

        // 5. Subscribe to telemetry and sessionInfo streams
        var subscriptionTask = client.SubscribeToAllStreams(
            onTelemetryUpdate: async data =>
            {
                Console.WriteLine($"Speed: {data.Speed}, RPM: {data.RPM}");
            },
            onSessionInfoUpdate: async session =>
            {
                Console.WriteLine($"Track: {session.WeekendInfo.TrackName}, Drivers: {session.DriverInfo.Drivers.Count}");
            },
            onConnectStateChanged: async state =>
            {
                Console.WriteLine($"Connection state: {state}"); // Connected, Disconnected
            },
            cancellationToken: cts.Token
        );

        // 6. Start monitoring (iRacing data will be processed by your subscription handlers)
        var monitorTask = client.Monitor(cts.Token);

        await Task.WhenAny(monitorTask, subscriptionTask);
    }
}

Requirements

  • .NET 8.0+

Documentation & Examples

License

Apache License 2.0 - See LICENSE for details.

Product 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 was computed.  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

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.0.0 284 11/23/2025
1.0.0-beta.4 216 11/10/2025
1.0.0-beta.3 143 11/2/2025
1.0.0-beta.2 130 10/20/2025
1.0.0-beta.1 130 10/13/2025
1.0.0-alpha.4 141 9/30/2025
1.0.0-alpha.3 116 9/28/2025
1.0.0-alpha.2 133 9/26/2025
1.0.0-alpha.1 104 9/5/2025
0.9.8.3 201 8/1/2025
0.9.8.1 175 7/31/2025
0.9.8 157 7/27/2025
0.9.7 189 7/7/2025
0.9.6 174 7/1/2025
0.9.5 184 6/15/2025
0.9.4 180 6/14/2025
0.9.3 143 6/1/2025
0.9.2 254 5/12/2025
0.9.1 199 4/30/2025
0.9.0 311 3/9/2025
0.8.0 178 2/10/2025
0.7.0 188 12/8/2024
0.6.7 158 10/13/2024
0.6.5 147 9/28/2024
0.6.3 167 9/17/2024
0.6.2 161 9/14/2024
0.6.1 169 9/9/2024
0.6.0 185 8/27/2024
0.5.0 188 8/17/2024
0.4.8 169 7/20/2024
0.1.7-beta 176 7/20/2024 0.1.7-beta is deprecated because it is no longer maintained.
0.1.6-beta 157 7/20/2024 0.1.6-beta is deprecated because it is no longer maintained.