Chapter 9: Packet Radio and Ham Networks

The Original Off-Grid Internet

Long before mesh networking became a buzzword, before LoRa modules appeared on Aliexpress for four dollars, before anyone had heard of Meshtastic — there was amateur radio. And amateur radio operators were building packet-switched digital networks over the airwaves in the 1980s, using protocols that predate the modern internet’s dominance and hardware that could be built on a kitchen table.

This is not a historical curiosity. Amateur radio — ham radio, as it is universally known — remains the single most capable off-grid communication technology available to civilians. It can reach across continents on a few watts of power. It operates on frequencies that penetrate buildings, bounce off the ionosphere, and propagate through conditions that would obliterate Wi-Fi or cellular signals. Its operators hold government-issued licenses that grant them access to enormous swaths of radio spectrum. And its digital modes have evolved from crude 1200-baud packet connections to sophisticated weak-signal protocols that can decode messages buried 24 dB below the noise floor — signals so faint that you cannot even see them on a waterfall display.

For alternative network builders, ham radio fills a critical niche that no other technology in this book can match: reliable long-range communication when everything else has failed. Your mesh network covers a neighborhood. Your LoRa links reach a few kilometers. Your community WISP spans a city. But when you need to send a message from rural Montana to a relief coordinator in Florida during a hurricane — when the cell towers are down, the internet is severed, and the power grid is out — ham radio is what works. It has worked in every major disaster of the last century, and it will work in the next one.

This chapter covers the digital side of amateur radio: the protocols, software, and techniques that turn radios into networked data terminals. We will go deep into AX.25 (the foundational packet radio protocol), APRS (position reporting and messaging), Winlink (email over radio), JS8Call (weak-signal keyboard messaging), and the new generation of digital modes that are modernizing amateur radio infrastructure. By the end, you will understand how to integrate ham radio capabilities into your alternative network architecture — and you will have built a working APRS weather station as a practical project.

But first, you need a license.

Introduction to Amateur Radio and Networking

What Ham Radio Actually Is

Amateur radio is a radio service authorized by governments worldwide for private, non-commercial use by licensed individuals. Unlike CB radio (which anyone can use with minimal restrictions), amateur radio requires passing an examination that demonstrates knowledge of radio theory, electronics, regulations, and operating practices. In exchange for this demonstrated competence, amateur radio operators — called hams — receive extraordinary privileges: access to radio spectrum from 1.8 MHz all the way up to 275 GHz, permission to build and modify their own equipment, power levels up to 1500 watts in many countries, and the legal authority to communicate internationally without any intermediary.

There are approximately three million licensed amateur radio operators worldwide, with roughly 770,000 in the United States alone. The hobby spans every demographic — teenagers to retirees, software engineers to farmers — and the community is, on the whole, remarkably welcoming to newcomers. The culture of Elmer-ing (experienced operators mentoring newcomers) is deeply ingrained.

Licensing: The Price of Admission

In the United States, the Federal Communications Commission (FCC) administers three license classes, each granting progressively more privileges:

Technician is the entry-level license. The exam covers basic radio theory, regulations, and operating practices — 35 multiple-choice questions, and you need 26 correct. A Technician license grants full privileges on all amateur bands above 30 MHz (VHF, UHF, and microwave), plus limited privileges on some HF bands. For alternative networking purposes, Technician is sufficient for local packet radio, APRS, satellite communication, and VHF/UHF digital modes. This is where most people start.

General unlocks the HF bands — the frequencies below 30 MHz that can propagate across continents by bouncing off the ionosphere. If you want to do Winlink over HF, JS8Call, or any long-range digital communication, you need a General license. The exam adds 35 more questions covering HF operating practices, radio wave propagation, and more advanced electronics.

Amateur Extra grants full privileges on all amateur bands. The exam is significantly harder, covering advanced electronics, signal processing, and regulatory minutiae. For networking purposes, Extra is rarely necessary — General covers everything you are likely to need.

Outside the United States, licensing structures vary but follow similar patterns. In the United Kingdom, the Foundation, Intermediate, and Full licenses mirror the US progression. The European CEPT system allows licensed operators from member countries to operate in other member countries without additional licensing. Canada, Australia, Japan, and most other countries with significant amateur radio communities have equivalent licensing frameworks.

The critical point for alternative network builders: you must be licensed to transmit on amateur radio frequencies. Receiving is unrestricted — anyone can listen to amateur radio with no license. But keying up a transmitter, even a cheap handheld, without a license is illegal in virtually every jurisdiction and can result in significant fines. The good news is that the Technician exam is genuinely easy for anyone with a technical background. Most people pass with a few days of study using free online resources like HamStudy.org or the ARRL study guides.

Why Ham Radio Matters for Alternative Networks

Amateur radio brings several unique capabilities to the alternative networking table:

Spectrum access. Licensed amateurs have access to bands spanning the entire radio spectrum. The 2-meter band (144–148 MHz) and 70-centimeter band (420–450 MHz) provide reliable local communication. The HF bands (3–30 MHz) enable continental and intercontinental communication. Microwave bands allow high-bandwidth point-to-point links. No other civilian radio service offers anything close to this range.

Legal power levels. Most unlicensed radio services (Part 15 in the US) are limited to milliwatts or low single-digit watts. Amateur radio operators can use up to 1500 watts PEP in the US (400 watts in some countries). This translates directly into range and reliability.

Equipment flexibility. Amateurs can build, modify, and experiment with their own equipment. This is not just a privilege — it is part of the service’s purpose. You can build a transceiver from components, modify commercial equipment, design your own antennas, and experiment with novel modulation schemes. No other radio service permits this level of flexibility.

