Packet.Ax25 0.21.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Packet.Ax25 --version 0.21.0
                    
NuGet\Install-Package Packet.Ax25 -Version 0.21.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="Packet.Ax25" Version="0.21.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Packet.Ax25" Version="0.21.0" />
                    
Directory.Packages.props
<PackageReference Include="Packet.Ax25" />
                    
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 Packet.Ax25 --version 0.21.0
                    
#r "nuget: Packet.Ax25, 0.21.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 Packet.Ax25@0.21.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=Packet.Ax25&version=0.21.0
                    
Install as a Cake Addin
#tool nuget:?package=Packet.Ax25&version=0.21.0
                    
Install as a Cake Tool

Packet.Ax25

AX.25 v2.2 frame codec + connected-mode session runtime + inbound-connection listener.

The core AX.25 protocol library: a U/S/I frame codec, an SDL-driven connected-mode link-layer state machine, and Ax25Listener — a node-style coordinator that accepts inbound connections, originates outbound ones, and caches a session per peer. It deals in raw AX.25 frame bytes over an IAx25Transport, so it is transport-neutral (KISS, AXUDP, KISS-over-TCP — your choice). Part of Packet.NET, a .NET amateur-radio / AX.25 packet stack.

Install

dotnet add package Packet.Ax25

Quick start

Run a station that answers inbound connections, echoes received data back to the peer, and can also originate outbound links. Ax25Listener takes any IAx25Transport (from Packet.Kiss, Packet.Axudp, etc.):

using Packet.Ax25;
using Packet.Ax25.Session;
using Packet.Ax25.Transport;
using Packet.Core;

// IAx25Transport comes from a transport package (Packet.Kiss, Packet.Axudp, ...).
IAx25Transport transport = /* e.g. a KISS or AXUDP transport */;

await using var listener = new Ax25Listener(transport, new Ax25ListenerOptions
{
    MyCall = new Callsign("N0CALL", 0),
});

// A peer connected to us — wire up its inbound-data stream.
listener.SessionAccepted += (_, e) =>
{
    var session = e.Session;
    session.DataLinkSignalEmitted += (_, signal) =>
    {
        if (signal is DataLinkDataIndication data)
        {
            // Echo whatever the peer sent straight back.
            listener.SendData(session, data.Info);
        }
    };
};

await listener.StartAsync();

// Originate an outbound connection, then send some data on it.
var outbound = await listener.ConnectAsync(new Callsign("Q0PDN", 0));
listener.SendData(outbound, "hello over AX.25"u8.ToArray());

Need just the codec? Build and parse frames directly, no session machinery:

using Packet.Ax25;
using Packet.Core;

// Build a connectionless UI (unproto) frame.
var ui = Ax25Frame.Ui(
    destination: new Callsign("AA1AA", 0),
    source: new Callsign("N0CALL", 0),
    info: "73"u8,
    pid: Ax25Frame.PidNoLayer3);
byte[] kissBytes = ui.ToBytes();        // body only — a KISS TNC adds the FCS
byte[] axudpBytes = ui.ToBytesWithFcs(); // body + CRC-16-CCITT, for AXUDP / AXIP

// Parse a frame back from its on-the-wire (KISS-form) bytes.
if (Ax25Frame.TryParse(kissBytes, out var frame) && frame.IsUi)
{
    Console.WriteLine($"{frame.Source.Callsign} -> {frame.Destination.Callsign}");
}

