RTL-SDR Digital Trunked Radio Scanning: Decoding P25 and Tracking Trunked Systems with SDRTrunk
This site's SDR getting-started guide, NOAA satellite receiver project, and ADS-B/APRS builds all cover single-frequency or fixed-channel signals. Trunked radio systems work completely differently, and it trips up a lot of people coming from traditional scanning: instead of each agency or talkgroup sitting on one dedicated frequency, a trunked system dynamically assigns conversations to whichever frequency is free at that instant, coordinated by a control channel that constantly broadcasts assignment data. Public safety agencies, transit systems, utilities, and many businesses use trunked systems — commonly P25 (Project 25, the digital public-safety standard) or older analog trunking protocols — specifically because it uses spectrum more efficiently than dedicating a frequency per department. Listening to a trunked system means following the control channel, not just tuning a frequency, and that's exactly what tools like SDRTrunk and trunk-recorder are built for.
Legality First
In the United States, listening to unencrypted public safety, business, and most other radio traffic is generally legal at the federal level under existing scanner law, but state and local laws vary meaningfully — some states restrict using a scanner in a vehicle, and a small number restrict possession or use in certain contexts (near the scene of a crime, for example). Separately, actually using intercepted information to further a crime, evade law enforcement, or violate someone's reasonable expectation of privacy is illegal everywhere, regardless of whether the interception itself was lawful. Encrypted talkgroups (common for tactical, investigative, and increasingly routine dispatch traffic on many modern P25 systems) cannot be legally decrypted without authorization even if your software is technically capable of attempting it — treat any encrypted channel as off-limits. Check your specific state's scanner laws before regularly monitoring public safety traffic, and never use this hobby to interfere with or profit from emergency response.
How Trunking Actually Works
A trunked radio system reserves one frequency in its allocation as the control channel, which continuously transmits digital data — not voice — announcing which frequency each active talkgroup conversation has been assigned to at that moment. A radio (or your SDR software) that wants to follow "Fire Dispatch" doesn't tune a fixed frequency; it listens to the control channel, watches for a channel grant naming that talkgroup, and hops to whatever frequency was just assigned for the duration of that transmission, then returns to watching the control channel for the next grant. This is why a naive single-frequency SDR recording of a trunked system sounds like scattered fragments of unrelated conversations — you're only catching whatever happened to be on that one voice frequency at that moment, not following any specific talkgroup coherently.
System TypeHow It WorksTools Needed Conventional (non-trunked)Fixed frequency per channel — tune and listen directlyAny SDR receiver software, no special decoding needed for analog FM Analog trunking (Motorola Type II, EDACS, LTR)Control channel assigns analog FM voice to dynamic frequenciesTrunking-aware software like Unitrunker or SDRTrunk with the appropriate protocol module P25 Phase 1Digital voice (IMBE codec) on trunked or conventional channels, one call per 12.5kHz channelSDRTrunk or trunk-recorder, an RTL-SDR is sufficient for most systems P25 Phase 2Digital voice with TDMA — two calls share one 12.5kHz channel in alternating time slotsSame software, but confirm P25 Phase 2 TDMA support before assuming full coverageHardware
An RTL-SDR dongle — the same one covered in this site's SDR getting-started guide — is sufficient for most single-site trunked systems, since decoding is done in software on your computer, not on the dongle itself. The practical hardware consideration for trunking specifically is bandwidth and multiple simultaneous frequencies: if you want to follow a control channel and one or more voice channels at the same time without missing calls, you either need an SDR with wide enough instantaneous bandwidth to capture the whole trunked system's frequency range in one recording, or multiple RTL-SDR dongles each dedicated to a channel. Many trunked systems fit within an RTL-SDR's roughly 2.4MHz usable bandwidth if the frequencies are close together; spread-out systems may need a second dongle or a wider-bandwidth SDR like an SDRplay or Airspy.
SetupCapability Single RTL-SDRFollows the control channel and hops to voice as grants occur — works well for systems with frequencies clustered within ~2MHz Two RTL-SDR donglesOne dedicated to the control channel, one following voice grants — better for busy systems where you don't want to miss overlapping calls Wideband SDR (SDRplay RSPduo, Airspy R2, etc.)Can capture the entire trunked system bandwidth in one recording, letting software decode multiple simultaneous calls from a single captureSoftware: SDRTrunk
SDRTrunk (free, open source, Java-based) is the most approachable starting point — it has a GUI, supports RTL-SDR directly, and handles P25 Phase 1 and Phase 2, Motorola Type II, EDACS, and several other trunking protocols out of the box. Setup follows a consistent pattern:
- Find your target system's frequencies and talkgroup list. RadioReference.com is the standard community-maintained database for this — search by county or agency to find the system's control channel frequency and its talkgroup ID list before touching the software.
- In SDRTrunk, add your RTL-SDR as a source device, then create a new "Playlist" and add a Decoder Configuration matching your system's protocol (P25 Phase 1, P25 Phase 2, or the appropriate analog trunking type).
- Enter the control channel frequency (or frequencies, for systems with more than one) — SDRTrunk will lock onto the control channel and automatically follow voice grants within its tuner's bandwidth.
- Import the talkgroup list (many are available as pre-formatted CSV downloads from RadioReference for popular systems) so SDRTrunk displays readable talkgroup names — "Fire Dispatch," "PD Tac 1" — instead of raw numeric IDs.
- Use talkgroup aliasing and filtering to mute or highlight specific talkgroups of interest, and enable recording if you want to log audio for later review (subject to the same legal considerations above).
Alternative: trunk-recorder on a Headless System
For an always-on monitoring station — a natural pairing with the Raspberry Pi builds elsewhere on this site — trunk-recorder is a command-line, headless-friendly alternative that runs well on a Pi 4 or 5, records calls to individual audio files organized by talkgroup, and can feed a web dashboard or archive for later review. It requires more manual configuration (a JSON config file defining the system, control channel, and talkgroup behavior) than SDRTrunk's GUI, but it's the better choice if you want a dedicated, headless recording box rather than an interactive listening session at a desktop.
Common Problems
SymptomLikely Cause Control channel found but voice never decodesVoice frequencies fall outside your dongle's tuned bandwidth — check the system's full frequency range against your SDR's capture width Choppy, garbled digital audioWeak signal or overloaded front end — try adjusting gain (too high causes overload, too low loses weak signals) and check antenna positioning Talkgroups show as numbers with no namesTalkgroup CSV not imported, or IDs don't match — re-check the RadioReference listing for your specific system, as IDs sometimes change after system updates Some talkgroups never produce audioLikely encrypted — confirm in the system's RadioReference notes before assuming it's a software problem System uses P25 Phase 2 and audio cuts out mid-callConfirm your software version explicitly supports Phase 2 TDMA — older builds may only handle Phase 1Trunked system monitoring rewards patience during setup — get the control channel locked and the talkgroup list correctly imported, and the rest becomes routine. It's also a genuinely useful skill to pair with this site's other RTL-SDR projects: the same dongle, and much of the same RF fundamentals knowledge, carries directly over from ADS-B and APRS work into trunked radio.
Related Guides
- RF and Antenna Fundamentals for Makers: Dipoles, Ground Planes, SWR, and Feedline Loss
- ATS Mini V4 Band Guide for Beginners: CB, VHF, MW, Shortwave, and Ham Bands Explained
- Receiving SSTV Images on Ham Radio: ATS Mini V4, RTL-SDR, and Decoding Software
- Getting Your Amateur Radio License: What Technician, General, and Extra Actually Unlock
- Build an ADS-B Flight Tracker with Raspberry Pi and RTL-SDR
- Build an APRS iGate and Digipeater with Raspberry Pi and RTL-SDR
- Build a NOAA Weather Satellite Receiver with Raspberry Pi and RTL-SDR: APT Decoding and Image Generation
- How to Inspect a Used Car Before Buying with the Anyscan A30M