Field Guide · term

Also known as: DMO, direct mode operation, TETRA direct mode

TETRA DMO (Direct Mode Operation) is TETRA’s infrastructure-less peer-to-peer mode: two radios talk directly with no base station or control channel between them.12 A transmitting station sends a Direct Mode Synchronisation Burst (DSB) to let the other radios acquire, then a train of Direct Mode Normal Bursts (DNB) carrying the call. Because there is no trunking layer, the trunked-mode ingestion path — hunt a control channel, follow grants — does not apply; a DMO receiver instead camps a direct-mode channel, detects the DSB, and follows the burst train.

DSB (acquire) freq-corr SCH/S120 bits sync tr BKN2 216 DNB (call) × N BKN1 216 norm tr BKN2 216 BKN1 … same π/4-DQPSK, training sequences and scrambler as TMO — only field layout differs
A DMO transmission opens with a DSB (frequency correction, a 120-bit SCH/S, sync training sequence and a 216-bit block) then continues as a train of DNBs, each two 216-bit blocks around the normal training sequence.

A reused physical layer

The DMO air interface reuses the trunked-mode (TMO) physical layer wholesale: identical π/4-DQPSK at 18 ksym/s, 25 kHz channels, 255-symbol (14.167 ms) TDMA timeslots, the four-slot frame / 18-frame multiframe, the same normal and synchronisation training sequences, and the same 32-tap scrambler polynomial (colour code 0 for the SCH/S and SCH/H of a DSB, exactly as TMO scrambles its BSCH). So the receiver, sync-word correlation and channel-coding machinery are shared between the two modes — only the burst field layout differs, which is the one thing DMO needs to add.

The channel coding is likewise not a new code family: DMO’s SCH/S, SCH/H, SCH/F and TCH/S run the same per-channel chains as their TMO logical-channel counterparts, so the existing decoders handle them once the blocks are sliced, de-rotated and descrambled. The only DMO-specific coding rules are the colour-0 seed for the DSB signalling blocks and the field boundaries below.

The two burst kinds

Burst Layout (relative to training-sequence lead dibit L)
DSB (sync) 40-dibit frequency correction · 60-dibit SCH/S (120 type-5 bits, BKN1) · 19-dibit sync training sequence · 108-dibit BKN2 (216 bits)
DNB (normal) 108-dibit BKN1 (216 bits) · 11-dibit normal training sequence · 108-dibit BKN2 (216 bits)

The DSB is the acquisition burst: its frequency-correction field lets a cold receiver lock, and its SCH/S (the 120-bit block ahead of the sync training sequence) carries the synchronisation PDU — the DM colour code and the master’s slot/frame numbering used to anchor the DNB traffic that follows. The SCH/S decodes exactly like a TMO BSCH (colour 0). The DNB is the payload burst: its two 216-bit blocks carry either TCH/S speech (decoded to the two 137-bit ACELP frames by the shared TCH/S chain) or SCH/F short-data signalling — a receiver tells them apart by which decode’s CRC passes. The block boundaries relative to the training-sequence lead dibit are not the same as TMO’s NDB, so DMO needs its own slicer.

Scope and honesty

GopherTrunk’s DMO support is burst detection and block slicing plus the reused channel decode: it turns a demodulated DMO dibit stream into per-burst BKN1/BKN2 type-5 blocks and, for a DNB, decodes TCH/S speech both hard- and soft-decision (the same ~2× same-carrier yield lever the TMO traffic path gets). The DM call-control protocol that rides in SCH/S / SCH/F — source and destination SSI, group, call type — is EN 300 396-3, a separate specification, and is not yet wired. Nothing here has been validated against a real DMO capture, which is a prerequisite before DMO voice can be attributed and recorded, per the standing lesson that synthetic round-trips can pass while on-air decode fails.

Relevance to SDR

internal/radio/tetra/dmo.go defines the DMBurstKind (DSB/DNB), the burst geometry, and the ExtractDMBursts / ExtractDMBurstsSoft slicers that correlate the training sequences under all four residual π/4-DQPSK rotations. dmo_decode.go maps the sliced blocks onto the shared decoders — DecodeDMSCHS (via the BSCH chain), DecodeDMSCHH (via SCH/HD), DecodeDMSCHF, and DMBurstTCHSpeech / DMBurstTCHSpeechSoft (via the TCH/S chain) — de-rotating and descrambling with the DM colour code before each decode.

Sources

  1. Terrestrial Trunked Radio — Wikipedia, on the TETRA standard and its direct mode. 

  2. Direct mode operation — Wikipedia, on infrastructure-less direct radio-to-radio operation. 

See also