Packet.Agw 0.25.0

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

Packet.Agw

AGW (AGWPE / SV2AGW) client for talking to LinBPQ, direwolf, SoundModem, and XRouter.

Packet.Agw dials an AGW server over TCP, registers your callsign, and opens AX.25 connected-mode sessions — each exposed as a plain .NET Stream. AGW (SV2AGW's PE+ protocol) is the canonical interop interface for software AX.25 stacks, so this is the easy way to drive a packet TNC from C# without owning the radio layer yourself. Part of Packet.NET, a .NET amateur-radio / AX.25 packet stack.

Install

dotnet add package Packet.Agw

Quick start

Connect to an AGW server, register a callsign, open a connected-mode session, and read/write it like any other stream:

using System.Text;
using Packet.Agw;

// Dial the AGW listener (LinBPQ / direwolf / SoundModem default to port 8000).
await using var client = await AgwClient.ConnectAsync("127.0.0.1", port: 8000);

// Register the callsign the server should route inbound frames to.
await client.RegisterCallsignAsync("N0CALL");

// Open an AX.25 connected-mode session (sends SABM, awaits the connect-ack).
await using AgwSession session = await client.OpenSessionAsync(from: "N0CALL", to: "Q0PDN");

// AgwSession is a Stream: write bytes to send I-frames, read bytes from the remote.
await session.WriteAsync(Encoding.ASCII.GetBytes("ports\r"));

var buffer = new byte[256];
int n = await session.ReadAsync(buffer);          // 0 == remote disconnected (EOF)
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, n));

await session.DisconnectAsync();

Writes larger than the per-frame cap (~256 bytes) are split into multiple data frames automatically. The default PID is 0xF0 ("no layer 3"); set session.DefaultPid to override (e.g. 0xCF for NET/ROM L3). client.GetPortInfoAsync() returns the server's configured radio ports.

Key types

  • AgwClient — connect-initiator over one TCP connection; ConnectAsync / FromStream, RegisterCallsignAsync, OpenSessionAsync, GetPortInfoAsync. Pumps a keepalive ping so idle servers (BPQ closes at ~20s) don't drop you.
  • AgwSession — one connected-mode session as a Stream; Read/Write, DefaultPid, DisconnectAsync, DisconnectedTask.
  • AgwFrame — one frame on the wire (36-byte header + body); ToBytes, Parse, TryReadDataLength.
  • AgwFrameStream — low-level frame I/O over any duplex byte Stream; use it directly for raw frame access.
  • AgwCommandKind — the AGW command-kind ASCII letters (C connect, D data, d disconnect, X register, G port-info, ...).

See also


AGPL-3.0-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.
  • net10.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
0.25.0 0 8/3/2026
0.24.0 87 7/20/2026
0.23.0 88 7/14/2026
0.22.0 92 7/14/2026
0.21.0 106 7/9/2026
0.20.0 97 7/5/2026
0.19.0 99 7/5/2026
0.18.0 104 7/5/2026
0.17.0 108 6/23/2026
0.16.0 108 6/23/2026
0.15.0 103 6/23/2026