Skip to content

About

M0LTE's packet node software

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,164 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Packet.NET

A modern, open, cross-platform AX.25 v2.2+ stack and packet radio node, written in .NET 10. Connected-mode sessions over KISS modems (USB/serial or TCP), a sound card, or AXUDP - with continuous interop tests against LinBPQ, XRouter, rax25, direwolf, and a NinoTNC pair.

Two things live in this repo, and either is usable on its own:

  • Packet.NET - or pdn - a packet-radio node you install on a Pi or any Debian-ish box: ports, NET/ROM, a web control panel, radio and rig control, an app platform.
  • The Packet.* libraries - the engine underneath and various accessories, on NuGet, for building your own .NET packet software.

Packet.NET is built on top of ax25sdl - which is an effort to codify the state machines documented in the AX.25 specification in a formal, provable manner, whose output is a suite of codegenned libraries in various languages including C# .NET.

Run a node

Most visitors will probably just be interested in running a packet radio node of their own.

pdn is distributed two ways, both from Releases: a .deb for Debian, Ubuntu and Raspberry Pi OS, and a .tar.gz archive of the same node for anything else. On a Debian-ish box (a Raspberry Pi is ideal), grab the .deb for your architecture and:

cd /tmp && curl -fsSLO "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/packet-net/packet.net/releases/latest/download/packetnet_$(dpkg --print-architecture).deb"
sudo apt install "/tmp/packetnet_$(dpkg --print-architecture).deb"

That URL always resolves to the current release: the .deb filenames carry no version, so there is nothing to look up first and nothing to edit next time. The version is inside the package - dpkg -I packetnet_arm64.deb.

(Downloading to /tmp rather than your home directory keeps apt from printing a "Download is performed unsandboxed as root" notice: apt fetches even a local file as the _apt user, which cannot read a 0750 home directory.)

The install finishes by printing your node's control panel address - http://your-node:8080, reachable from any machine on your network. Open it in a browser, and a three-step wizard asks for your callsign, an admin login, and your first port.

Getting started has both routes in full, along with what to do next and what to do if you run into problems.

Build software on it

This section is for .NET developers.

dotnet add package Packet.Ax25
dotnet add package Packet.Kiss
await using IAx25Transport transport = KissSerialModem.Open("/dev/ttyACM0");
var listener = new Ax25Listener(transport, new Ax25ListenerOptions { MyCall = Callsign.Parse("M0LTE-1") });
await listener.StartAsync();
var session = await listener.ConnectAsync(Callsign.Parse("GB7RDG-1"));

The developer guide builds that up properly - a raw frame dumper, then a beacon sender, a channel monitor, a connect client, a node of your own, and NET/ROM.

Documentation

Read For
Getting started Install pdn, reach the panel, add a port, get on the air
Operator guide Attach a radio, then see and improve your link: RSSI/SNR, the radio doctor, deviation tuning, metrics, CAT rig control, split-station head-ends, programming a Tait from the panel
Developer guide Build packet-radio software on the libraries, layer by layer
Packages What each Packet.* library does and where it publishes
About Scope, provenance, sibling repos, licence
Plan The living roadmap and amendment log - the source of truth for direction and status
Contributing · Releasing House rules; how a change reaches the world

Build from source

dotnet build
dotnet test --filter "Category!=HardwareLoop&Category!=Interop"

Requires the .NET 10 SDK (see global.json). The full interop matrix - LinBPQ, XRouter, rax25 and a net-sim in docker, plus the TypeScript library's suite run against the same stack - lives in .github/workflows/interop.yml.

There is also a container image of the node, ghcr.io/packet-net/packet.net (docker/node/README.md). Treat it as a development tool - a disposable node for testing against, and what the interop stack builds on. It is not a supported way to run a station: use the .deb.

Licence

AGPL-3.0 - the whole repo and every published Packet.* NuGet package.

In short: if you distribute software built on this code, or let users reach it over a network, you must publish your own source under the same licence. This being networking software, that second clause will apply to you.

That's deliberate. This is amateur radio software with no commercial value, and for the good of the hobby, code running on our airwaves should be open.

If this isn't for you, please spin the dial.

About

M0LTE's packet node software

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages