Node operator handbook

Register your node with GMRS·NET

Two ways in: a single HTTP POST every 60 seconds, or the classic iax.conf register line your existing Asterisk / app_rpt box already speaks. Both land in the same presence table.

How presence works

Your node number and its registration password are issued on this site — find both on your dashboard. The node itself does the talking: it checks in on a timer, and the central server considers it ONLINE while the last check-in is younger than the heartbeat TTL.

Check-in interval
60 s
Heartbeat TTL
180 s
IAX2 port
UDP 4569

Miss three check-ins and the directory, world map and your owner alert email all flip you to OFFLINE. There is nothing to un-stick — the next successful check-in brings you straight back.

HTTP registration

The modern path. One JSON POST to /api/register — no SIP stack, no UDP holes, works from behind any NAT.

one-shot check-in
curl -sS -X POST https://gmrsnet.live/api/register \
  -H 'Content-Type: application/json' \
  -d '{"node": 20001, "secret": "YOUR-NODE-PASSWORD", "port": 4569}'

# 200 {"status":"ok","node":20001,"refresh_seconds":60}
keep-alive loop (bash)
#!/usr/bin/env bash
# /usr/local/bin/gmrsnet-register.sh — keep this node registered
NODE=20001
SECRET="YOUR-NODE-PASSWORD"

while true; do
  curl -sS -m 10 -X POST https://gmrsnet.live/api/register \
    -H 'Content-Type: application/json' \
    -d "{\"node\": $NODE, \"secret\": \"$SECRET\", \"port\": 4569}" \
    >/dev/null || echo "registration failed $(date -u)"
  sleep 60
done

port is optional and is only shown in the directory. Your public IP is taken from the request, so you never have to report it.

Legacy IAX2 (iax.conf)

Already running Asterisk with app_rpt? Point your existing register line at us. The server answers the REGREQ → REGAUTH → REGREQ(md5) → REGACK handshake on UDP 4569, so nothing on your node needs to change beyond the host.

/etc/asterisk/iax.conf
; /etc/asterisk/iax.conf  — legacy app_rpt / Asterisk node
[general]
bindport = 4569
register = 20001:YOUR-NODE-PASSWORD@gmrsnet.live
; register every 60s; the server marks you offline after 180s of silence

We implement the registration handshake only — presence and node coordination. Audio, call setup and linking still run node-to-node between your Asterisk boxes, exactly as they do today.

Reporting PTT to the live ticker

Add tx to your check-in and your transmissions appear on the home-page ticker and in your node's traffic history.

key up / unkey
# key up (PTT pressed)
curl -sS -X POST https://gmrsnet.live/api/register -H 'Content-Type: application/json' \
  -d '{"node":20001,"secret":"YOUR-NODE-PASSWORD","tx":true,"tx_callsign":"WRAA123"}'

# unkey (PTT released) — closes the transmission and records its duration
curl -sS -X POST https://gmrsnet.live/api/register -H 'Content-Type: application/json' \
  -d '{"node":20001,"secret":"YOUR-NODE-PASSWORD","tx":false}'

An open transmission with no update for 180 s is auto-closed, so a node that drops mid-transmission can never stay keyed up forever.

Response codes

CodeMeaningWhat to do
200Registered — you are onlineSleep 60 s, repeat
401Unknown node number or wrong passwordRe-read the secret on your dashboard
403Node suspended by an administratorContact the network admin
422Malformed body / missing fieldsSend node as a number, secret as a string
429Too many failed attempts from this IPBack off, then retry

Troubleshooting

Directory says OFFLINE but my script is running

Check the HTTP status your script gets — a 401 still 'runs' fine. Rotate the node password on the dashboard and paste it fresh.

IAX2 register never acks

Confirm outbound UDP 4569 is open and that the register line uses node:secret (the node number, not your callsign).

I need a second node

Request additional node numbers from the dashboard — up to 10 per operator, each with its own registration password.

No offline alert email arrived

Alerts are per-node; enable the toggle on the node card. Alerts fire after 5 minutes of silence, once per outage.

GMRS·NET OWNS AND OPERATES THE DARKNET NETWORKNODE SETUP DOCS|HTTP + IAX2 / UDP 4569 · HEARTBEAT TTL 180s