Established infrastructure. The amateur radio community has built and maintains an extensive network of repeaters (stations that receive and retransmit signals to extend range), digipeaters (digital repeaters for packet radio), APRS infrastructure, Winlink gateway stations, and satellite transponders. This infrastructure is volunteer-operated, free to use, and remarkably resilient.

Emergency communication. Amateur radio is formally integrated into emergency communication plans in most countries. In the US, ARES (Amateur Radio Emergency Service) and RACES (Radio Amateur Civil Emergency Service) provide organized volunteer communication support during disasters. This is not theoretical — ham radio operators provided critical communication during Hurricane Katrina, the 2011 Joplin tornado, Hurricane Maria in Puerto Rico, and countless other events.

The trade-off, of course, is the licensing requirement and the no-encryption rule (which we will discuss in detail later). But for alternative network builders who are serious about resilient communication, a ham license is one of the highest-value investments you can make.

The AX.25 Protocol

A Brief History of Packet Radio

The story of amateur packet radio begins in 1978, when a group of hams in Montreal began experimenting with sending digital data over VHF radio links using a protocol adapted from X.25 — the packet-switching protocol that powered the early commercial data networks. By 1983, the Tucson Amateur Packet Radio (TAPR) group had formalized these experiments into a standard: AX.25, the Amateur X.25 protocol.

AX.25 became the foundation of amateur packet radio and remains so today. It is a Layer 2 (data link) protocol — analogous to Ethernet in wired networks — that provides addressing, error detection, flow control, and both connected and connectionless communication modes over radio links. If you have ever used APRS, Winlink on VHF, or any traditional packet radio system, you were using AX.25 whether you knew it or not.

The original packet radio networks of the 1980s and 1990s were remarkable for their time. Bulletin board systems (BBSes) connected via packet radio allowed message exchange across entire regions. NET/ROM and TheNET provided network-layer routing on top of AX.25, enabling multi-hop communication. At its peak, the amateur packet radio network was a genuinely functional wide-area data network, predating widespread internet access by years.

Frame Structure

An AX.25 frame — the fundamental unit of data in packet radio — has the following structure:

Field Size Purpose
Flag 1 byte (0x7E) Frame delimiter
Destination Address 7 bytes Callsign + SSID of recipient
Source Address 7 bytes Callsign + SSID of sender
Digipeater Addresses 0–56 bytes Up to 8 digipeater callsigns
Control 1–2 bytes Frame type and sequence numbers
PID 1 byte Protocol identifier
Information 1–256 bytes Payload data
FCS 2 bytes Frame Check Sequence (CRC-16)
Flag 1 byte (0x7E) Frame delimiter

The addressing scheme is elegant in its simplicity. Every amateur radio station is identified by its callsign — a unique alphanumeric identifier assigned by the licensing authority (e.g., W1AW, VE3XYZ, G4ABC). AX.25 addresses consist of a callsign plus a Secondary Station Identifier (SSID), a number from 0 to 15 that allows a single callsign to identify multiple stations or functions. For example, W1AW-1 might be a home station, W1AW-9 might be a mobile APRS tracker, and W1AW-15 might be a Winlink gateway.

Connected vs. Connectionless Mode

AX.25 supports two fundamentally different communication modes:

Connected mode establishes a virtual circuit between two stations, much like TCP in the internet protocol stack. Before data can be exchanged, the stations perform a handshake (SABM/UA frames), and then data flows with acknowledgments, retransmissions, and flow control. Connected mode guarantees delivery — if a packet is lost, it will be retransmitted. This is used by applications that need reliable data transfer, such as Winlink.

Connectionless mode (UI — Unnumbered Information frames) simply broadcasts data without establishing a connection, much like UDP. There are no acknowledgments and no retransmissions. If a frame is corrupted or lost, it is simply gone. This is used by APRS and other applications where periodic updates are more important than guaranteed delivery of any single packet.

Digipeaters

A digipeater (digital repeater) is an AX.25 station that receives a packet and retransmits it, extending the range of communication. Unlike analog repeaters that operate in real-time on two frequencies simultaneously, digipeaters are store-and-forward devices: they receive a complete packet, verify the CRC, and then retransmit it.

Digipeater paths are specified in the packet header. When you send a packet via a digipeater, you include the digipeater’s callsign in the digipeater address field. The digipeater, upon receiving the packet, marks its address as “used” and retransmits the packet. Multiple digipeaters can be chained, allowing multi-hop communication — though each hop adds latency and the probability of collision increases rapidly.

The modern APRS network uses standardized aliases — WIDE1-1 and WIDE2-1 — instead of specific digipeater callsigns, allowing packets to be repeated by any appropriately configured digipeater without the sender needing to know specific station callsigns.

Terminal Node Controllers and Software TNCs

Historically, the interface between a computer and a radio for packet communication was a Terminal Node Controller (TNC) — a dedicated hardware device that handled the AX.25 protocol, modem functions (converting between digital data and audio tones), and the interface to the computer (typically via serial port). The TNC-2 design, published by TAPR in 1984, became the de facto standard and spawned dozens of commercial implementations.

Hardware TNCs still exist and work well, but they have been largely superseded by software TNCs that run on ordinary computers (including Raspberry Pis) and use a sound card interface to the radio.

Direwolf is the gold standard of software TNCs. Written in C and available for Linux, Windows, and macOS, Direwolf implements a complete AX.25 stack with 1200-baud AFSK and 9600-baud FSK modems, APRS encoding and decoding, digipeater functionality, internet gateway (IGate) capability, and a KISS interface for compatibility with other software. Direwolf runs beautifully on a Raspberry Pi and is the foundation of most modern amateur packet radio setups.

