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.
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}#!/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
doneport 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 — 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 (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
| Code | Meaning | What to do |
|---|---|---|
| 200 | Registered — you are online | Sleep 60 s, repeat |
| 401 | Unknown node number or wrong password | Re-read the secret on your dashboard |
| 403 | Node suspended by an administrator | Contact the network admin |
| 422 | Malformed body / missing fields | Send node as a number, secret as a string |
| 429 | Too many failed attempts from this IP | Back 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.