Packet Radio Station

AX.25 Browser-Local Packet Network

Open Packet Station

Introduction

Welcome to the Packet Radio Station — a complete AX.25 packet-radio system that runs entirely in your browser, without transmitting any RF signal and without requiring a radio licence.

Amateur packet radio emerged in the early 1980s as a way to move computer data across the VHF amateur bands. A Terminal Node Controller (TNC) sat between a radio transceiver and a home computer, encoding data as Bell 202 audio tones for transmission and decoding incoming tones back to bytes. The AX.25 protocol — an adaptation of the X.25 packet-switching standard — provided reliable, connection-oriented data links over the noisy, shared radio medium. By the late 1980s, every large Canadian city had a local packet node that forwarded mail, connected to BBS systems, and linked into continental NET/ROM networks.

emulator.ca recreates this world in software. A complete AX.25 stack — AFSK modem, HDLC codec, AX.25 data-link layer, and NET/ROM network layer — runs as a Rust WebAssembly module in your browser. A simulated shared radio channel connects a local TNC (your station) to several remote station TNCs, each hosting a different service. The channel shows you every frame that crosses it, just as a radio monitor would.

This is a browser-local simulation. No RF is ever transmitted. The callsigns shown (QS6GA-0, QS6USR-15, etc.) are fictional emulator.ca stations created for this simulation. They are not real amateur-radio callsigns. Real on-air operation, real callsigns, and real RF transmission are out of scope unless a separate legal, licensing, and provenance path is established.

What you get

Quick Start

The fastest path to a packet connection:

  1. Open /packet/ in your browser.
  2. At the cmd: prompt, type C QS6GA-0 and press Enter.
  3. The Edmonton packet node responds: *** CONNECTED to QS6GA-0
  4. At the node prompt, type ? for help or N to list known nodes.
  5. Type C QS6GA-1 to connect to the BBS, C QS6SLP-1 for mailbox, or C QS6GA-10 for weather.
  6. To disconnect, type D at any connected service, or BYE at the node.
cmd: C QS6GA-0

*** CONNECTED to QS6GA-0

Edmonton Packet Node (NET/ROM)
? for help, N for nodes, B to disconnect

QS6GA-0:> N
Known nodes:
  QS6GA-0  Edmonton Node
  QS6GA-1  Edmonton BBS
  QS6GA-10 Edmonton Weather
  QS6NAS-1 Naseby BBS
  QS6SLP-0 Chat
  QS6SLP-1 Mailbox

QS6GA-0:> C QS6GA-1

*** CONNECTED to QS6GA-1

Welcome to the Edmonton Packet BBS

Accessing the Packet Station

Standalone Packet Page

The dedicated page at /packet/ gives you the full packet station experience:

You are already at the TNC command prompt when the page loads. Type TNC commands directly — no modem dial sequence required.

From the Main Terminal

The main terminal at / includes a PK-232 modem peripheral. Select the PK-232 from the peripheral panel and the terminal connects via the modem command set:

Path First command
/packet/ standalone C QS6GA-0
Main terminal, PK-232 modem ATDQS6GA-0
Main terminal, raw TNC mode AT+TNC then C QS6GA-1
Return to modem from TNC mode AT+MODEM

From the main terminal, ATDQS6GA-0 dials the node directly. Once connected, you are in converse mode. To send a TNC command from converse mode, type the escape sequence +++ (three plus signs without pressing Enter) and wait one second for the cmd: prompt to reappear.

TNC Command Reference

The AEA PK-232 command set is used on both the standalone page and the PK-232 modem peripheral. Commands are not case-sensitive.

Connection Commands

These commands run at the cmd: prompt. Once you connect to a node or service, use the service's own command set until you disconnect or escape back to cmd:.

Command Description
C <call> Connect to a remote station (e.g., C QS6GA-0)
D Disconnect the current link
CONV Enter converse mode after a link is connected

Information Commands

Command Description
? or H Display the TNC command help
MY Show or set the local TNC callsign (default QS6USR-15)
MON ON / MON OFF Enable or disable monitor output
MCON ON / MCON OFF Enable or disable monitor-while-connected output
MH Show stations heard by the simulated TNC
DISP Display current TNC settings
ST Show current TNC status

Mode Commands

Command (modem) Description
AT+TNC Enter raw TNC mode from the main terminal
AT+MODEM Return to modem AT command mode
+++ Escape from converse mode to command mode

Node Commands (at QS6GA-0)

Once connected to the packet node, the node has its own command set:

Command Description
? Display node help
N List all reachable nodes
C <call> Connect onward to another station
B or BYE Disconnect from node

Available Packet Services

The following simulated stations are reachable on the packet network. Connect to each with C <callsign> from the TNC command prompt or node.

QS6GA-0 — Packet Node

The central NET/ROM node for the Edmonton packet network. Use it as a starting point and routing hub.

C QS6GA-0

From the node you can list all reachable stations with N and then connect onward with C <callsign>.

QS6GA-1 — Packet BBS

A classic amateur packet bulletin board system. Leave messages, read bulletins, and browse files.

C QS6GA-1

Common BBS commands: L list messages, R <n> read message n, S <call> send a message, B disconnect.

QS6NAS-1 — Naseby BBS

An alternate BBS with a JNOS-style prompt and a separate message fixture. Use it to see how packet systems with different sysop styles can share the same channel.

