Field Guide · term

Also known as: IDEN_UP, identifier update, band plan

A P25 Identifier Update (IDEN_UP) is the control-channel message that defines a site’s band plan — the mapping from an abstract channel number to an actual downlink frequency.1 A channel grant never names a frequency directly; it carries a 4-bit channel ID and a 12-bit channel number. The IDEN_UP supplies the base frequency and step size for each channel ID, so a decoder can compute frequency = base + number × spacing and retune to follow a call. A site repeats these alongside its status broadcasts, and a receiver accumulates one slot per channel ID.

IDEN_UP (channel ID 1) base = 851.0 MHz · step = 12.5 kHz grant: ID 1, number 328 talkgroup 4001 851.0 MHz + 328 × 12.5 kHz = 855.1 MHz receiver tunes here to hear the call
The band plan and the grant are separate messages; only together do they yield a frequency, which is why a decoder must collect Identifier Updates before it can act on grants.

The three variants

Three opcodes carry the same frequency fields with different byte-0 semantics, all parsed into one IdentifierUpdate struct in internal/radio/p25/phase1/identifier.go:

Opcode Mnemonic Form Byte-0 low nibble
0x3D IDEN_UP 700/800/900 MHz 9-bit bandwidth (×125 Hz), 9-bit offset (×250 kHz)
0x34 IDEN_UP_VU VHF/UHF 4-bit bandwidth code, sign + 13-bit offset (× spacing)
0x33 IDEN_UP_TDMA Phase 2 TDMA 4-bit channel-type code (slot count + access mode)

The fields

Field Meaning Encoding
Channel ID 4-bit band-plan slot (0–15) byte 0 high nibble
Base frequency Downlink frequency for channel 0 32-bit field × 5 Hz
Channel spacing Channel-to-channel step 10-bit field × 125 Hz
Transmit offset Signed uplink offset (uplink = downlink + offset) ±, unit varies by variant
Bandwidth Nominal channel bandwidth informational only

The base frequency is transmitted in units of 5 Hz, and the channel spacing in units of 125 Hz. The transmit offset gives the uplink relative to the downlink — a monitor listening to the downlink does not need it, but it completes the picture of the channel. Bandwidth is carried for logging only: GopherTrunk’s frequency resolver uses just base, spacing, and the grant’s channel number. The Phase 2 TDMA variant (0x33) additionally flags the channel ID as TDMA, which the Phase 1 control channel uses to route a grant on that channel into the Phase 2 voice path rather than the Phase 1 FDMA path.

Relevance to SDR

GopherTrunk’s BandPlan accumulates one IdentifierUpdate per channel ID and exposes Frequency(channelID, channelNumber) to resolve a grant. Until an IDEN_UP has been seen for a channel ID, grants on it cannot be tuned — the resolver returns ErrUnknownChannelID and the control channel records a no-bandplan decode gap so the missing band plan is visible in metrics. Because a P25 site rebroadcasts its Identifier Updates continuously, a scanner that camps on the control channel long enough learns the full band plan and can then follow any grant. Snapshot surfaces the accumulated slots so a discovered system’s band plan can be documented and exported.

Sources

  1. Project 25 — Wikipedia, on the P25 standard. Field encodings follow TIA-102.AABF Tables 14/14a/16, cross-checked against OP25 and SDRTrunk. 

See also