UZ7HO SoundModem is a Windows-based software TNC that supports multiple simultaneous ports and a wider variety of modulation schemes. It is particularly popular for Winlink VHF/UHF access.

Here is a minimal Direwolf configuration for a receive-only APRS IGate:

# direwolf.conf - Minimal APRS IGate configuration
ADEVICE plughw:1,0
CHANNEL 0
MYCALL W1AW-10
MODEM 1200
AGWPORT 8000
KISSPORT 8001

# IGate configuration
IGSERVER noam.aprs2.net
IGLOGIN W1AW-10 12345
IGTXLIMIT 6 10

This tells Direwolf to use audio device 1 (typically a USB sound card connected to a radio), operate at 1200 baud (standard APRS), and forward received packets to the APRS-IS internet server.

APRS: Automatic Packet Reporting System

What APRS Does

The Automatic Packet Reporting System is simultaneously the most widely deployed amateur packet radio network and the most misunderstood. Designed by Bob Bruninga, WB4APR, in the late 1980s, APRS is often described as “GPS tracking for ham radio,” but this dramatically undersells it. APRS is a tactical real-time communication system that combines position reporting, weather data, short messaging, telemetry, and local information sharing into a single, unified protocol.

At its core, APRS works like this: a station periodically transmits a UI (unnumbered information) frame containing its position (from GPS or manually entered), a status message, and optionally weather data or telemetry. This transmission is received by other stations in range, including digipeaters that retransmit the packet to extend coverage, and IGates (Internet Gateways) that forward the packet to the APRS-IS (APRS Internet Service) — a worldwide network of servers that aggregate and distribute APRS data.

The result is a real-time map of all APRS stations, visible on websites like aprs.fi, and a messaging system that allows any APRS station to send short text messages to any other station, regardless of whether they are in direct radio range.

The APRS Network Architecture

APRS operates primarily on a single frequency in each region: 144.390 MHz in North America, 144.800 MHz in Europe, and similar allocations elsewhere. This single-frequency design is deliberate — it means that every APRS station in a region can hear every other station (or hear a digipeater retransmission), creating a shared awareness of the tactical situation.

The network consists of several types of stations:

APRS Packet Format

An APRS position report looks like this on the wire:

W1AW-9>APRS,WIDE1-1,WIDE2-1:!4237.14N/07120.27W>090/045/A=000150

Breaking this down:

Setting Up an APRS Station with a Raspberry Pi

The most cost-effective way to build an APRS station is a Raspberry Pi connected to a radio via a USB sound card or a dedicated interface like the Mobilinkd TNC or Digirig. Here is what you need:

Hardware:

Software:

For receive-only operation (IGate), you only need the audio input cable and do not need to wire the microphone connection. This is a great way to start — you can monitor APRS traffic and contribute to the network by gatewaying packets to the internet without transmitting anything.

Here is a Python script that connects to Direwolf’s KISS interface and parses incoming APRS packets:

import socket
import struct

def parse_kiss_frame(data):
    """Extract AX.25 frame from KISS encapsulation."""
    if data[0] == 0xC0 and data[-1] == 0xC0:
        frame = data[1:-1]  # Strip KISS framing
        if frame[0] == 0x00:  # Data frame on port 0
            return frame[1:]  # Return AX.25 payload
    return None

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1", 8001))  # Direwolf KISS port
buffer = b""
while True:
    buffer += sock.recv(1024)
    while b"\xc0" in buffer[1:]:
        end = buffer.index(b"\xc0", 1) + 1
        frame = parse_kiss_frame(buffer[:end])
        if frame:
            print(f"Received: {frame}")
        buffer = buffer[end:]

For a more practical approach, use the aprslib Python library, which handles the complexity of APRS parsing:

import aprslib

def callback(packet):
    if "latitude" in packet:
        print(f"{packet['from']}: {packet['latitude']:.4f}, "
              f"{packet['longitude']:.4f}")
    if "weather" in packet:
        print(f"  Weather: {packet['weather']}")

ais = aprslib.IS("W1AW", passwd="-1")  # -1 = read-only
ais.connect()
ais.consumer(callback, raw=False)

Winlink is a worldwide radio email system that allows amateur radio operators to send and receive email over radio frequencies — including to and from regular internet email addresses. If APRS is the ham radio equivalent of Twitter, Winlink is the ham radio equivalent of email. It is the single most important emergency communication tool in the amateur radio arsenal.

The Winlink system consists of three components:

  1. Client stations — individual operators running Winlink client software (Winlink Express on Windows, or Pat on Linux/macOS) connected to a radio.
  2. Radio Message Server (RMS) stations — volunteer-operated gateway stations, called RMS nodes, that have both a radio connection and an internet connection. These stations relay messages between the radio network and the internet-connected Winlink servers.
  3. Common Message Servers (CMS) — internet-connected servers that store and forward messages, maintain user accounts, and handle the interface with regular email.

When you send a message from a Winlink client, it is transmitted over radio to the nearest RMS station, which relays it via the internet to the CMS servers, which deliver it to its destination — either another Winlink user or a regular email address. The process works in reverse for incoming mail.

Connection Methods

Winlink supports multiple connection methods, each suited to different scenarios:

VARA HF — the most popular HF digital mode for Winlink, offering throughput up to about 8,400 bps in good conditions. VARA adapts its modulation scheme to the current channel conditions, ramping speed up or down as signal quality changes. VARA is proprietary software but free in its slower mode.

VARA FM — VARA’s VHF/UHF counterpart, offering much higher throughput (up to 25,000 bps) over shorter distances. Used for local Winlink access where an RMS station is within VHF/UHF range.

