Skip to content
Builder Bob edited this page Jun 23, 2026 · 8 revisions

APRS Bridge

Crow bridges APRS text messages between AREDN and the APRS network. You can run a single APRS backend or multiple backends simultaneously and bind different channels to different backends.

⚠️ Important: APRS is public amateur-radio traffic. Keep tx_enabled: false until you understand your callsign, APRS-IS passcode/TNC setup, and operator control requirements.


Quick Setup

Single APRS-IS Backend (receive-only)

{
  "callsign": "N0CALL-10",
  "aprs": {
    "enabled": true,
    "callsign": "N0CALL-10",
    "channel": "APRS og==",
    "backend": {
      "type": "aprsis",
      "host": "rotate.aprs2.net",
      "port": 14580,
      "passcode": "-1",
      "tx_enabled": false
    }
  },
  "channels": [
    { "namekey": "APRS og==", "telemetry": false }
  ]
}

Multi-Backend Setup

Define multiple backends and bind channels to specific ones:

{
  "callsign": "N0CALL-10",
  "aprs": {
    "enabled": true,
    "callsign": "N0CALL-10",
    "channel": "APRS og==",
    "backends": {
      "internet": {
        "type": "aprsis",
        "host": "rotate.aprs2.net",
        "port": 14580,
        "passcode": "12345",
        "tx_enabled": true
      },
      "rf": {
        "type": "kiss_tcp",
        "host": "127.0.0.1",
        "port": 8001,
        "tx_enabled": true
      }
    }
  },
  "channels": [
    { "namekey": "APRS og==", "telemetry": false, "backend": "internet" },
    { "namekey": "APRS-RF og==", "telemetry": false, "backend": "rf" }
  ]
}

Restart Crow:

/etc/init.d/crow restart

Backend Types

APRS-IS

Connect to the internet APRS network.

{
  "type": "aprsis",
  "host": "rotate.aprs2.net",
  "port": 14580,
  "passcode": "-1",
  "tx_enabled": false
}
Field Description
host APRS-IS server hostname
port APRS-IS server port (usually 14580)
passcode Hash of your callsign; -1 = read-only (see APRS-IS Passcode)
tx_enabled Set true to transmit messages (requires valid passcode)

Dire Wolf KISS TCP

Connect to a local Dire Wolf TNC.

{
  "type": "kiss_tcp",
  "host": "127.0.0.1",
  "port": 8001,
  "tx_enabled": true
}
Field Description
host Dire Wolf host
port KISS TCP port
tx_enabled Enable transmitting

TCP Text Stream (Xastir / YAAC)

Connect to an APRS application with a TNC2-style TCP interface.

{
  "type": "tcp_text",
  "host": "127.0.0.1",
  "port": 14580,
  "passcode": "12345",
  "tx_enabled": true
}
Field Description
host APRS application host
port TCP text port
passcode Optional; hash of your callsign for authentication (see Passcode)
tx_enabled Enable transmitting

APRS-IS Passcode

The APRS-IS passcode is a simple hash of your base callsign (without SSID). It is used by the aprsis and tcp_text backends to authenticate for transmit.

The passcode is not secret — anyone can compute it from a callsign. APRS transmissions are public amateur radio traffic.


Sending Messages

All APRS messages go on the configured APRS channel (e.g., APRS og==).

Direct message

@N0CALL-4 hello there

To a group

First create or join a group:

/join #TacNet N0CALL-4 N0CALL-7

Then send to the group:

#TacNet radio check

Bind a group to a specific backend

/join #TacNet backend=rf N0CALL-4 N0CALL-7

Per-Channel Backend Binding

In multi-backend mode, bind each channel to a named backend:

"channels": [
  { "namekey": "APRS og==", "telemetry": false, "backend": "internet" },
  { "namekey": "APRS-RF og==", "telemetry": false, "backend": "rf" }
]

Messages on APRS-RF og== use the rf backend. If no backend is specified, the default (first defined) is used.


Part 97 and AREDN

APRS channels must use the og== key (AREDN open key) because:

  • APRS traffic is public amateur radio content (FCC Part 97)
  • Part 97 prohibits encryption
  • The og== key transmits in the clear

Troubleshooting

Check connection status:

/backends

Lists all active backends and their connection state.


Full Configuration Reference

See Configuration — APRS Bridge for complete field definitions and examples.

Crow Wiki

Pages

Markdown files

  • APRS.md
  • Backend-Selection-and-Deployment.md
  • Change-Log.md
  • Command-Reference.md
  • Configuration.md
  • Configuring-Channels.md
  • Home.md
  • LoRa-Gateway-Tags.md
  • Meshtastic-API.md
  • Memory-Use.md
  • Strict-Gatekeeper.md
  • USB-Storage.md
  • Winlink.md
  • _Sidebar.md

Maintenance

  • Keep every .md wiki page linked here.
  • Keep Home.md and _Sidebar.md in sync.
  • When a wiki page is removed, remove it from both the Home page inventory and this sidebar.

Clone this wiki locally