Packet.Axudp
0.27.0
dotnet add package Packet.Axudp --version 0.27.0
NuGet\Install-Package Packet.Axudp -Version 0.27.0
<PackageReference Include="Packet.Axudp" Version="0.27.0" />
<PackageVersion Include="Packet.Axudp" Version="0.27.0" />
<PackageReference Include="Packet.Axudp" />
paket add Packet.Axudp --version 0.27.0
#r "nuget: Packet.Axudp, 0.27.0"
#:package Packet.Axudp@0.27.0
#addin nuget:?package=Packet.Axudp&version=0.27.0
#tool nuget:?package=Packet.Axudp&version=0.27.0
Packet.Axudp
AX.25-over-IP: UDP-encapsulated AX.25 frames, RFC 1226 style.
AxudpSocket is a bidirectional AXUDP endpoint — UDP encapsulation of AX.25 frames per the RFC 1226 "AX.25 over IP" convention. The UDP payload is the bare AX.25 frame body followed by the 2-octet AX.25 FCS, exactly as every real AXIP/AXUDP peer (LinBPQ's BPQAXIP, XRouter, ax25ipd, JNOS) speaks it. Part of Packet.NET, a .NET amateur-radio / AX.25 packet stack.
Install
dotnet add package Packet.Axudp
Quick start
using System.Net;
using Packet.Ax25;
using Packet.Axudp;
using var receiver = new AxudpSocket(localPort: 0); // 0 = any free ephemeral port
using var sender = new AxudpSocket(localPort: 0);
var frame = Ax25Frame.Ui(
destination: new Callsign("Q0PDN", 0),
source: new Callsign("N0CALL", 7),
info: "hello"u8);
// SendAsync always appends the 2-octet AX.25 FCS (CRC-16-CCITT, low byte first).
await sender.SendAsync(new IPEndPoint(IPAddress.Loopback, receiver.LocalPort), frame);
// ReceiveAsync strips + validates the FCS, dropping any bad-CRC datagram, then
// returns the sender endpoint, the bare frame body, and a best-effort decode.
AxudpReceiveResult result = await receiver.ReceiveAsync();
Console.WriteLine(result.DecodedFrame?.Source.Callsign); // N0CALL-7
The FCS is part of the AXUDP wire format and is unconditional: there is no FCS-less form. The decode on receive is best-effort at modulo-8 (this transport layer holds no session context); a modulo-128 / extended link must re-parse RawFrame at its negotiated modulo before trusting N(S)/N(R)/PID/info.
Key types
AxudpSocket— the bidirectional AXUDP endpoint:SendAsync(appends FCS),ReceiveAsync(strips + validates FCS),SendRawAsync(verbatim escape hatch for replaying captures),LocalPort,Dispose.AxudpReceiveResult— one received datagram after FCS strip/validation:From(senderIPEndPoint),RawFrame(bare AX.25 body),DecodedFrame(parsedAx25Frame, ornullif the body didn't decode).
See also
- Source & issues
- Packet.Ax25 — the AX.25 frame model (
Ax25Frame,Callsign) that AXUDP carries - Packet.Core — shared primitives, including the
Crc16CcittFCS
AGPL-3.0-licensed. Part of the Packet.NET stack.
| Product | Versions 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. |
-
net10.0
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Packet.Ax25 (>= 0.27.0)
- Packet.Ax25.Sdl (>= 0.10.2)
- Packet.Core (>= 0.27.0)
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 |
|---|---|---|
| 0.27.0 | 69 | 8/17/2026 |
| 0.26.0 | 90 | 8/17/2026 |
| 0.25.0 | 97 | 8/3/2026 |
| 0.24.0 | 99 | 7/20/2026 |
| 0.23.0 | 94 | 7/14/2026 |
| 0.22.0 | 98 | 7/14/2026 |
| 0.21.0 | 102 | 7/9/2026 |
| 0.20.0 | 105 | 7/5/2026 |
| 0.19.0 | 108 | 7/5/2026 |
| 0.18.0 | 111 | 7/5/2026 |
| 0.17.0 | 115 | 6/23/2026 |
| 0.16.0 | 121 | 6/23/2026 |
| 0.15.0 | 110 | 6/23/2026 |
| 0.14.0 | 111 | 6/22/2026 |