P25 Trunked Tracking and Decoding with RTL-SDR, Unitrunker, and DSDPlus

Checking reception

Receiving the control channel of the P25 system will verify the system is on the air, you are in range of the system, and configuration.


Go to http://www.radioreference.com/.

Click on Databases.

Click your state.

Click your county or a nearby county to browse nearby systems.

Scroll down to the bottom where says All Trunked Radio Systems in XXX County.  Find a Project 25 Phase I system you want to listen to.
Note: this guide will NOT work for Project 25 Phase II systems until support is added to DSDPlus.

Click the System Name link.

Most often I listen to the Ohio MARCS-IP: Multi-Agency Radio Communications (P25) and sometimes to the Greater Cleveland Radio Communications Network.  I will demonstrate using the Ohio MARCS-IP system.


The State of Ohio MARCS-IP is a statewide interoperability system.  Users of the system can be anywhere in rage of a MARCS-IP tower and able to communicate with their agency.  The IP means the system is Internet Protocol based.

The members of the Radio Reference Forums put together and maintain an excellent map of all of the MARCS-IP towers in the state.  The Unidentified/New MARCS-IP Talkgroups thread is a great place to find new users and scuttlebutt on the system.

I will listen to the Cuyahoga county site.  If you notice the site name contains “simulcast.”  Many counties cover a wide area and do not have a single tower location that can effectively cover the entire county (or with the help of nearby towers).  The State will install towers that broadcast the same control channel and voice channels at the exact same time, thus simulcasting on multiple towers (including frequencies) at the same time.  This is important to note because this may change your setup (see “more bits” at the end of this write-up).  Garbled decodes happen more often due to being near multiple towers where multipath propagation is more likely (same signal arriving at your antenna at different times).  The software cannot distinguish between multiple signals and the transmission decode will sound garbled, if it decodes at all.

On the map, when the pop-up opens, if it says “simulcast” there will be another “site details” link to another map.  This will show you were all the simulcast towers are located.

Less of an antenna is more with a simulcast site.

This exercise will only prove that you can receive the control channel and does not prove how well the signal can be decoded.

Color coding in the Radio Reference database shows RED as the primary control channel and BLUE as alternative control channels.


Go to the sdrsharp directory.

Double-click SDRSharp.


Click Mute to not blast your ears out with the loud screeching of the P25 signal.

Under Source, select RTL-SDR/USB.

Click Configure (settings icon).  Make sure gain is 32.8 dB and your PPM correction is entered.  See earlier in the tutorial how to calibrate your dongle and these settings.

Click Close.

Under Radio, select WFM.

For Bandwidth, enter 12500.

Check Correct IQ.

Scroll down to FFT display, for Resolution select 16384.

Enter the primary control channel frequency at the top of the window by clicking the top or bottom of each digit to change the frequency up or down.

Press Play (start).

Zoom in.

Shown above, we can receive the control channel and it is well above the noise floor.  You will notice the primary control channel for the Cuyahoga County Simulcast system is listed as 774.53125 in the Radio Reference database.  The screenshot shows 774.78125.  Either the data in the db needs updating or the owners changed the primary control channel to an alternate.  This could be: frequencies needed to be swapped with another site to reduce interference, interference with another radio system, etc.

P25 control channels broadcasts constantly.  Voice and data channels do not.  If you notice the transmission disappearing (not fading) and re-appearing, it is not the primary control channel.  There maybe no transmission meaning the system is not on the air or you’re out of range.  Before giving up, try all the alternative control channel(s).  When in doubt, post in your state’s Radio Reference forum.  Don’t be a jerk and do some research first.

Note the control channel.

Close SDRSharp.

We need to determine the frequency to “park” the voice receiver(s).  It does take some amount of time for the dongle to change frequencies.  It is best if it is parked on a frequency in the middle of the possible frequencies it needs to tune.  This is a simple average calculation.  I didn’t include control channels as they are not typically used as voice unless the system is very busy.  In the Radio Reference database screenshot above, the lowest frequency used is 769.50625 and highest frequency used is 773.29375 for the site I want to receive.  Add the two frequencies and then average them by dividing by 2.  The park frequency would be 771.40000 ((769.50625 + 773.29375) / 2).  This does not at all need to be 100% accurate and rounding to the closest 100 KHz is fine.

Note the park frequency.