Adaptive-Redundancy TDMA for Small-Group PTT Voice Mesh
A protocol design for team communications in constrained operational environments
Abstract
This article describes a TDMA (Time Division Multiple Access) protocol design for push-to-talk voice communication in small, known groups operating over sub-GHz ISM/SRD spectrum. By exploiting the heavily asymmetric traffic pattern inherent to PTT — where one or two speakers address a group of mostly-silent listeners — the protocol repurposes idle TDMA capacity as spatial-diversity redundancy with zero coordination overhead. Each node makes a purely local per-slot priority decision, resulting in a system where voice reliability increases as the number of active speakers decreases, which is precisely when reliable delivery matters most.
The design targets two primary application domains: professional cycling team communications and offshore industrial operations. Both are characterised by small groups (8–20 nodes), pre-known membership, hierarchical priority structures, and the need for reliable, low-latency voice over distances of 1–6 km in challenging RF environments.
1. Problem Statement
Current PTT radio systems used in professional cycling and offshore operations rely on analog FM or DMR on licensed UHF frequencies. These systems suffer from:
- Single-hop range limitations: No relay capability means communication fails when nodes are beyond direct range, with no graceful degradation.
- No spatial diversity: A single transmission path means a single obstruction (a human body, a steel structure, terrain) causes a dropout.
- Fixed infrastructure dependency: DMR repeaters require installation and maintenance. Analog systems have no relay capability at all.
- No adaptivity: The radio channel is either available or it isn't. There is no mechanism to improve reliability when capacity is underutilised.
A mesh network addresses the range limitation through multi-hop relay, but introduces a new problem: how to share a single half-duplex radio channel among multiple nodes for real-time voice with bounded latency.
2. Operating Environment
2.1 Regulatory
The protocol operates in the 869.700–870.000 MHz sub-band (ETSI EN 300 220, CEPT ERC Recommendation 70-03, Annex 1 Band 48), which permits:
- 25 mW ERP (14 dBm)
- No duty cycle restriction (100% continuous transmission permitted)
- ≤ 300 kHz channel bandwidth
- Licence-free operation across UK and EU
2.2 Physical Layer
| Parameter | Value |
|---|---|
| Modulation | GFSK (BT=0.5) |
| Bitrate | 100 kbps |
| Frequency deviation | ±25 kHz |
| Occupied bandwidth | ~150 kHz |
| RX sensitivity | –105 dBm (at 100 kbps) |
| TX power | 14 dBm (25 mW) |
| Link budget | ~120 dB |
| Per-hop range | 1–2 km (typical), 3+ km (line-of-sight) |
| Hardware | STM32WLE5 (ARM Cortex-M4 + SX126X radio, single chip) |
2.3 Voice Codec
| Parameter | Value |
|---|---|
| Codec | Opus (SILK mode) |
| Bitrate | 6 kbps |
| Frame duration | 20 ms |
| Frame size | ~15 bytes |
2.4 Traffic Characteristics
PTT voice has a distinctive traffic pattern:
- Highly asymmetric: Typically one speaker (a team director or supervisor) addresses the group. Simultaneous speakers are rare and brief.
- Bursty: Speech occurs in bursts of 2–30 seconds separated by longer silences.
- Broadcast: All nodes on the channel hear all traffic. There is no per-destination routing for voice.
In a 12-node network, the common case is 1 active transmitter and 11 listeners. The worst case is 3 simultaneous transmitters and 9 listeners. This asymmetry is the key insight the protocol exploits.
3. Protocol Design
3.1 Pre-Known Network Configuration
Unlike general-purpose mesh networks, the group membership is fully known before the network starts. In cycling, the team sheet defines the participants for each race stage. In offshore operations, the permit-to-work system defines each shift's working parties.
A configuration file is generated per event and loaded onto every node:
- Node list: Fixed set of node IDs, names, and roles
- Priority hierarchy: Numeric priority per node (e.g., team director = 1, road captain = 3, domestique = 8)
- Slot assignment: Each node's home slot index within the TDMA frame
- Group membership: Logical channel groups for selective audio playback
This eliminates the need for runtime discovery, association, or slot negotiation protocols.
3.2 TDMA Frame Structure
Time is divided into repeating frames. Each frame contains N slots. Each slot is assigned to at most one node.
| Parameter | Value |
|---|---|
| Frame duration | 60 ms |
| Slot duration | 3 ms |
| Slots per frame | 20 |
| Assigned to nodes | Slots 0–11 (12 nodes) |
| Overflow/relay | Slots 12–19 (8 spare slots) |
Each 3 ms slot contains:
| Component | Duration |
|---|---|
| Guard interval | 200 µs |
| TX ramp | 40 µs |
| Preamble + sync | 320 µs (4 bytes at 100 kbps) |
| Packet payload | ~1.8 ms (23 bytes: 15 voice + 8 header) |
| CRC | 160 µs (2 bytes) |
| TX→RX turnaround | 100 µs |
| Guard interval | 200 µs |
Time synchronisation across nodes is achieved via GPS PPS (pulse per second), providing sub-microsecond alignment.
3.3 Packet Header
Each voice packet carries a minimal header:
| Field | Size | Purpose |
|---|---|---|
| Source ID | 1 byte | Originating node |
| Sequence number | 2 bytes | Deduplication (wrapping) |
| Group tag | 1 byte | Logical channel for selective playback |
| Priority | 1 byte | Speaker priority (from config) |
| Hop count | 1 byte | Incremented at each relay |
| Reserved | 2 bytes | Future use |
| Total header | 8 bytes |
3.4 Broadcast Flooding with Duplicate Suppression
Voice traffic is broadcast, not routed. Every node that receives a voice frame it has not seen before will retransmit it. Duplicate suppression uses the (source_id, sequence_number) tuple: each node maintains a small table of recently seen pairs and discards duplicates. Table entries expire after 1 second.
There is no routing protocol for voice traffic. No OLSR, no AODV, no route tables. The flooding approach is viable because:
- The network is small (12 nodes)
- Every node already has a guaranteed TDMA slot for retransmission
- The cost of flooding (every node relays once) is bounded and predictable
3.5 The Priority Decision: Adaptive Slot Usage
This is the core contribution of the protocol. Each node makes a purely local decision about what to transmit in its assigned slot, using a fixed priority ordering:
1. SPEAK: I am actively speaking → transmit my voice frame
2. RELAY: I received new voice frame(s) earlier in this frame
that I have not yet relayed → relay using coverage-
weighted selection (see §3.5.1)
3. REDUNDANCY: I have already relayed a voice frame, but have a copy
I could retransmit for spatial diversity → retransmit
using coverage-weighted selection
4. TELEMETRY: No voice activity → transmit GPS position, link quality,
battery status, or other non-voice data
5. SILENT: Nothing to send → do not transmit (save power)
No coordination, no signalling, no negotiation. Each node independently follows the same priority logic. The emergent behaviour adapts to traffic load:
One speaker (common case): The speaker transmits in their home slot. Hop-1 neighbours relay in their home slots. Hop-2 and hop-3 neighbours relay in theirs. Remaining nodes — having already received the frame — retransmit it again under priority 3 (redundancy). The same voice frame may be transmitted 10+ times across the frame by different nodes at different physical locations. A receiving node at the mesh edge may hear the frame from multiple relayers via different spatial paths. This provides massive spatial diversity — even if several copies are lost to fading or shadowing, the receiver only needs one clean copy.
Three simultaneous speakers (worst case): Home slots carry origin and relay traffic. Overflow relay slots (12–19) absorb additional relay hops. Redundancy transmissions are suppressed by higher-priority relay and voice traffic. The system degrades gracefully — redundancy decreases as load increases, but the primary relay chain is preserved.
No speakers (silence): All slots carry telemetry. GPS positions, neighbour link quality tables, and mesh state updates propagate across the network, maintaining situational awareness even during voice silence.
3.6 Relay Propagation Within a Single Frame
Because relay is performed in home slots, and home slots are sequenced across the frame, a voice frame propagates outward through the mesh within a single frame period:
Time →
Slot 0: DS car speaks (origin)
Slot 1: Node 1 relays DS frame (hop 1)
Slot 2: Node 2 relays DS frame (hop 1, different spatial path)
Slot 3: Node 3 relays (hop 2 — received from node 1 or 2)
Slot 4: Node 4 relays (hop 2)
Slot 5: Node 5 relays (hop 3 — received from node 3 or 4)
Slots 6-11: Remaining nodes retransmit for redundancy
The voice frame reaches every node within 3 hops in under 18 ms (6 slot durations), well within the 60 ms frame period. This is not a scheduled relay chain — it emerges naturally from the sequential slot ordering and the local priority decision. A node simply relays the newest voice frame it has received, in the earliest available opportunity (its own slot).
3.6.1 Coverage-Weighted Relay Selection
The sequential nature of TDMA slot ordering creates an information advantage: by the time a node's slot arrives, it has directly observed every transmission in all preceding slots. This observation is exploited to balance relay coverage across multiple simultaneous voice streams without any coordination.
When a node has multiple voice frames it could relay or retransmit, it selects the frame that has received the least coverage so far in the current frame. The calculation is trivial and purely local:
For each voice frame I hold:
relay_count = number of times I observed this frame transmitted
in slots preceding mine in this frame
score = frame.priority × (1 / (relay_count + 1))
Transmit the frame with the highest score.
Speaker priority still dominates when relay counts are equal, but a lower-priority frame that has not yet been relayed will score higher than a high-priority frame that has already been retransmitted many times. The mesh self-balances coverage across all active voice streams.
Example: The DS speaks in slot 0, a rider speaks in slot 5. By slot 8, node 8 has observed the DS frame relayed six times (by nodes 1, 2, 3, 4, 6, 7) but the rider's frame relayed only twice (by nodes 6, 7). Node 8 relays the rider's frame, because it needs the coverage more.
This produces an emergent property: later slots in the frame make better relay decisions than earlier slots, because they have observed more of the frame's history. The system's intelligence increases as the frame progresses. Early slots provide fast initial propagation; later slots fill coverage gaps.
No node needs to know the network topology or communicate its relay intentions. Each node observes the same shared medium (the TDMA frame) and independently converges on a relay strategy that distributes coverage evenly — a form of implicit coordination through shared observation.
3.7 Logical Groups (Software Channels)
Nodes are assigned to one or more logical groups via the configuration file. The group tag in each voice packet determines which nodes play the audio through their speaker:
- A node always relays regardless of group membership (it cannot know the full topology)
- A node only plays audio for groups it belongs to
This enables multiple simultaneous "channels" on a single frequency and TDMA frame. For example, a team director can address a breakaway group while a second director addresses the main group, sharing the same mesh infrastructure.
3.8 Overflow Relay Slots
The 8 unassigned slots (12–19) handle contention when a node's home slot is needed for its own voice but it also has frames to relay. Overflow relay slots are statically assigned in the configuration file (e.g., node 3 has home slot 3 and overflow slot 14). The priority decision applies identically in overflow slots.
In the worst case of 3 speakers at 3 hops:
| Usage | Slots consumed |
|---|---|
| Origin transmissions | 3 (home slots of speakers) |
| Hop-1 relay | 3 (home slots of hop-1 neighbours) |
| Hop-2 relay | 3 (home slots of hop-2 neighbours) |
| Hop-3 relay | 3 (overflow slots if home slots are occupied, or home slots of further nodes) |
| Total | 12 of 20 slots |
This leaves 8 slots for redundancy and telemetry even at maximum voice load.
4. Properties of the Design
4.1 Reliability Inversely Proportional to Load
The protocol's key property: voice reliability increases as the number of active speakers decreases. This is the opposite of contention-based protocols (CSMA, ALOHA) where reliability degrades under load. In a PTT system where the critical traffic pattern is one speaker addressing the group, this property aligns perfectly with operational needs.
4.2 Zero Coordination Overhead
No slot negotiation, no RTS/CTS, no token passing, no control channel. The configuration is static and pre-loaded. The per-slot priority decision is purely local. This eliminates an entire class of protocol failure modes and reduces firmware complexity.
4.3 Bounded Latency
Worst-case voice latency is one frame period (60 ms) for 3-hop delivery. Typical latency for nearby nodes is under 10 ms. This is deterministic and independent of network load — a property of TDMA that contention-based protocols cannot guarantee.
4.4 Graceful Degradation
As hop count increases or the number of speakers increases, redundancy decreases before voice delivery fails. The system provides progressively less spatial diversity before losing connectivity entirely, giving a smooth degradation curve rather than a cliff edge.
4.5 Spatial Diversity Without Coordination
The redundant retransmissions from idle nodes create spatial diversity — the same voice frame arrives at each receiver via multiple physical paths from multiple transmitters. This provides resilience against localised fading, body shadowing, and transient obstructions without any explicit diversity protocol.
4.6 Implicit Coordination Through Shared Observation
When multiple voice streams are active simultaneously, relay coverage is balanced across streams without any signalling or negotiation. Each node observes the preceding slots in the frame and selects the least-covered frame to relay. Because all nodes observe the same shared medium, they independently converge on complementary relay decisions. This is a form of stigmergic coordination — nodes communicate their relay choices implicitly through the act of relaying, and later nodes adapt accordingly.
5. Capacity Analysis
5.1 Worst-Case Voice Capacity
With 20 slots per frame, 12 assigned nodes, and 3 ms slots at 100 kbps:
| Scenario | Voice slots used | Redundancy slots available | Feasible? |
|---|---|---|---|
| 1 speaker, 1 hop | 1 | 19 | Trivially yes |
| 1 speaker, 3 hops | 4 | 16 | Yes, massive redundancy |
| 3 speakers, 1 hop | 3 | 17 | Yes |
| 3 speakers, 2 hops | 9 | 11 | Yes, good redundancy |
| 3 speakers, 3 hops | 12 | 8 | Yes, adequate headroom |
5.2 Mesh Diameter
At 1.5–2 km per hop with 3 hops maximum, the mesh supports a total diameter of 4.5–6 km. This covers:
- A strung-out peloton on a mountain climb
- A breakaway with a moderate gap
- An entire offshore platform complex including nearby vessels
6. Target Applications
6.1 Professional Cycling
Team director to rider communication during races. 8 riders + 2 team cars. Pre-race configuration from team sheet. Replaced or supplemented by this system: analog PMR446 radios with no relay capability.
6.2 Offshore Industrial Operations
Crew communication on platforms, FPSOs, and between nearby installations. 8–20 workers per shift party. Pre-shift configuration from permit-to-work system. Operates in the same licence-free spectrum across UK and EU continental shelf jurisdictions.
6.3 Defence and Security
Small-unit communications in dismounted operations. The pre-known group structure and priority hierarchy map directly to military section/platoon organisation. The licence-free ISM operation may be relevant for covert or expeditionary use where licensed spectrum coordination is impractical.
7. Implementation Status
Hardware development is underway using STM32WLE5 Nucleo-64 development boards. The firmware is implemented in Rust using the Embassy async embedded framework. An NS-3 simulation is being iteritively developed to validate the protocol design under realistic mobility conditions using GPS trace data from professional cycling races.
8. Future Work
- Dynamic reconfiguration: Consistent slot reassignment across the mesh at runtime, enabling adaptation to topology changes during operation. A protocol for this exists, based on techniques from conflict-free replicated data types (CRDTs) for maintaining causal consistency during distributed state transitions.
- Multi-bearer operation: Extending the bearer abstraction to support simultaneous 868 MHz and 2.4 GHz radios, with automatic bearer selection based on link quality and range.
- ATEX/IECEx certification: Intrinsically safe enclosure design for Zone 1/Zone 2 deployment in offshore hazardous areas.
- Quantitative comparison with existing systems: Correlation of voice delivery performance with GPS-logged distances in real operational environments, providing the first known dataset of professional cycling team radio performance versus distance.