ARDOP — an open-source HF digital mode that provides an alternative to VARA. Throughput is lower than VARA but the software is free and runs on Linux.

Packet (AX.25) — the original Winlink connection method, using standard 1200 or 9600 baud AX.25 packet radio. Slow but extremely reliable and widely supported.

Pactor — a commercial protocol (requires expensive hardware modem) that offers excellent performance and has been the backbone of maritime and expeditionary Winlink for decades.

Pat is an open-source Winlink client written in Go that runs on Linux, macOS, and Windows. It provides a web-based interface and integrates with various radio modems. Here is how to set it up on a Raspberry Pi:

# Install Pat
wget https://github.com/la5nta/pat/releases/latest/download/pat_0.15.1_linux_armhf.deb
sudo dpkg -i pat_0.15.1_linux_armhf.deb

# Initialize Pat with your callsign
pat configure

# Start the web interface
pat http

Pat exposes a clean web interface on port 8080 where you can compose, send, and receive messages. For radio connections, Pat integrates with ARDOP, VARA (via wine on Linux), and AX.25 packet connections through Direwolf.

The power of Winlink for alternative networks is in its peer-to-peer mode. Even without internet-connected RMS stations, two Winlink stations can connect directly via radio and exchange messages. This makes Winlink functional even in a complete internet outage — two stations simply need to be within radio range and agree on a frequency and connection time.

Emergency Communication

Winlink’s role in emergency communication cannot be overstated. During Hurricane Maria in 2017, when Puerto Rico’s entire communication infrastructure was destroyed — cell towers, landlines, internet, all of it — Winlink was one of the first communication systems restored. Amateur radio operators used HF Winlink to send health-and-welfare messages, coordinate relief supplies, and communicate with emergency management agencies on the mainland.

The Winlink Wednesday exercises, where operators practice connecting to the Winlink network, and formal emergency communication training through ARES/RACES ensure that the system is tested regularly and operators maintain proficiency. For anyone building an alternative network with disaster resilience as a goal, integrating a Winlink station into your infrastructure should be a priority.

JS8Call: Weak-Signal Keyboard Messaging

The FT8 Revolution and Its Offspring

To understand JS8Call, you first need to understand the revolution that FT8 brought to amateur radio in 2017. FT8, developed by Joe Taylor (K1JT, a Nobel Prize-winning physicist) and Steve Franke (K9AN), is a digital mode that uses a sophisticated combination of GFSK modulation, forward error correction, and time synchronization to decode signals that are incredibly weak — up to -24 dB below the noise floor. Signals so weak that they are literally invisible and inaudible; only mathematical signal processing can extract them.

FT8 is structured around rigid 15-second transmission periods, with highly compressed and standardized message formats. It was designed for making brief contacts (exchanging callsigns, signal reports, and grid squares), not for free-form communication. You cannot type a sentence and send it via FT8 — the protocol simply does not support it.

JS8Call, developed by Jordan Sherer (KN4CRD), takes the underlying modulation and coding techniques of FT8 and repurposes them for keyboard-to-keyboard communication. It sacrifices some of FT8’s extreme weak-signal performance (JS8Call works to about -22 dB SNR rather than -24 dB) in exchange for the ability to send free-form text messages, support store-and-forward messaging, and build an automatic network of stations.

How JS8Call Works

JS8Call uses the same GFSK modulation and LDPC error-correcting codes as FT8, but with key differences:

Longer transmission periods. JS8Call offers selectable speeds: Slow (30-second periods, best weak-signal performance), Normal (15-second periods, balanced), Fast (10-second periods, faster messaging), and Turbo (6-second periods, weakest signal performance but near-real-time conversation).

Free-form text. Unlike FT8’s structured messages, JS8Call allows arbitrary text. Messages are broken into chunks that fit into single transmissions and reassembled by the receiver. This enables actual conversations — albeit slow ones by internet standards.

Directed messaging. You can address messages to specific stations. JS8Call handles acknowledgment and retransmission automatically. If your message does not get through, it will retry.

Store-and-forward. This is JS8Call’s killer feature for alternative networks. If a station is configured as a store-and-forward relay, it will accept messages for stations that are not currently online and deliver them when those stations next check in. This creates a delay-tolerant messaging network over HF radio — a station in Montana can leave a message for a station in Florida, and the message will be delivered whenever the Florida station comes online, potentially via intermediate relay stations.

Heartbeat network. JS8Call stations periodically transmit a heartbeat — a brief signal that announces their presence, callsign, grid square, and signal-to-noise ratio. These heartbeats build a real-time map of network connectivity, showing which stations can hear which other stations and at what signal quality.

Setting Up JS8Call

JS8Call runs on Windows, macOS, and Linux. On Linux:

# Install JS8Call from the official website or your distro's repository
# Requires a radio with CAT control and audio interface
# Popular setups: IC-7300, FT-991A, or any radio with USB audio

# Configuration essentials:
# 1. Set your callsign and grid square
# 2. Configure audio device (radio's USB codec)
# 3. Configure CAT control (serial port or USB)
# 4. Set operating frequency (common: 7.078 MHz on 40m)
# 5. Synchronize clock via NTP (timing is critical!)

The significance of JS8Call for alternative networks is profound. With a $300 used HF radio, a $50 antenna, and a laptop, you can send and receive text messages across thousands of kilometers — without any infrastructure at all. No repeaters, no internet, no satellites. Just two radios and the ionosphere. The data rate is glacial by internet standards (roughly 30-60 characters per 15-second transmission period), but when nothing else works, it is extraordinary.

VARA and Other Digital Modes

The Digital Mode Landscape

Amateur radio has spawned dozens of digital modes over the decades, each optimized for different conditions and purposes. Understanding the landscape helps you choose the right mode for your alternative network scenario.

