The Tragedy of the Commons on 868 MHz
The Tragedy of the Commons on 868 MHz
One quiet receiver, one unexpectedly busy Sunday and one old economic story explain why a mesh can consume the very channel that makes it possible.
One Sunday afternoon I configured an 868 MHz node to do exactly one thing: listen. No beacons. No telemetry. No forwarding. Just a passive logger, quietly writing down every MeshCore packet it could decode.
The first surprise came quickly. The log contained identities whose advertised map positions lay more than 100 kilometres away. That does not prove a direct 100 km path—the position may be old or self-reported, and a frame may have reached me through a relay—but it was still a lovely reminder of what LoRa can make audible with a favourable site and link budget.
The second surprise was less delightful. The channel diary filled with repeated traffic, relayed copies and some remarkably chatty identities. It looked less like an occasional-use mesh and more like a room in which several people had decided that the best cure for not being heard was to speak more often.
A passive log is not enough to accuse a named transmitter of exceeding a legal duty-cycle limit. It misses weak and collided packets, cannot always separate an origin from a relay, and does not measure every transmitter's complete on-air time. But it can expose the engineering problem that comes before the legal argument: a shared channel is finite, and every extra transmission consumes part of it.
People have been writing about that problem since the nineteenth century. Economists gave it a name. Radio gives it an antenna.
A pasture, some cows and a very busy radio channel
In 1833, William Forster Lloyd described a shared village pasture. Each herdsman receives the full benefit of adding another cow, while the cost of the extra grazing is spread across everyone who uses the common land. The locally attractive decision is to add one more cow. When everyone follows the same logic, the pasture is eventually ruined.
Garrett Hardin later made the phrase famous: the tragedy of the commons.
Now swap the vocabulary.
No single mesh owns it, and lawful users outside the hobby may share it too.
Every transmission occupies time, bandwidth and a collision domain at one or more receivers.
It may help its sender immediately while distributing more collision and delay risk across everyone nearby.
The 868 MHz band is the pasture. Airtime is the grass. Every packet is a cow.
A node that advertises more often, repeats more aggressively or floods farther may improve its own immediate chance of being noticed. The cost appears elsewhere: another packet overlaps, a queue grows, a useful message waits, or a retry adds still more traffic. The application may cheerfully report “sent” while the shared channel pays the bill.
That is the trap. The private benefit is immediate and visible. The distributed cost is delayed and mostly invisible.
What my listening node saw—and what it could not know
The Sunday log was a local spectrum diary, not a regulator's finding. That distinction matters because a mesh has three different ledgers:
| Ledger | What it describes | What my passive node could establish |
|---|---|---|
| Transmitter duty cycle | The cumulative on-air time of one physical transmitter over the defined observation period and frequency range. | Not completely. A receive log may miss emissions and may not prove which physical radio originated a relayed frame. |
| Local channel occupancy | The fraction of time RF energy or decodable traffic is present at one receiving location, within a stated bandwidth and threshold. | Partly. A suitable recording can measure local occupancy, but a packet log sees only what its receiver can decode. |
| Delivered mesh traffic | The useful messages that arrive within an acceptable delay after relays, duplicates, acknowledgements, collisions and retries. | Only from the endpoints being observed. “More transmissions” and “more useful delivery” are not the same result. |
A busy log can therefore justify a proper investigation without proving that every visible node is illegal. High local occupancy can occur while individual transmitters remain within their applicable limits. A hidden transmitter can exceed a limit without appearing in one receiver's decoded log. A location advertised by software is not a calibrated range measurement.
That does not make the observation worthless. It makes the wording important. “This receiver decoded repeated traffic from these identities during this interval” is evidence. “Every one of those distant nodes broke the 10% rule” is a conclusion the log cannot carry on its own.
There is no single 10% rule for all of 868 MHz
The phrase “EU 868” hides several frequency ranges and access conditions. Under the current harmonised EU framework, non-specific short-range devices have different routes depending on the exact part of the band:
| Frequency range | Maximum e.r.p. | Harmonised access condition |
|---|---|---|
| 868.0–868.6 MHz | 25 mW | Qualifying spectrum-access and interference-mitigation techniques, or duty cycle no greater than 1% |
| 868.7–869.2 MHz | 25 mW | Qualifying techniques, or duty cycle no greater than 0.1% |
| 869.4–869.65 MHz | 500 mW | Qualifying techniques, or duty cycle no greater than 10% |
| 869.7–870.0 MHz | 5 mW without an additional access requirement; 25 mW conditionally | At 25 mW: qualifying techniques, or duty cycle no greater than 1% |
The familiar 10% alternative belongs to the 869.4–869.65 MHz non-specific SRD entry. It is not a blanket allowance for every radio, profile and channel carrying an “868 MHz” label. Belgium's BIPT interface specifications remain the national reference for the exact equipment category and frequency range.
Licence-exempt does not mean condition-exempt. Check the exact frequency, equipment category, radiated power, occupied bandwidth and the spectrum-access or duty-cycle route on which the equipment relies. Firmware labels and community presets do not replace those conditions.
Duty cycle itself is the cumulative transmission time of one transmitter divided by the specified observation interval:
d = ΣTon / Tobs
Where the observation interval is one continuous hour, a 10% ceiling corresponds to no more than 360 seconds of transmitter-on time in that hour under that route.
Every emission from that physical transmitter spends part of the account: messages, advertisements, telemetry, forwarding, acknowledgements and retries. A quiet node cannot donate its unused airtime to a busy relay.
The dangerous little sentence: “Just turn the limit up”
The temptation that worried me when I examined the logs was not an abstract one. MeshCore's official command documentation currently exposes a configurable duty-cycle value, documents 50% as the default and even permits 100%, while explicitly telling the operator to choose a value appropriate to the jurisdiction and channel plan.
That makes the configuration powerful. It does not make every selectable value lawful on every channel.
“Turn it up so your messages get through” sounds practical because it can help one node for a while. Faster for you. For now. But it also demonstrates the commons problem perfectly: one operator receives the immediate benefit, while collision risk and lost headroom are shared with everyone else.
Software can expose a control for laboratory work, other regions or another regulatory route. The presence of the control is not permission. The legal and engineering questions are what the transmitter actually emits, where it emits it, and what access conditions apply.
How a successful mesh can begin to strangle itself
Shared-channel load is better counted in attempted packet-seconds than in node names. A useful first-order quantity is:
G = Σ λiTi
λi is the attempted transmission rate and Ti is time on air. Relay copies, acknowledgements and retries all belong in the sum.
As offered load rises, more packets overlap at receivers. Lost packets may trigger retries, and retries add more load. Flood routing can turn one application message into several physical transmissions. A well-sited relay can join collision domains that were previously separate. Hidden nodes may both hear silence and then collide at the same destination.
A mesh does not die with a bang. It dies with ten thousand retries.
There is no universal occupancy percentage at which every mesh collapses. Capture effect, spreading factor, bandwidth, coding rate, packet length, access method, topology, duplicate suppression and spatial reuse all move the boundary. The important curve is useful messages delivered versus packet-seconds attempted—not the reassuring number of green “sent” indicators.
This is not a new movie. CB became a shouting match in crowded places. Apartment Wi-Fi channels demonstrate the same incentives every evening. The mechanisms differ, but the script is recognisable: success attracts users, users add traffic, and traffic without stewardship consumes the success.
The commons has a sequel
Hardin's bleak ending is memorable, but it is not the only ending. Elinor Ostrom's work showed that communities can govern common resources when participants can make suitable rules, observe their effects and adjust them together.
For a radio mesh, that means known maintainers, visible configuration, measured airtime, agreed traffic budgets and a way to contact someone when a node becomes destructive. It means treating the legal maximum as a ceiling, not a traffic target. It means asking whether telemetry, advertising, hop depth and retries buy useful delivery before allowing them to fill the channel.
The amateur service offers an instructive contrast. Callsigns, operator competence, band planning and a culture of listening can make coordination easier because participants are not completely anonymous. But amateur spectrum is not a magic escape: national allocations, identification, content, automatic-station and interference rules still apply. In Belgium, unattended fixed amateur operation has its own authorisation boundaries.
The useful lesson is not “move every mesh to an amateur band.” It is that a shared resource works better when users have identity, feedback, agreed rules and responsibility.
Be a steward, not the cleverest herdsman
A responsible mesh starts with the exact legal profile, then builds an airtime budget below it. Measure complete packet time on air. Separate original traffic from forwarding. Count advertisements, telemetry, acknowledgements and retries. Map which nodes actually contend at the same receivers. Test the busiest credible hour and watch delivery, latency and queue depth—not just transmission count.
If the channel is becoming busy, reduce traffic that contributes little. Do not hide behind “my one node hardly matters.” The tragedy is created by hundreds of individually negligible decisions pointing in the same direction.
My Sunday listening node did not produce a courtroom exhibit. It produced something more immediately useful: a warning. The mesh was making its shared cost visible, packet by packet.
The tragedy of the commons is not fate. It is what happens when nobody takes responsibility for the resource between the antennas.
Configure your node as if the band belongs to everyone.
Because it does.
Primary and project references
- Commission Implementing Decision (EU) 2025/105 — harmonised SRD conditions
- ETSI EN 300 220-2 V3.3.1 — non-specific SRD spectrum access
- BIPT — Belgian short-range-equipment interfaces
- BIPT — conditions for unmanned fixed amateur stations
- MeshCore official CLI documentation — duty-cycle controls
- Prize in Economic Sciences 2009 — economic governance of the commons
Mini-FAQ
- Is every EU 868 MHz device limited to 10% duty cycle? No. Conditions vary by frequency range, category, radiated power and access route. The familiar 10% alternative belongs to the 869.4–869.65 MHz non-specific SRD entry.
- Can a passive packet logger prove that a transmitter exceeded its limit? Not by itself. It may miss emissions and may see relayed or duplicate frames. Physical-device identity and complete transmitter-on time over the applicable interval must be established.
- Why did the Sunday log still matter? It exposed repeated traffic and a busy local mesh, preserved the long-distance listening observation and provided a concrete reason to measure occupancy, forwarding and airtime properly.
- Does a configurable 50% or 100% firmware value make that setting legal? No. A software option may serve other regions or tests. Operation must still satisfy the exact national frequency, power, bandwidth and spectrum-access conditions.
- Why can more mesh traffic deliver fewer useful messages? Collisions waste packet time, while retries and flooding add more attempted transmissions. That positive feedback can increase delay and reduce delivery.
- Do amateur bands automatically solve the commons problem? No. Identity and coordination can help, but national amateur allocations, station authorisation, identification, content and automatic-operation rules still apply.