Also known as: DMR CSBK grant parsing, LPCN vs LCN, Tier III grant traps
DMR grant-field gotchas are the places where a reasonable reading of a DMR Tier III channel-grant CSBK is wrong — wrong field boundaries, wrong assumptions about what the grant carries, and wrong expectations about what the sync layer can tell you. Each item below produced a confusing field symptom in GopherTrunk before the correct reading was pinned down.
The grant leads with a 12-bit LPCN
Per ETSI TS 102 361-4, a Tier III channel grant’s payload leads with a 12-bit Logical Physical Channel Number (LPCN), followed by a timeslot bit, then the target and source addresses. It does not end with a 7-bit LCN.
GopherTrunk originally read the “LCN” from the last payload octet — which is actually the low byte of the 24-bit source radio address. The result was a memorable symptom on a Hytera XPT system: the LCN appeared to change on every transmission, because it changed whenever a different radio keyed up. It looked like channel-plan chaos; it was radio identity leaking into a channel field, and the LCN autoconfig learner could never converge because every call introduced a “new” channel. The fix widened the LCN from 7 to 12 bits end to end — parser, band-plan resolver, learner, config, and events (#639).
Encrypted and Emergency are not in the grant
The ETSI DMR channel-grant CSBK does not carry Encrypted or Emergency flags. Those arrive in the voice Link Control once the call is up. A parser that “finds” them in the grant is reading other fields (#639).
Not every grant should be followed
Three grant opcodes look similar and must be treated differently (#626):
BTV_GRANT(0x32) is broadcast voice — follow it.PD_GRANT(0x33) andTD_GRANT(0x34) are data grants. GopherTrunk deliberately does not follow them: retuning a voice receiver onto a packet channel just produces garbage audio. They are still observed, because data grants are a perfectly good source of LPCN-to-frequency learning.- MBC (Multi Block Control) can carry grants. On systems using a Flexible (rather than Fixed) channel plan, grants arrive as MBC header + continuation blocks; dropping MBC entirely drops those calls.
The reverse channel is not a CSBK
Inbound/outbound reverse-channel signalling does not ride a CSBK at all. It lives in the embedded signalling field of a normal DMR burst, or in a shorter burst with its own sync pattern (MS Sourced RC sync). Searching CSBK opcodes for it finds nothing (#626).
Sync words cannot detect spectrum inversion
DMR’s nine sync words are closed under the polarity flip (dibit + 2) mod 4 — the
XOR-0xAAAA… pattern a spectrum-inverted capture produces. An inverted data sync is
byte-identical to a clean voice sync, so the sync correlator alone can never tell you the
spectrum is inverted; it will happily lock and hand every downstream stage complemented
dibits. Only the FEC-protected payload can detect inversion — persistent
CRC/FEC failure with a solid sync lock is the tell (compare the TETRA equivalent in
TETRA lock facts, and the general catalog in
signal signatures)
(#264).
Symptom table
| Symptom | Looks like | Actually | Fix / check |
|---|---|---|---|
| LCN changes on every transmission; learner never converges | Channel-plan chaos, rekeying | Last octet is the source radio’s low byte; the LPCN is the first 12 bits | Parse per ETSI TS 102 361-4 (#639) |
| Encrypted/Emergency never set at grant time | Parser bug | Not present in the grant CSBK | Read them from voice Link Control (#639) |
| Scanner “ignores” PD/TD grants | Missing feature | Data grants; following them yields garbage audio | Deliberate — still mined for LPCN learning (#626) |
| Calls missing on a Flexible-plan system | Weak signal | Grants ride MBC header + continuations | Decode MBC (#626) |
| Solid sync lock, but every payload fails FEC/CRC | Wrong colour code, encryption | Possible spectrum inversion — sync words are closed under the flip | Check FEC pass rate with iq_invert toggled (#264) |
Provenance
- #639 — Hytera XPT “LCN changes every call”: the 12-bit LPCN layout and the source-address misread.
- #626 — DMR data-type coverage: PD/TD vs BTV grants, MBC grants on Flexible plans, and the non-CSBK reverse channel.
- #264 — RTL-SDR Blog V4 investigation that established the sync-word closure under polarity flip.