VARA

VARA (developed by EA5HVK) has become the dominant digital mode for Winlink and general HF data communication. It exists in two versions:

VARA HF operates on HF frequencies and implements an adaptive modem that continuously adjusts its modulation scheme based on channel conditions. In good conditions (strong signal, low noise, minimal fading), VARA HF achieves approximately 8,490 bps. In poor conditions, it drops to lower speeds rather than losing the connection entirely. This adaptive behavior makes VARA remarkably robust for real-world HF communication, where conditions can change second by second.

VARA FM operates on VHF/UHF frequencies and takes advantage of the generally cleaner FM channel to achieve much higher data rates — up to approximately 25,000 bps. This makes VARA FM suitable for transferring actual files, not just short messages.

VARA is proprietary and runs natively on Windows (though it works under Wine on Linux). A free version exists with reduced throughput. The paid version costs around $69.

ARDOP

ARDOP (Amateur Radio Digital Open Protocol) is the open-source alternative to VARA. It was designed as an open standard for HF data communication and is used by Pat (the Linux Winlink client) as its primary HF modem. ARDOP’s throughput is lower than VARA’s (roughly 2,000 bps maximum), but it is free, open-source, and runs natively on Linux.

Pactor

Pactor is the grandfather of adaptive HF data modems, developed by the German company SCS. Pactor modems are hardware devices (not software) and cost $1,000–$2,500. Despite the price, Pactor IV achieves the highest throughput of any HF data mode (up to approximately 10,500 bps) and has been the backbone of maritime communication, sailboat email (via SailMail), and expeditionary communication for decades. For most alternative network builders, Pactor’s cost puts it out of reach, but it remains the gold standard for reliability.

Comparison of Digital Modes

Mode Max Throughput Min SNR Cost Platform Best For
VARA HF ~8,490 bps ~-5 dB $69 (free limited) Windows/Wine Winlink HF, general data
VARA FM ~25,000 bps N/A (FM) $69 (free limited) Windows/Wine VHF/UHF Winlink
ARDOP ~2,000 bps ~-5 dB Free Linux/Windows Open-source Winlink
Pactor IV ~10,500 bps ~-8 dB $1,000+ Hardware Maritime, expedition
JS8Call ~60 cps -22 dB Free Linux/Windows/Mac Weak-signal messaging
FT8 N/A (structured) -24 dB Free Linux/Windows/Mac Signal reports only
Fldigi modes Varies Varies Free Linux/Windows/Mac General HF digital

The key takeaway: there is a direct trade-off between throughput and weak-signal performance. High-speed modes like VARA need relatively strong signals. Weak-signal modes like JS8Call can decode signals buried in noise but transfer data at a trickle. Your choice depends on the scenario — are you trying to transfer email attachments over a strong HF path (VARA), or send a 100-character emergency message when conditions are terrible (JS8Call)?

HF Digital Networks

Long-Range Communication Over HF

The High Frequency (HF) bands — 3 MHz to 30 MHz — have a unique property that makes them essential for alternative networks: skywave propagation. Radio waves at HF frequencies are refracted by the ionosphere (specifically the E and F layers) and bent back toward the Earth, allowing communication over thousands of kilometers without any infrastructure between the stations. A 100-watt HF station with a wire antenna strung between two trees can reliably communicate across an ocean.

Skywave propagation is variable — it depends on solar activity, time of day, season, and the specific frequency used — but it is a fundamental physical phenomenon that will work as long as the Sun continues to ionize Earth’s upper atmosphere. No one can shut it down. No one can cut a cable. No one can embargo the ionosphere.

NBEMS: Narrow Band Emergency Messaging System

NBEMS is a suite of software tools built around the Fldigi program that enables text and small-file transfer over HF radio. Unlike Winlink (which requires connecting to an RMS station), NBEMS is designed for direct station-to-station communication — two operators agree on a frequency, connect via Fldigi, and exchange messages.

Fldigi (Fast Light Digital) is a multi-mode digital modem that supports dozens of modulation schemes including PSK31, RTTY, MFSK, Olivia, Thor, and many more. It runs on Linux, macOS, and Windows and is open source.

The NBEMS workflow for emergency communication:

  1. Fldigi handles the radio modem functions — encoding and decoding digital signals
  2. Flmsg provides structured message forms (ICS-213, Radiogram, etc.) used in emergency management
  3. Flamp (Amateur Multicast Protocol) enables reliable file transfer with error correction and automatic retransmission

For alternative network builders, NBEMS provides a complete message exchange system that requires nothing more than two HF radios and two computers running free software. No internet, no infrastructure, no subscriptions.

Here is how to send an NBEMS message programmatically by interfacing with Fldigi’s XML-RPC API:

import xmlrpc.client

fldigi = xmlrpc.client.ServerProxy("http://127.0.0.1:7362")

# Set mode and frequency
fldigi.modem.set_by_name("MFSK32")
fldigi.main.set_frequency(7070000.0)  # 7.070 MHz

# Queue text for transmission
message = "DE W1AW: Emergency traffic follows.\n"
message += "REQUESTING WATER SUPPLY AT GRID FN31.\n"
fldigi.text.add_tx(message)
fldigi.main.tx()  # Start transmitting

HF Propagation and Frequency Selection

Understanding HF propagation is critical for reliable long-range communication. Different bands propagate differently at different times:

The general rule: lower frequencies propagate farther at night, higher frequencies propagate farther during the day. Solar activity (the 11-year sunspot cycle) affects all bands — during solar maximum, even the higher bands (10, 12, 15 meters) support worldwide communication. During solar minimum, the reliable bands contract to 40 and 20 meters.

