Also known as: talker alias, radio alias, unit alias
A talker alias is a short human-readable name a radio transmits for itself — “ENGINE 12”, “DISPATCH”, a unit’s callsign — so a listener sees a name instead of a bare numeric radio ID.1 On Motorola P25 systems the alias is a proprietary feature: the radio periodically broadcasts its display name, framed together with its full source identity and a checksum, spread across several small fragments that a receiver reassembles. GopherTrunk decodes the framing, the identity, and the alias text itself: the proprietary cipher that obfuscates the name was recovered clean-room and is verified against real over-the-air traffic, so the decoded name surfaces on the radio’s entry. See the operator guide, Talker aliases.
Message framing
Once its fragments are concatenated, an alias message has the same layout regardless of which
carrier delivered it (internal/radio/p25/motorola/alias.go):
| Bits | Field | Meaning |
|---|---|---|
| 0–19 | WACN | 20-bit wide-area network ID |
| 20–31 | System ID | 12-bit system ID |
| 32–55 | Radio ID | 24-bit source unit ID |
| 56 … end−16 | Alias | cipher-obfuscated display name (UTF-16 BE once decoded) |
| last 16 | CRC-16/GSM | checksum over everything before it |
The first 56 bits are the SUID (system unit ID) — WACN, System, and Radio ID together —
which uniquely names the radio across the network. The alias bytes that follow are run through
the per-byte cipher to recover the name. A trailing
CRC-16/GSM (polynomial 0x1021, init 0x0000, xor-out 0xFFFF) validates that the
fragments reassembled correctly and rejects a garbled sequence.
Carriers and reassembly
Three on-air carriers deliver alias fragments, and all reassemble to the same framing above:
LDU1 link control, TDULC link control, and the
Phase 2 FACCH-S MAC PDU. On the trunking side, the
alias also rides in a vendor TSBK (opcode 0x15, under
either the Motorola or Harris MFID), each block carrying a source ID, a block index, a block
count, and three bytes of alias data. GopherTrunk keeps the cipher, framing, and CRC in one
shared package so each carrier owns only its fragment transport and shares the decode.
Verification and trust
Both halves are verified. The SUID framing reproduces SDRTrunk’s fragment byte stream exactly
(the nibble-aligned reassembly fix, issue #778), which is why the WACN, System, and Radio ID fall
out correctly on real traffic. The alias text decodes too: the obfuscation cipher was recovered
by clean-room reverse engineering and is enabled (CipherVerified = true, issue #773) — it
reproduces a held-out reference set byte-for-byte (1242 of 1242 characters) and decodes the real
over-the-air capture from issue #376 (RID 200062) to its radio’s actual display name, “CRIO 0062”,
with a matching CRC-16/GSM. The CRC is also what delimits the cipher region: a FACCH block’s
zero-pad is carried along by reassembly, and the self-delimiting CRC strips it before the
length-seeded cipher runs. The CRC stays advisory for suppression (a carrier whose CRC differs
must not hide a valid alias), while a decode that is not clean printable text is still published
flagged unreliable so a bit-corrupted fragment sequence never reads as a confirmed name.
Sources
-
Project 25 — Wikipedia, on the P25 standard. The talker alias is a proprietary Motorola feature; its framing is verified against SDRTrunk’s fragment stream and its cipher is clean-room recovered and verified against real over-the-air traffic (issues #778, #773). ↩