Skip to content

Tutorial P25

adswill edited this page Oct 17, 2026 · 1 revision

Tutorial: P25 (Project 25, Phase 1)

What it is

P25 Phase 1 is the digital radio system of North American public safety and utilities, also used elsewhere. OnAir logs calls with talkgroups, unit IDs and the emergency flag and decodes the trunking information: system, control channel, voice grants and talkgroup activity. Voice needs an mbelib you install yourself.

What you need

  • Any SDR that tunes the band: an RTL-SDR covers roughly 24 MHz to 1.7 GHz at up to about 2.4 Msps (see Radio-RTL-SDR), and so do HackRF, Airspy, SDRplay and others (Supported-radios). The narrow signals here need only a small sample rate; the mode asks for 2 Msps.
  • Antenna: a VHF/UHF/700/800 MHz antenna for your band, outdoors.
  • Frequencies (database): the 800 MHz public-safety band starts at 851.0125 MHz (NPSPAC) and the 700 MHz band at 769.0 MHz. Individual systems have their own control channels and frequencies, which are public in databases such as RadioReference; type the control channel frequency. The channel is 12.5 kHz wide.

Before you start

Set the gain so that the ADC level in the status line stays clear of full scale; use Auto-tune or Optimise gain (Your-first-reception). Too much gain makes strong neighbours (paging, FM broadcast, repeaters) leave spurs in the channel. Make sure the radio is on frequency: a cheap RTL-SDR can be several kHz off at 430 MHz, so enter its correction (ppm) in Radio settings or watch the carrier offset the panel shows. Narrow digital voice channels need an offset under about 1 kHz.

Step by step

  1. Connect the radio and antenna and start OnAir. Open the group Two-way radio and choose P25.
  2. Enter a control-channel or voice-channel frequency. Press Start; the panel says start the receiver to hear P25.
  3. On a control channel the panel says a control channel: see Calls and Trunking for the voice grants. Open Trunking for WACN / system, RFSS / site, NAC, control channel, service class, adjacent sites and channel identifiers.
  4. Open Talkgroups for the talkgroups heard with grants and calls; Calls is the log; Messages shows the data.
  5. Install mbelib yourself if you want to hear voice: Voice-codecs lists the file names and folders. Without it the panel says no mbelib: frames counted only.

What you should see

On a trunked system's control channel you see a stream of grants and the channel identifier table, which turns channel numbers into frequencies. On a voice channel: calls with talkgroup, unit and NAC. Calls with the emergency flag show EMERGENCY. An encrypted call is reported as encrypted, algorithm (0x..), key .. with no sound.

Reading the screen

Now: the current call and NAC. Calls: Carrier, Time UTC, Kind, From, Channel, Details, Length. Trunking: system information, adjacent sites, channel identifiers (Base, Spacing, Transmit offset, Width). Talkgroups: Talkgroup, Grants, Calls, Last unit, Last channel, Last heard, Notes. Messages.

Options and settings

  • Copy a call row.
  • The statistics show the data unit counts (HDU, LDU1, LDU2, TDU, TDULC, PDU), TSBK and link control CRC counters.

Troubleshooting

  • Nothing decoded. C4FM is sensitive to the frequency error; correct the radio's ppm.
  • Control channel only, no voice. The voice grants name the channels; tune to the channel frequency the Trunking tab lists, or check the panel for a follow option.
  • Encrypted talkgroups. Reported as encrypted, nothing is decrypted.
  • No sound on clear voice. mbelib missing.
  • NAC differs between channels. Normal on a multi-site system.

Tips

Legal and privacy notes

Receive only: encrypted calls are only reported as encrypted and nothing is decrypted; OnAir gives no help in defeating encryption. Listening to radio services is regulated in many countries: follow the rules where you live. The AMBE / IMBE vocoders are patented, so the voice sound comes only from an mbelib you install yourself (Voice-codecs). Talkgroup and unit information is metadata of services that may be sensitive; do not publish it. See Legal.

Under the hood

P25 Phase 1 uses C4FM at 4800 symbols/s (9.6 kbit/s) in 12.5 kHz, with a network identifier (NID: NAC and data unit type) protected by BCH, IMBE voice frames in the LDU1 and LDU2 units, trunking signalling in TSBK blocks, and link control. The standard is TIA-102 (the BAAA family for the common air interface).

Related

Mode-P25, Tutorial-Digital-voice-DMR-D-STAR-P25, Tutorial-DMR, Tutorial-NXDN, Voice-codecs, Radio-RTL-SDR, Live-map, FAQ

Clone this wiki locally