C QS6NAS-1

QS6GA-10 — Weather Service

Current conditions and forecast for Edmonton, retrieved from the weather backend.

C QS6GA-10

QS6SLP-1 — Mailbox (personal mail)

Personal mailbox service. Send and read private messages addressed to your callsign.

C QS6SLP-1

QS6SLP-0 — Chat

Multi-user packet chat channel. All connected stations see each other's messages.

C QS6SLP-0

Monitor Pane

The monitor pane shows every AX.25 frame crossing the simulated 145.010 MHz channel. Frames are colour-coded:

Colour Meaning
Bright green Frames received at your local TNC (RX)
Red Frames transmitted by your local TNC (TX)
Grey Frames between other stations (passively monitored)

Each frame shows the source callsign, destination callsign, frame type, and any data payload. Understanding frame types helps you follow what the network is doing:

Frame type Meaning
SABM Set Asynchronous Balanced Mode — connection request
UA Unnumbered Acknowledgement — connection accepted
DM Disconnected Mode — connection refused or station busy
DISC Disconnect request
I Information frame (numbered, carries data)
RR Receiver Ready — acknowledgement, no data
UI Unnumbered Information — unconnected broadcast

The simulated radio channel uses CSMA (Carrier Sense Multiple Access) with p-persistence, exactly as a real shared VHF channel would. If two stations transmit at the same time, a collision occurs and both must back off and retry. You can watch this in the monitor pane during busy periods.

Understanding the Layout

The /packet/ page is laid out like a 1990s BPQ32 packet station:

+---------------------------------------------+
|  Local TNC (QS6USR-15)  Remote TNC (QS6GA)  |  <- TNC panel
+---------------------------------------------+
|  [Quick Start guide]                         |  <- Inline guide
+---------------------------------------------+
|  Channel Monitor 145.010 MHz                 |  <- Monitor pane
|  (all AX.25 frames scroll here)              |
|-------------------------------------------- |
|  Connected service output scrolls here       |  <- Command/converse pane
|  cmd: _                                      |
+---------------------------------------------+

The resize handle between the monitor and command panes can be dragged to adjust the split.

Callsign and RF Boundary

QS6 callsigns are fictional emulator.ca stations. They follow the AX.25 callsign format but are not allocated by any amateur-radio authority and do not correspond to any real station.

Real callsigns, real RF transmission, and real on-air amateur-radio operation are explicitly out of scope for this simulation. If you hold an amateur-radio licence and want to use real on-air packet with real callsigns, you need physical hardware (a TNC and transceiver) and must comply with your national telecommunications authority's rules. emulator.ca does not provide a path for real on-air operation.

The browser-local simulation is intentional. It lets anyone explore packet radio concepts safely, without a licence, without hardware, and without the risk of interfering with real radio operations.

Technical Background

Protocol Stack

The AX.25 implementation covers the full stack from audio to network layer:

Layer Description
AFSK modem Bell 202 audio: 1200 Hz (mark) and 2200 Hz (space) at 1200 baud
HDLC codec Frame boundaries, CRC-CCITT error detection, bit stuffing
AX.25 v2.0 Connected-mode data link (SABM/UA/I/RR state machine)
NET/ROM Network-layer routing table and NODES broadcasts

All layers run as a Rust WebAssembly module compiled from peripherals/ax25/. The TypeScript TNC emulation layer (web/src/serial/tnc/) handles PK-232 command parsing, the simulated radio channel, and backend hosting.

Audio

The simulated channel generates Bell 202 audio through the Web Audio API. You will hear the characteristic 1200-baud packet bursts if your system audio is on. Audio uses stereo panning to distinguish your local TNC from the remote TNCs on the channel.

Simulation Limits

Aspect Behaviour
Channel speed 1200 baud (VHF packet standard)
Channel model Shared medium with CSMA/p-persist, collision detection
Propagation No path loss, fading, or Doppler modelled
Network Single-hop NET/ROM node; multi-hop routing not implemented
Real RF Never transmitted

Appendix A: Quick Reference

+-------------------------------------------------------------+
|          PACKET RADIO STATION QUICK REFERENCE               |
+-------------------------------------------------------------+
|  ACCESS:  /packet/   or main terminal with PK-232 modem     |
|                                                             |
|  FIRST COMMAND (standalone):  C QS6GA-0                    |
|  FIRST COMMAND (modem):       ATDQS6GA-0                   |
|  ENTER TNC MODE (modem):      AT+TNC                       |
|  RETURN TO MODEM:             AT+MODEM                     |
|  ESCAPE TO CMD (converse):    +++ (no Enter, wait 1 s)     |
|                                                             |
|  STATIONS:                                                  |
|    QS6GA-0   Node (start here)                             |
|    QS6GA-1   BBS                                           |
|    QS6GA-10  Weather                                       |
|    QS6NAS-1  Naseby BBS                                    |
|    QS6SLP-0  Chat                                          |
|    QS6SLP-1  Mailbox                                       |
|                                                             |
|  NODE COMMANDS:  ?=help  N=nodes  C <call>=connect  B=bye  |
|  DISCONNECT:     D  (from any connected service)           |
+-------------------------------------------------------------+

See Also


Packet Radio Station is a product of Emulator.ca Systems. This simulation does not transmit RF and uses only fictional QS6 callsigns.