weechat-radio:$
UTC --:--:--
LCL --:--

docs › How it works › Cross-frequency chat

weechat-radio:$ Cross-frequency chat

A station talks on one dial at a time. Same-frequency chat is radio. Different-frequency chat uses a gateway and the hub. The program never changes your radio frequency by itself.

Same dial or different dials

A radio hears only the dial it is set to. Pick a case to watch where your message can go.

A message on one dial, on two dials, and across two dials through the hub On one dial, 144.950 in the 2m band, the other station hears you directly, or a third station on that dial relays the message with one hop fewer. On two different dials, 144.950 on 2m and 7.045 on 40m, nothing is heard. Across two dials, you transmit on 2m in radio-plus, gateway A on 2m sends the message to the hub, the hub hands it to gateway B on 40m because B has recently heard the other station, and gateway B transmits it on 7.045. 2m · 144.950 · one dial, no hub 2m · 144.950 40m · 7.045 direct hops 3 hops 2 any station same dial · relays no radio path hub picks the gateway that heard them TLS TLS gateway A internet-radio gateway B internet-radio RF RF rf_egress = true them heard here in last 10 min you radio them radio you radio-plus them radio-plus

Same frequency

Both stations set the same calling spot (for example UK 2m 144.950). No internet is required. Nearby stations hear you on the air. Others on that frequency can store-and-forward the message (TTL / hops left, default 3).

Direct radio. Tell the app your dial with /radio freq 144.950 if you have no CAT.

Different frequencies

2m cannot hear 40m. There is no radio path between two different dials, however strong the signals are.

Changing band is your decision, not the program’s. If you both want RF only, agree on one dial.

Through two gateways and the hub

A station in internet-radio mode is a gateway: it has a radio on one dial and a hub link. The hub copies the message from the gateway that heard it to the gateway that has recently heard the destination — or that is the destination.

The map ticker shows this as 2m → 40m. Both gateways keep their own dial: nobody QSYs for you.

  • radio (RF only)
  • internet-radio (gateway)
  • hub / internet
  • radio-plus
  • on the air
  • over the internet (TLS)
  • no path

Radio-plus (you stay offline)

radio and radio-plus both post map telemetry when [telemetry] url is set, and that post never contains message text. Neither mode sends chat to the hub or the LAN from this computer. The only difference is whether an internet-radio gateway that hears you may forward your messages (and email) to the internet.

Radio-plus reaches the internet through a gateway Your radio-plus node transmits on RF only and never contacts the hub. A gateway that hears you passes the message to the hub, which delivers it to internet stations or to another band. your node never talks to the hub no internet here you radio-plus · 2m RF gateway hears you on 2m TLS hub internet station another band
Your node has no internet at all. The gateway is the only station on this path that talks to the hub.

radio-plus never uploads chat from this computer. A nearby gateway that hears you on RF forwards that frame to the hub for any destination, including a direct message, a closed group, and #bulletin. radio mode says do not forward, so the same gateway keeps those frames on the radio. Your line shows [gw] when the gateway has accepted the frame onto the hub. [rl] only means you heard your own frame on RF again. The hub holds an offline station's direct messages for 10 minutes (32 per callsign) and delivers them on the next hello. It does not hold groups or #bulletin.

What a gateway will and will not put on the air

Traffic arriving from the internet has to pass both gates before this node transmits. If either gate fails, the frame is delivered on the internet side only and nothing is keyed up.

Heard means on RF on this frequency, not a map pin or a LAN/hub sighting. A group flag alone does not key the radio; at least one listed member must have been heard here in the last ten minutes. #bulletin keys only if someone was heard on this dial over RF.

Two gates decide whether internet traffic goes on the air A frame from the hub is transmitted only if this node is a gateway with rf_egress enabled and the destination was heard on this dial within the last ten minutes. Otherwise the node stays quiet. hub gives this node a frame gateway with rf_egress = true yes dest heard on this dial in the last 10 minutes yes transmit on this dial no no stay quiet nothing goes on the air
A group counts as heard if any member was heard on this dial. Guest names starting with ~ need third_party = "allow" as well.
  • RF → internet: the frame has to say it may go to the internet. radio says do not forward, so a gateway leaves it on the radio. radio-plus may be forwarded. This computer does not upload chat in either mode.
  • Internet → RF: [gateway] rf_egress = true in wcr.toml. Guest names starting with ~ stay off RF unless third_party = "allow".
  • Same LAN: nodes on your local network can pass frames without the public hub. The same gateway rules still apply.
[gateway]
rf_egress = true          # put internet traffic on the air
third_party = "deny"      # guest (~nick) traffic on RF

Public bulletin and private groups

Cross-frequency chat works on the public #bulletin channel and on private groups. Both use an internet-radio gateway on each dial and the hub between them.

In internet-radio, a #bulletin line always goes to the hub and the LAN. The audience is everyone, so the program offers that path without waiting to see who is on this dial.

  • A private group goes on the air when a listed member was heard on that dial over RF in the last 10 minutes.
  • #bulletin goes on the air when anyone was heard on that dial over RF in the last 10 minutes. A gateway that has heard nobody stays quiet.

Same-frequency hops still need no hub. A station in radio mode keeps its #bulletin on the radio. The frame says do not forward, so a gateway that hears it leaves it there. A radio-plus #bulletin may be forwarded. That is the only chat difference between the two modes.

Hub routing today: the hub keeps a serves set per connected station. Your own callsign is always included. RF stations heard on your dial are added from the periodic {"heard":[...],"freq_khz":…} JSON your node sends after hub_ok (the WebSocket hello starts with an empty heard list). Private 1:1 and closed-group frames are delivered only to sessions whose serves contains the destination callsign. Internet-only stations with nobody heard on RF therefore rely on the public #bulletin path until a member appears in heard or you are the destination.

You set the dial

FREQ in the GUI and /radio qsy are operator actions. The hub never retunes a radio. Pick spots from calling frequencies and check your band plan before you transmit.

How stations learn the band

Beacons are B|<mode>|<khz>, for example B|internet-radio|144950. A frame heard on RF is tagged with the receiving station’s own dial. Hub sessions carry freq_khz. The live map has a BANDS panel; nicklists show [2m], [40m], [inet].

PathSame frequency?Who bridges
Two radios, same calling spotyesnobody (RF hops if needed)
2m station ↔ 40m stationnotwo internet-radio gateways + hub
RF station ↔ internet-only—one gateway on the RF station’s band
radioRF chat from this computernobody. A gateway must leave it on the radio. Map data can still post.
radio-plusRF chat from this computeran internet-radio gateway that hears you. This computer still does not open the hub.

Mixed PMR, CB, 2m, and internet

Worked example for a closed group with licence-free handhelds, 2m, and an internet-only member: One group across PMR, CB, 2m, and internet — settings per station, topology, and a replayable thread demo.

How you know it worked

Nicklist tags match the bands: [2m] G4ABC, [40m] M7TJF, [inet] ~ALICE. The map ticker reads like G4ABC 2m TX -> #net -> 40m, inet. Your status bar shows your own frequency and band.

Modes: modes. Suggested dials: calling frequencies. A same-dial relay when the group is spread out: hops. Same text offline: wcr help bridging.