Key types

  • Ax25Frame — one AX.25 frame; codec for U/S/I/UI frames (mod-8 and extended mod-128), TryParse / ToBytes / ToBytesWithFcs, plus static factories (Ui, Sabm, Sabme, Disc, Ua, Dm, Rr, Rej, Srej, I, Xid, Test, …).
  • Ax25Listener — owns one IAx25Transport; accepts inbound SABM, originates ConnectAsync, caches a session per peer (LRU), and exposes SessionAccepted / FrameTraced events. The node-style entry point.
  • Ax25ListenerOptions — listener config: MyCall, timer overrides (T1V/T2/T3/N2/K), MaxCachedPeers, ParseOptions, Quirks, extended-mode preference.
  • Ax25Session — one connected-mode link's state machine; exposes CurrentState, Context, and the DataLinkSignalEmitted upward-signal stream.
  • DataLinkSignal — the upward signal record hierarchy (DataLinkConnectIndication, DataLinkDataIndication, DataLinkDisconnectIndication, DataLinkErrorIndication, …).
  • Ax25ParseOptions — strict-vs-lenient parser knobs (named flags for real-world-peer leniencies); Ax25SessionQuirks — named per-session deviations matching buggy reference implementations.
  • Ax25Adapter — lower-level glue wiring an Ax25Session + dispatcher to a byte sink, for callers who don't want the full listener.

See also


MIT-licensed. Part of the Packet.NET stack.

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 (5)

Showing the top 5 NuGet packages that depend on Packet.Ax25:

Package Downloads
Packet.Kiss

KISS (Keep It Simple, Stupid) framing encoder/decoder, ACKMODE handling, multi-drop port support, and TCP transport. Decodes KISS-Data payloads into typed Ax25Frame events. Pair with Packet.Ax25 for connected-mode sessions. Source: github.com/packet-net/packet.net.

Packet.Kiss.NinoTnc

NinoTNC-specific KISS extensions for the Packet.NET stack — ACKMODE TX-completion correlation, SETHW mode switching, TX-Test frame classification, USB port discovery. Built on Packet.Kiss.Serial for generic serial-port plumbing. Source: github.com/packet-net/packet.net.

Packet.Axudp

AXUDP transport for the Packet.NET stack: AxudpSocket, a bidirectional AX.25-over-IP (RFC 1226) endpoint that UDP-encapsulates AX.25 frames. It unconditionally appends + validates the 2-octet AX.25 FCS (CRC-16-CCITT) exactly as every real AXIP/AXUDP peer does (ax25ipd, LinBPQ BPQAXIP, XRouter), with a raw escape hatch for replaying captures. Source: github.com/packet-net/packet.net.

Packet.NetRom

NET/ROM networking for the Packet.NET stack: the L3 routing layer (NODES broadcasts, routing table + quality model), the L4 circuit state machine (CircuitManager / NetRomCircuit), and the INP3 time-routing overlay (L3RTT, RIF/RIP) — with BPQ / XRouter / Strict / Lenient quirk profiles pinned to real on-air behaviour. Build a .NET NET/ROM node or router on top of Packet.Ax25. Source: github.com/packet-net/packet.net.

Packet.Tune.Core

Coordination primitives for tuning a NinoTNC + radio pair with the two ends apart: the tuning-telegram protocol (ITuningLink), an SDM flavour riding the radio's own side channel (Packet.Radio.IRadioSideChannel; Tait CCDI short data messages — radio-native FFSK, independent of the TNC mode/pot under tune), a WebSocket flavour with a PIN-rendezvous relay, the shared meter/tuned assistant loop, a mode-coordination protocol (propose/confirm/commit a TNC mode + radio channel switch, probe-verify, revert-to-home on failure), and a capability doctor for the whole TNC↔radio stack. Source: github.com/packet-net/packet.net.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.24.0 51 7/20/2026
0.23.0 158 7/14/2026
0.22.0 163 7/14/2026
0.21.0 170 7/9/2026
0.20.0 164 7/5/2026
0.19.0 171 7/5/2026
0.18.0 163 7/5/2026
0.17.0 163 6/23/2026
0.16.0 165 6/23/2026
0.15.0 160 6/23/2026
0.14.0 148 6/22/2026
0.13.0 138 6/22/2026
0.12.0 134 6/21/2026
0.11.0 152 6/18/2026
0.10.0 134 6/17/2026
0.9.0 246 6/17/2026
0.8.0 144 6/12/2026
0.7.0 136 6/10/2026
0.6.1 138 6/7/2026
0.6.0 138 6/5/2026
Loading failed