-
Notifications
You must be signed in to change notification settings - Fork 0
APRS
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. Keeptx_enabled: falseuntil you understand your callsign, APRS-IS passcode/TNC setup, and operator control requirements.
{
"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 }
]
}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 restartConnect 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) |
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 |
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 |
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.
-
Receive only: Use
-1(no passcode needed) - Transmit: Compute your callsign hash using an APRS passcode generator
The passcode is not secret — anyone can compute it from a callsign. APRS transmissions are public amateur radio traffic.
All APRS messages go on the configured APRS channel (e.g., APRS og==).
@N0CALL-4 hello there
First create or join a group:
/join #TacNet N0CALL-4 N0CALL-7
Then send to the group:
#TacNet radio check
/join #TacNet backend=rf N0CALL-4 N0CALL-7
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.
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
Check connection status:
/backends
Lists all active backends and their connection state.
See Configuration — APRS Bridge for complete field definitions and examples.
- Home
- Change Log
- Configuration
- Configuring Channels
- Backend Selection and Test Deployment
- Command Reference
- APRS Bridge
- LoRa Gateway Tags
- Meshtastic API Backend
- Memory Use
- Strict Gatekeeper
- Winlink
- USB Storage
APRS.mdBackend-Selection-and-Deployment.mdChange-Log.mdCommand-Reference.mdConfiguration.mdConfiguring-Channels.mdHome.mdLoRa-Gateway-Tags.mdMeshtastic-API.mdMemory-Use.mdStrict-Gatekeeper.mdUSB-Storage.mdWinlink.md_Sidebar.md
- Keep every
.mdwiki page linked here. - Keep
Home.mdand_Sidebar.mdin sync. - When a wiki page is removed, remove it from both the Home page inventory and this sidebar.