docs › Signals and modes › Weak signals
weechat-radio:$ Weak signals
Chat still works when the path is noisy, fading, or barely above the noise. You pick a slower preset. The program retries and steps down if the other station does not acknowledge.
Upgrade every station first
This build of wcr (v1.0.15-rc2) speaks protocol version 2, and so does the hub. Older nodes speak a different packet layout. Version 1 frames are still decoded, but every station that wants to talk on radio with this hub should run this build.
What you need
-
This build of
wcr - A radio path that already works on a clear signal. See radio setup.
-
For HF: start with
hf-poor. Drop tohf-weakorhf-deeponly if frames keep failing.
Presets
Each preset is a sound speed. On HF, go slower only when the faster one keeps failing.
Switch with /radio preset <name> or /preset <name> in the window. First mode is what the status bar TX field shows on the first key-up. A missed ACK steps down that list and stops at the last one.
| Preset | First mode | If it retries | Use when |
|---|---|---|---|
vhf-fm | OFDM QPSK 1/2 | RDM-1200S, RDM-600S, RDM-300S | Local VHF/UHF FM, a clean signal |
hf-good | OFDM QPSK 1/2 | RDM-1200S, RDM-600S, RDM-300S | Steady HF SSB |
hf-poor | RDM-600S | RDM-300S, then MFSK-32R | Fading HF / NVIS (the usual HF calling preset) |
hf-weak | RDM-300S | MFSK-32R | The other station is faint |
hf-deep | MFSK-32R | Stays on MFSK-32R | Last resort. Very slow. Short messages only |
vox-safe | RDM-600S | Stays on RDM-600S | Any radio keyed by VOX. Long lead so the radio is keyed before data |
The receiver hears all of these at once. You can send hf-weak while they are still set to hf-poor.
What the program does for you
- If nobody ACKs your message, it sends it again (three tries by default).
- Each retry uses a slower, tougher waveform. The status bar TX field shows the current one (for example
RDM-300S). - RETRY counts how many extra sends have gone out.
- When an ACK comes back, it includes how strong they heard you. A good report steps the waveform back up.
- Lines that start with
!!(emergency) go out twice, a moment apart, so a fade is less likely to take both. - Group chat on HF is split into pieces. Any two of three pieces rebuild the message. If several internet gateways each hear a different piece, the hub stitches them.
- If the frequency is already busy, the program waits for a gap (status bar PTT reads
wait). A station’s first three beacons go about a minute apart, then one every 5 minutes. A due beacon waits until an exchange in progress is over (a line and its receipt, a mail and its acceptance), for one exchange at most, and goes ahead of this station’s own queued lines. High occupancy holds it only while frames are being decoded. The countdown shows that time:after exchange,pendinguntil the beacon reaches the modem, andbusywhile a decoded frame is still fresh. Lines sent in the firstrf.startup_hold_sseconds after start (120) wait until another station has been heard (not on VOX, which sends no beacons). Group ACKs and retries are staggered so they do not all key at once.#bulletinstops at[ok]. When the retries are used up the line waits two more intervals, then shows[no].
Busy channel
modem73 carrier-sense is on for every preset. On top of that, wcr keeps a single air queue: one frame (or fragment burst) at a time, emergency first, then ACKs, then your chat, then relays, then beacons.
OCC in the station panel is channel occupancy 0–100. wait means a frame is queued until the channel is idle. After the defer cap it is handed to the modem anyway: 3 seconds for an emergency or an ACK, 15 seconds for chat and relays. An ACK is then keyed with the modem's carrier sense off. Chat and relays can still be held by a carrier the modem hears.
Steps (HF fading)
-
Check audio first
Confirm audio is good, not low or hot. Distortion is worse than a weak but clean signal.
-
Start on hf-poor
Set a starting preset:
/radio preset hf-poor
-
Test one line
Send a short test to a station you can already hear, or to
#bulletin. -
Let it step down
Watch the status bar. If RETRY climbs, TX steps down the list in the table above (on
hf-poorthat is RDM-600S → RDM-300S → MFSK-32R). Leave it. -
Go slower by hand
If nothing decodes after several tries, set
hf-weakyourself, thenhf-deepfor a one-line check.
Knobs in wcr.toml
[rf] max_retries = 3 # extra sends. [x4] is the last copy, then two waits before [no] frag_k = 2 # pieces of data frag_m = 1 # spare pieces; any 2 of 3 rebuild the message emergency_dup_ms = 400 csma = true slot_ms = 100 quiet_ms = 300 max_defer_ms = 15000 emergency_max_defer_ms = 3000 turnaround_ms = 250 congested_pct = 60 ack_dither_ms = 800 beacon_jitter_s = 15 retry_jitter = true # routine waits 45s, 90s, 180s, then 360s twice before [no], each × 0.75–1.25 startup_hold_s = 120 # own lines wait until another station is heard. 0 sends at once. None on VOX outbound_max_age_secs = 3600 # older unacked outbound is [no], including after restart
How you know it worked
- A faint station's callsign appears in HEARD with a low or negative SNR.
- Your line gets
[tx]then[ok](delivered), even if RETRY was 1 or 2 first.#bulletinstops at[ok]. - TX may show a slower mode than your preset. That is expected on a rough path.
- On a busy frequency, OCC climbs and PTT may show
waitinstead ofidle. That is the air queue holding your frame.
How this sits next to JS8, FT8, Olivia, and APRS: compare modes. Packet layout for developers: wire protocol. HF cable: HF rig with CAT. Same text offline: wcr help weak.