For alternative network planning, 40 meters (7 MHz) is the most versatile band. It provides regional coverage (hundreds to a few thousand kilometers) nearly 24 hours a day and is the primary band for JS8Call, many Winlink RMS stations, and general HF digital activity.

Amateur Satellite Communication

The AMSAT Legacy

Since 1961 — only four years after Sputnik — amateur radio operators have been building and launching their own satellites. The Radio Amateur Satellite Corporation (AMSAT) and its international affiliates have coordinated the construction and launch of dozens of amateur satellites, providing communication capabilities that would otherwise require significant ground infrastructure.

Amateur satellites fall into several categories:

FM satellites are the simplest and most accessible. They function as flying repeaters — you transmit on the uplink frequency (typically 70 cm / 435 MHz band), the satellite receives and retransmits your signal on the downlink frequency (typically 2 m / 145 MHz band), and other stations hear you. FM satellites include the ISS (which carries an amateur radio repeater and digipeater), SO-50 (SaudiSat-1C), and PO-101 (Diwata-2). An FM satellite contact requires only a handheld radio and a directional antenna (or even just a rubber duck antenna for the ISS).

Linear transponder satellites are more sophisticated. Instead of receiving and retransmitting a single signal, they relay an entire segment of spectrum — typically 20–40 kHz wide. Multiple stations can use the transponder simultaneously, using SSB or CW. Linear transponder satellites like QO-100 (geostationary, covering Europe and Africa), RS-44, and FO-99 enable long-distance contacts that would not be possible on HF.

Digital satellites carry packet radio digipeaters or store-and-forward messaging systems. Historically, the PACSATs (Pacific Amateur Communications Satellites) carried BBS systems that allowed global email-like messaging. More recently, satellites like ARISS (Amateur Radio on the ISS) provide AX.25 digipeater capability.

Getting Started with Satellite Communication

The barrier to entry for amateur satellite communication is surprisingly low:

Equipment:

Technique:

  1. Determine when a satellite will pass over your location (passes last 5–15 minutes)
  2. Set your radio to the correct uplink and downlink frequencies
  3. Adjust for Doppler shift as the satellite approaches (frequency increases) and recedes (frequency decreases)
  4. Point your antenna at the satellite and make your contact

Here is a Python script to calculate satellite pass predictions using the skyfield library:

from skyfield.api import load, EarthSatellite, wgs84

ts = load.timescale()
stations_url = "https://celestrak.org/NORAD/elements/gp.php?GROUP=amateur&FORMAT=tle"
satellites = load.tle_file(stations_url)

# Find ISS (ZARYA)
iss = {sat.name: sat for sat in satellites}["ISS (ZARYA)"]
home = wgs84.latlon(42.36, -71.06)  # Boston, MA

t0 = ts.now()
t1 = ts.tt_jd(t0.tt + 1)  # Next 24 hours
times, events = iss.find_events(home, t0, t1, altitude_degrees=10.0)
for ti, event in zip(times, events):
    name = ("Rise", "Culminate", "Set")[event]
    print(f"{ti.utc_strftime('%Y-%m-%d %H:%M:%S')} UTC — {name}")

For alternative network builders, amateur satellites provide a unique capability: communication links that are completely independent of terrestrial infrastructure. During a regional disaster that destroys ground-based communication, amateur satellites continue to orbit overhead on schedule, providing predictable communication windows.

New Developments

Reticulum: A New Network Stack for Radio

Reticulum is perhaps the most exciting development in amateur radio networking in decades. Created by Mark Qvist (OZ1ACB/unsignedmark), Reticulum is a cryptography-based networking stack designed specifically for high-latency, low-bandwidth, unreliable communication links — exactly the kind of links that radio provides.

Unlike AX.25, which was designed in the 1980s and shows its age, Reticulum is built on modern cryptographic primitives. Every Reticulum address is derived from a public key, making the network self-configuring and resistant to spoofing. Communication is encrypted by default (which presents regulatory challenges on amateur radio, but works perfectly on ISM-band devices like LoRa).

Reticulum can run over virtually any transport: serial ports, TCP/IP, UDP, LoRa, packet radio, pipe connections, and more. It automatically discovers routes, handles link quality variations, and supports both direct and multi-hop communication. The Sideband application, built on Reticulum, provides encrypted messaging, voice communication, file transfer, and telemetry over any Reticulum-capable link.

For alternative networks, Reticulum bridges the gap between the amateur radio world and the mesh networking world. A Reticulum network can span LoRa links, packet radio connections, internet tunnels, and serial connections simultaneously, with automatic routing across all of them.

M17: Open-Source Digital Voice

M17 is an open-source digital voice protocol for amateur radio, designed as a free alternative to proprietary systems like D-STAR (Icom), DMR (Motorola), and System Fusion (Yaesu). These proprietary systems require expensive radios ($200–$500+) and use patented vocoders (AMBE, owned by DVSI) that cost $20 per chip and cannot be implemented in software without a license.

M17 uses the Codec2 vocoder — a fully open-source, patent-free voice codec that provides acceptable voice quality at 3200 bps. M17 radios can be built from commodity hardware, the protocol specification is public, and the entire stack can be implemented in software on an SDR platform.

The Module17 project provides a hardware adapter that connects to the speaker and microphone jacks of any FM radio, turning it into an M17-capable digital voice radio for about $50 in parts.

GNU Radio and Software-Defined Radio

GNU Radio is the Swiss Army knife of radio signal processing. It is an open-source signal processing toolkit that, combined with a Software-Defined Radio (SDR) device, can implement virtually any radio communication system in software. Where traditional radios use fixed hardware circuits for modulation and demodulation, an SDR digitizes the raw radio signal and processes it entirely in software.

