Packet.Agw 0.53.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Packet.Agw --version 0.53.0
                    
NuGet\Install-Package Packet.Agw -Version 0.53.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.53.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Packet.Agw" Version="0.53.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.53.0
                    
#r "nuget: Packet.Agw, 0.53.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.53.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.53.0
                    
Install as a Cake Addin
#tool nuget:?package=Packet.Agw&version=0.53.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.54.0 36 9/30/2026
0.53.0 37 9/30/2026
0.52.0 39 9/30/2026
0.51.0 62 9/30/2026
0.50.0 62 9/29/2026
0.49.0 72 9/29/2026
0.48.0 73 9/29/2026
0.47.0 70 9/29/2026
0.46.0 63 9/29/2026
0.45.0 69 9/29/2026
0.44.0 71 9/27/2026
0.43.0 83 9/27/2026
0.42.0 85 9/26/2026
0.41.0 88 9/26/2026
0.40.0 99 9/16/2026
0.39.0 91 9/15/2026
0.38.0 91 9/15/2026
0.37.0 102 9/10/2026
0.36.0 94 9/7/2026
0.35.0 100 9/6/2026
Loading failed