Post

Pax25

A library for building AX.25 packet radio applications.

Abstract

Pax25 is a Python library for building packet radio applications using Python. Unlike most projects on this site, it is still in its early development. Documentation/website here and source code here.

Role

I designed the application layer, which is already built, and wrote the documentation, which is currently live.

Background

In the 90s, amateur radio operators began experimenting with data modes and protocols for transmission over the air. A parallel data network was constructed via enthusiast stations over most major metropolitan areas and acted as a parallel communications system to the Internet. In many respects, the radio networks mimicked early Internet protocols, with text-based bulletin board systems and basic chat capabilities.

Over time this network has faded, with the Internet outclassing it in every respect. However, much like BBS and MUD systems retain a die-hard retrocomputing fanbase, there remain a handful of packet radio stations over most US cities. These have acted as backup communications during emergencies.

However, the development landscape has become quite stagnant. In 2023, I’d gotten my amateur radio license on the encouragement of a friend when I was curious about how I could perform backup long-range communications when traditional networks like the Internet are unavailable. This introduced me to packet radio and the problem of its stagnation.

My friend had extensive experience with the AX.25 protocol which powered these systems, and he enlisted my help in designing a library that could be used by developers to make their own packet radio applications– potentially reviving interest in packet radio among amateur operators.

The result is a library which is still in progress but already shows great promise in its prototype form.

Tools/Technologies used

  • Python
  • asyncio (Python’s async/await event loop)
  • Linux
  • Windows
  • VHF/UHF radio station operation
  • AX.25
  • MkDocs
This post is licensed under CC BY 4.0 by the author.