Also known as: MNI, mobile network identity, MCC/MNC
The TETRA mobile network identity (MNI) is the pair of numbers that names a TETRA network globally: a 10-bit mobile country code (MCC), drawn from the same ITU country-code plan cellular uses, and a 14-bit mobile network code (MNC) assigned within that country.1 Every TETRA cell broadcasts its MNI in the SYNC PDU and SYSINFO, radios are provisioned with the MNI of their home network, and roaming and authentication decisions key on it. For a listener the MNI is more than a label, because TETRA folds it into the physical layer: it is the upper 24 bits of the scrambling seed.
Why it matters to a receiver
TETRA scrambles every logical channel except the BSCH with the 30-bit
extended colour code — MCC | MNC | colour,
MSB-first (EN 300 392-2 §8.2.5.2). The 6-bit colour code distinguishes neighbouring cells
within a network; the MNI distinguishes networks. The practical consequence: knowing the
colour code alone is not enough to descramble anything. A receiver that searches colour
codes 0–63 while silently assuming MNI 0 is only exploring 64 seeds out of 2³⁰, and on any
real network — whose MNI is never 0 — the true seed is simply not in its search space.
Every candidate then decodes at the CRC chance floor, several rise modestly at once by
coincidence, and none dominates: a pattern easy to misread as a weak signal or as
encryption.
In trunked mode this blind spot cannot open, because the always-decodable BSCH hands over
the real MCC/MNC before anything else is attempted. In
direct mode it can and did: the DMO SCH/S carries MNI 0 on air
(that is correct parsing, not a bug — both osmo-tetra-dmo and GopherTrunk agree), so
direct-mode traffic scrambled with a real MNI gives the receiver no over-the-air way to
learn it. GopherTrunk hit exactly this on a Motorola DMO network operating with MCC 250 /
MNC 1: its empirical colour recovery — sweep candidate colours, keep the one that maximises
CRC-valid speech — found no dominant winner until the configured MNI was folded into every
candidate seed (baseMNI | c). The failing-first regression
(TestRecoverDMColourCodeNonZeroMNI) scrambles with the independent osmo-derived seed for
MCC 250 / MNC 1 / colour 7 and shows the MNI-0 sweep finding nothing while the MNI-folded
sweep recovers the exact seed.
Relevance to SDR
For trunked TETRA, GopherTrunk needs no MNI configuration — the cold-start chain
(BSCH → SYNC PDU → extended colour code) learns it. For DMO, the tetra_mcc and
tetra_mnc system-config keys supply the network MNI, which threads through the DMO
pipeline and voice chain into colour recovery and the descramble seed. Diagnostic rule of
thumb for any TETRA decode that sits at the chance floor with healthy sync: before
concluding “encrypted”, confirm the full 30-bit seed — colour and MNI — is right. The
DMO-side story, including the colour sweep’s dominance gate and the on-air captures that
exposed the blind spot, is told in TETRA DMO facts.
Sources
-
Mobile country code — Wikipedia, on the ITU country-code plan and per-country network codes that TETRA’s MCC/MNC fields reuse. ↩