Channels & keys

Joining meshes, PSKs, QR import

How Meshtastic channels work

A channel is a name plus a pre-shared key (PSK). Radios sharing both can read each other's traffic; everything else on the same frequency is undecryptable noise to you. Slot 0 is the primary channel (usually LongFast with the well-known default key AQ== — public by convention); slots 1–7 are secondary channels, often a community or private group with a real key.

Joining a community mesh

Communities publish a channel URL (https://meshtastic.org/e/#…) or QR code that encodes the full channel set and usually the LoRa tuning (modem preset, frequency slot). Import it in Perch's channel manager — or via API:

curl -X POST http://127.0.0.1:2667/api/channels/import \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://meshtastic.org/e/#CiUSAQ…"}'

The radio writes the config and reboots; you're on the community's channels afterward. Export your current set with GET /api/channels/export or as a QR from GET /api/qr — that's how you clone a config onto a second radio.

Keys, decryption, and what Coop does with them

Coop keeps a keyring of every channel key it knows and tries them all when decrypting observed traffic — including packets your radio couldn't decode (a channel the radio isn't configured for, or traffic arriving via MQTT). Decoded packets are tagged with the channel that matched, so multi-channel captures stay sorted.

Region and radio settings

Two sharp edges. Licensed-operator ("HAM") mode disables encryption entirely — it will silently break any keyed community channel. And anything you transmit on a channel whose key others hold is public to them, including position packets: if your home location is sensitive, reduce position precision on the channel or disable position broadcast. (The public demo's data is location-scrubbed for exactly this reason.)