Fixing Our Congestion Problem
A proposal for dual-frequency backhaul using existing MeshCore features
TL;DR
Our summit repeaters hear every node in the mesh and are choking. The fix: move summit nodes to a second frequency so they only talk to each other, and add a few dual-radio "bridge" nodes to connect the two layers. No changes for most operators. MeshCore's serial bridge handles all the routing. The bridge nodes require custom firmware builds with bridge support enabled — the official builds don't include it. We can pilot it with one summit and one bridge node to prove it works before asking anyone else to change anything.
If you've been on the mesh lately, you've probably noticed: messages are getting dropped, delivery is unreliable, and the network feels sluggish even when your local nodes seem fine. This isn't a hardware problem and it isn't bad firmware. It's a physics and topology problem — and it's going to keep getting worse as we add more nodes.
The summit nodes are victims of their own success
Our high-altitude repeaters have incredible coverage — they can see nearly every node in the region. But that's exactly the problem. On a single shared frequency, they hear everything: every companion ping, every relay hop, every ACK from every node. LoRa's low data rate means the channel fills up fast. The summit nodes — the very backbone of our mesh — are the first nodes to drown. The better our coverage gets, the worse this becomes.
This is not a new problem in mesh networking. It's well understood: when a node can hear too many peers, the shared channel becomes unusable. The standard solution is hierarchy — splitting the backbone from the local mesh so they don't compete for the same airtime. That's what this proposal does.
This isn't hypothetical. Here's what our observer nodes are reporting right now (24-hour averages):
Sees Vancouver to Olympia
Sees Vancouver to Olympia
Moderate node, sees both summits
The averages are still manageable, but the peaks tell the real story. Both summit nodes are regularly spiking above 20% RX utilization — the rough threshold where LoRa collision rates start seriously degrading reliability. Haystack is hitting 28%. Every node we add to the mesh pushes those peaks higher. The averages will catch up eventually, but the damage is already happening during peak activity.
Every one of those lines is a transmission the summit node has to process. Every companion checking in, every local repeater relaying — the summit hears it all and can't keep up. And as we add more nodes (which is the whole point), it only gets worse.
Give the summit nodes their own frequency. Create a dedicated "backhaul" channel that only carries traffic between summit repeaters and a handful of designated bridge nodes. The local mesh stays on its current frequency, completely unchanged. A small number of dual-radio bridge nodes sit between the two layers and relay messages across.
The key insight: the summits don't need to hear every companion's ping — they just need to relay messages between distant parts of the mesh. By isolating them on their own channel, they go from hearing 12+ nodes to hearing 3–5. That's the difference between a usable backbone and a saturated one.
(current → proposed)
companions & local repeaters
to pilot the concept
This is the most important part. The proposal is designed so that the vast majority of operators change nothing.
Companion Users
Change nothing. Your device works exactly as before. You won't even know the backhaul exists.
Local / Personal Repeater Operators
Change nothing. Same frequency, same firmware, same config. Your local coverage continues as-is, but with less congestion.
Summit Repeater Operators
Frequency change only. Update to the backhaul frequency. Same hardware, same firmware. Your node goes from overwhelmed to actually useful.
Bridge Node Volunteers
New build required. Two radios linked via RS-232. Needs a few volunteers at mid-altitude sites with summit line-of-sight. This is the only new hardware.
A bridge node is two MeshCore radios connected by a serial cable. MeshCore supports serial bridging as a firmware feature, but the official builds do not include bridge support. We provide custom firmware builds with bridging enabled for multiple hardware targets. Any combination of NRF52 (RAK4631, RAK19003) or ESP32 (Heltec V3, T-Beam) boards works over RS-232. For solar-powered sites, dual RAK4631s are ideal due to the NRF52's low current draw.
A companion in Tacoma sends a message to someone in Everett. The message hops through the local mesh to a bridge, crosses the backhaul via Cougar and Haystack, comes back down through the eastern bridge, and reaches the recipient. The users on either end have no idea this is happening — it just works.
We don't need group consensus to change the entire mesh overnight. Here's a low-risk way to prove the concept with minimal disruption:
Phase 1 — Proof of Concept (1–2 volunteers)
Phase 2 — Expand (if Phase 1 succeeds)
The mesh is growing, and that's a good thing. But we've hit the ceiling of what a flat, single-frequency topology can support with high-altitude repeaters in the mix. This proposal fixes the bottleneck using tools we already have — MeshCore's native serial bridge, off-the-shelf hardware, and a second frequency. Most operators won't even notice the change. The ones who do will see their summit nodes go from useless to useful.
Let's test it with one summit and one bridge. If the data backs it up, we roll it out. If not, we're only out one afternoon of tinkering.
An expansion of an idea by lother, N7JMV, and Cisien — polished with the help of AI.