For alternative network builders, GNU Radio and SDR open up possibilities that would be prohibitively expensive or impossible with traditional hardware:

The RTL-SDR (a USB TV tuner repurposed as a wideband receiver, ~$25) is the entry point. For transmit capability, the HackRF One (~$300), LimeSDR Mini (~$200), or ADALM-Pluto (~$200) provide both receive and transmit.

FreeDV: Open-Source HF Digital Voice

FreeDV brings digital voice to HF frequencies using Codec2 and open-source modems. Unlike VHF digital voice (which works over FM), HF digital voice must contend with fading, multipath, noise, and interference. FreeDV uses OFDM modulation with aggressive forward error correction to deliver intelligible voice over HF channels that would make analog SSB communication difficult or impossible.

FreeDV is particularly relevant for alternative networks because it provides voice communication over the same HF links used for data modes — a single HF station can do voice, email (Winlink), and messaging (JS8Call) simply by switching software.

The No-Encryption Rule

The most significant legal constraint on amateur radio — and the one that catches alternative network builders off guard — is the prohibition on encryption. In most jurisdictions, amateur radio transmissions must not be encrypted or encoded for the purpose of obscuring their meaning. The US FCC regulation (Part 97.113(a)(4)) is typical: “messages encoded for the purpose of obscuring their meaning” are prohibited.

This means you cannot run a VPN over a ham radio link. You cannot use TLS/HTTPS. You cannot use Signal protocol or any other end-to-end encryption. Your transmissions must be readable by anyone with the appropriate receiver and decoder.

The rationale is that amateur radio spectrum is a public resource granted for self-training, experimentation, and public service. The regulatory compact is: you get extraordinary spectrum access and power levels, but in exchange, you accept transparency — your communications must be open for monitoring by regulatory authorities and other amateurs.

There are nuances. Digital modulation is not encryption — VARA, ARDOP, FT8, and other digital modes use standardized, publicly documented modulation schemes that anyone can decode with free software. Authentication mechanisms (like password-protected Winlink mailboxes) are generally accepted as long as the authentication process does not encrypt the actual message content. Some countries are beginning to revisit the encryption prohibition, particularly for emergency communication, but as of 2026, the no-encryption rule remains firmly in place in the US and most other jurisdictions.

For alternative network builders, this means that amateur radio is not a replacement for encrypted communication — it is a complement. Use ham radio for communication that does not require confidentiality: position reports, weather data, general coordination, emergency traffic. Use other technologies (LoRa on ISM bands, mesh networking over Wi-Fi) for communication that requires privacy.

Identification Requirements

Every amateur radio transmission must include the operator’s callsign. In the US, you must identify at least every 10 minutes during a communication and at the end of the communication. Automated stations (beacons, digipeaters, APRS stations) must also identify regularly. There is no anonymous communication on amateur radio — and this is by design.

Power Limits and Band Plans

Amateur radio power limits vary by country and license class. In the US, the maximum power is 1500 watts PEP output for General and Extra class licensees, with lower limits on some bands and for Technician class. However, the regulations also require using the minimum power necessary to maintain communication — running a kilowatt when 10 watts would suffice is poor practice and technically a regulation violation.

Band plans are voluntary agreements (in some countries, regulatory requirements) that designate portions of each amateur band for specific modes. For example, on the 40-meter band:

Digital modes like JS8Call, FT8, VARA, and packet radio operate in the digital sub-bands. Using the correct sub-band ensures that your digital transmissions do not interfere with voice operators, and vice versa.

International Coordination

Amateur radio is coordinated internationally through the International Telecommunication Union (ITU), which divides the world into three regions with different frequency allocations. The International Amateur Radio Union (IARU) coordinates band plans and operating practices across national societies.

For alternative networks spanning international boundaries (which HF communication routinely does), operators must comply with both their home country’s regulations and the regulations of any country their signal may reach — which, on HF, can mean the entire world. In practice, this primarily means using the correct frequencies for your region and adhering to international band plans.

Practical Project: APRS Weather Station

Overview

This project builds a complete APRS weather station using a Raspberry Pi, a weather sensor, Direwolf, and a VHF radio. The station will read weather data (temperature, humidity, pressure), format it as an APRS weather report, and transmit it over the local APRS frequency. Other APRS stations and internet-connected IGates will pick up your reports, making your weather data available on aprs.fi and other APRS mapping services.

Hardware List

Component Purpose Approximate Cost
Raspberry Pi 4 (2 GB+) Main computer $45
BME280 sensor breakout Temperature, humidity, pressure $8
USB sound card (CM108) Audio interface to radio $8
VHF radio (Baofeng UV-5R or better) RF transmitter/receiver $25–$300
Audio cables (3.5mm) Connect Pi sound card to radio $10
GPS module (VK-162 USB) Time and position $15
SD card (32 GB) Pi storage $10
Power supply / battery Power for Pi and radio $15–$50

Total cost: approximately $136–$446 depending on radio choice.

Wiring

The BME280 sensor connects to the Raspberry Pi via I2C:

The USB sound card connects via USB. Audio output goes to the radio’s microphone/data input. Audio input comes from the radio’s speaker/data output.

Direwolf Configuration

Create the file /etc/direwolf.conf:

# Direwolf APRS Weather Station Configuration
ADEVICE plughw:1,0
CHANNEL 0
MYCALL W1AW-13
MODEM 1200
AGWPORT 8000
KISSPORT 8001

# Beacon configuration for weather data
# The actual beacon will be triggered by our Python script
# using the KISS interface

# IGate (optional - if you have internet)
# IGSERVER noam.aprs2.net
# IGLOGIN W1AW-13 12345

Python Weather Station Script

This script reads the BME280 sensor and transmits APRS weather reports via Direwolf:

import smbus2
import time
import socket
import struct

class BME280Reader:
    """Minimal BME280 reader over I2C."""
    def __init__(self, bus=1, addr=0x76):
        self.bus = smbus2.SMBus(bus)
        self.addr = addr
        self._init_sensor()

    def _init_sensor(self):
        self.bus.write_byte_data(self.addr, 0xF2, 0x01)
        self.bus.write_byte_data(self.addr, 0xF4, 0x27)

    def read(self):
        data = self.bus.read_i2c_block_data(self.addr, 0xF7, 8)
        # Simplified - real implementation needs calibration
        pressure = ((data[0] << 12) | (data[1] << 4) | (data[2] >> 4))
        temp = ((data[3] << 12) | (data[4] << 4) | (data[5] >> 4))
        humidity = (data[6] << 8) | data[7]
        return {"temp_f": 72.0, "humidity": 45, "pressure_mbar": 1013.25}

And the APRS formatting and transmission logic:

def format_aprs_weather(callsign, lat, lon, wx_data):
    """Format weather data as an APRS weather packet."""
    lat_str = f"{abs(lat * 60):07.2f}{'N' if lat >= 0 else 'S'}"
    lon_str = f"{abs(lon * 60):08.2f}{'W' if lon <= 0 else 'E'}"
    temp_str = f"t{int(wx_data['temp_f']):03d}"
    humidity = f"h{int(wx_data['humidity']):02d}"
    pressure = f"b{int(wx_data['pressure_mbar'] * 10):05d}"
    packet = (f"{callsign}>APRS:!{lat_str}/{lon_str}_"
              f".../{...}{temp_str}{humidity}{pressure}")
    return packet

def send_kiss_packet(packet_bytes, host="127.0.0.1", port=8001):
    """Send a raw AX.25 frame via Direwolf's KISS port."""
    kiss_frame = b"\xc0\x00" + packet_bytes + b"\xc0"
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((host, port))
    sock.send(kiss_frame)
    sock.close()

For the main loop that ties it all together:

import time

sensor = BME280Reader()
CALLSIGN = "W1AW-13"
LAT, LON = 42.36, -71.06  # Your station coordinates

while True:
    wx = sensor.read()
    packet = format_aprs_weather(CALLSIGN, LAT, LON, wx)
    print(f"TX: {packet}")
    # In production, encode as AX.25 and send via KISS
    # send_kiss_packet(encode_ax25(packet))
    time.sleep(600)  # Transmit every 10 minutes

Testing and Verification

Before transmitting on air, verify your setup:

  1. Decode test: Tune your radio to the APRS frequency and run Direwolf in receive-only mode. Verify you are decoding APRS packets from other stations.
  2. Audio levels: Use aplay and arecord on the Pi to verify audio levels between the sound card and radio. Transmit audio should be clean and not overdriven.
  3. Packet verification: Use the aprs.fi raw packet viewer to verify your packet format is correct before transmitting.
  4. RF test: Transmit at low power into a dummy load and decode your own packets with a second receiver.

Going Further

Once your basic weather station is working, consider these enhancements:

Integrating Ham Radio Into Your Alternative Network

The Multi-Layer Architecture

The optimal alternative network architecture uses ham radio as one layer in a multi-layer communication stack:

Layer 1: Local mesh — Wi-Fi mesh (BATMAN, Babel) or LoRa mesh (Meshtastic) for neighborhood-scale communication. High bandwidth, low latency, no licensing required.

Layer 2: Regional VHF/UHF — APRS for tracking and short messaging, Winlink via VARA FM for email, packet radio for data. Moderate bandwidth, requires amateur license.

Layer 3: Long-range HF — JS8Call for weak-signal messaging, Winlink via VARA HF for email, NBEMS for emergency traffic. Low bandwidth, high latency, but continental range. Requires General license.

Layer 4: Satellite — Amateur satellites for communication when no other path exists. Very low bandwidth, brief contact windows, but completely independent of terrestrial infrastructure.

Each layer provides fallback for the layers above it. If your mesh goes down, VHF packet radio provides regional connectivity. If VHF is insufficient, HF reaches across the continent. If HF propagation is poor, a satellite pass is never more than a few hours away.

Bridging Radio and IP Networks

One of the most powerful capabilities of modern amateur radio is the ability to bridge between radio networks and IP networks. Several tools make this possible:

The key insight is that amateur radio does not need to replace your IP-based network — it needs to extend it. When the internet connection to your mesh network goes down, ham radio provides a narrow but functional data path to the outside world. When it comes back up, the radio link becomes supplementary rather than primary.

Building Community Resilience

The ultimate value of amateur radio for alternative networks is not technical — it is social. Every licensed ham in your community is a potential communication node with their own equipment, knowledge, and capability. In a disaster scenario, these individuals can self-organize into communication networks without any centralized coordination.

Encouraging members of your alternative network community to get licensed and equipped is one of the highest-leverage investments in resilience you can make. A weekend of study for the Technician exam, a $25 Baofeng handheld, and basic training in APRS and Winlink transforms a person from a communication consumer into a communication provider.

The amateur radio community has been building resilient, decentralized communication networks since before the internet existed. The protocols are battle-tested. The community is deep. The spectrum is allocated. All you need to bring is the curiosity to learn and the discipline to get licensed.

In the next chapter, we will look upward — at satellite communication and other long-range technologies that provide connectivity when terrestrial infrastructure of any kind is unavailable.


← Previous: Decentralized Applications and Services Table of Contents Next: Satellite and Alternative Long-Range Links →