RTL-SDR Tutorial: Following Trunked Radio with Unitrunker
The popular trunking decoding software Unitrunker now supports the RTL2832U R820T RTL-SDR directly in its new version. This means that extra SDR receiver software like SDR# is no longer required to use Unitrunker.
You can download the latest version of Unitrunker here.
In a normal radio system, one company (or talkgroup) might use a single frequency for radio communications. However, this is very inefficient as the frequency may not be in use for the majority of the time. In a trunked radio system, a small set number of frequencies are shared between a large number of talkgroups. Each radio receives a special computer controlled control channel. The control channel determines a vacant frequency that a particular talkgroup should use. This helps to make radio frequency allocations more efficient.
Because a talkgroup might switch between various frequencies often, it can make listening to a conversation difficult for radio scanners. Unitrunker can be used to decode the control channel and follow a voice conversation as it hops across various frequencies. With two RTL-SDR dongles you can set up a trunking receiver station with just Unitrunker. What follows below is a tutorial on how to set this up.
Unitrunker Voice Trunking Following Tutorial
To set up a trunking station we will assume that you have been through the Quickstart guide and thus have a working RTL-SDR setup. In addition you will need
- 2x R820T RTL2832U RTL-SDR dongles. See the Buy RTL-SDR dongles page if you don't already have two. You will need one dongle to receive the control channel and one dongle to receive the voice channel. Only the R820T appears to be supported at the moment. You can also use other supported and more advanced SDR's such as the Airspy.
- The Unitrunker software (Choose the latest version from http://www.unitrunker.com/download/)
- One antenna that splits into two connections for the two dongles, or two antennas that can receive the trunking frequencies you are interested in.
Now follow these steps to set up Unitrunker with the RTL2832U.
Setting up the Signal (Control Channel) Receiver
- First determine a trunking control channel that you are interested in monitoring. You can use SDR# or a similar program to search for these first. They will be signals that are continuously transmitting with no breaks. Here are some examples of some common trunking modes. The are commonly found in the 400 and 800 MHz bands.
- Plug in both dongles and then open Unitrunker.
- Press the 'Add new receiver' button , and then on the bar that pops up click on the RTL2832 button.
- In the new window that pops up choose your first RTL-SDR under “RTL Device”.
- Enter that units PPM correction value under “Correction”. Note: Make sure that you are entering the correct value for the correct dongle. If you are unsure which dongle is which then you may like to try labeling the dongles with rtl_eeprom first. Note 2: Dongles with TCXO's in them will not require any correction, so for those dongles this value can be left at zero.
- We also recommend enabling “Baseband AGC”, turning on “Auto Gain”, enabling “Drift Correct”, setting the sample rate to 2.048 msps and settings “VCOs” to 1 VCO. If you have an older and slower PC you may wish to set the sample rate lower.
- Click on the first VCO tab at the bottom of the window.
- Change the “Role” to “Signal”.
- Change the “Park” value to the frequency in MHz of the trunking control channel that you want to monitor. For example if you wish to monitor a control frequency at 862.839700 MHz, then enter 862.839700 into the box.
- Under the “Signal” heading ensure that all the control channel protocols that you want to possibly decode are checked and that “Discover” is also checked.
- Now at the top of this window press the Play button .
- If everything is tuned correctly a new Site window should soon pop up and you should audibly hear the control channel sound coming through your speakers. In the VCO tab you should also see under the “Signal” heading the protocol dectected and it’s “Health”, which measures the quality of reception.
- If every thing worked correctly, then go back to the first VCO tab, and ensure that “Mute” is checked. This will mute the control channel audio.
- If no new site window popped up and/or you don’t hear the control channel then go back to the first VCO tab and ensure the “Audio Outout” is set to your speakers, and that the park frequency is set correctly. Also go back to the Info tab and check that the PPM Correction is set correctly. You may also need to adjust the gain settings - try manual gain by unchecking both “Baseband AGC” and “Auto Gain” and using trial and error to choose a gain value between (0 - 500). Monitor the “Health” reading of the signal under the “Signal” heading in the VCO tab. If it is below 100 it may indicate reception problems which will need to be solved by tuning the signal correctly, adjusting the gain, or using a better antenna.
- The Site window shows the frequencies in use, and logs each call. If the frequencies are not showing, click the ‘Wizard’ button whose icon looks like a calculator. Then choose the system used in your country. If unsure, try ‘Standard’ first as this is the most commonly used.
- (Optional) If you have a RadioReference.com account, you can click on the gear icon and enter your RadioReference account credentials. This will download information provided by RadioReference.com, including site information and some talk group labels.
- Close the Receiver R820T options window for the signal channel, move the new site window out of the way (don’t close it) and go back to the main Unitrunker Window.
Setting up the Voice Channel Receiver
Now that we have added the signal receiver and decoder we will add the voice receiver.
- Press the 'Add new receiver' button once again, and then on the bar that pops up click on the RTL2832 button.
- Set the “RTL Device” to the second RTL-SDR dongle you have plugged in.
- As in the previous steps enter that units PPM correction value (only required for non-TCXO dongles) under “Correction”, enable “Drift Correct”, enable “Baseband AGC”, enable “Auto Gain” and set the sample rate to 2.048 msps.
- Click on the first VCO tab at the bottom of the window.
- Change the “Role” to “Voice”.
- Ensure that “Mute” is unchecked, and set the “Audio Output” to your speakers.
- Press the Play button .
- You should now be listening to trunked conversations! If you hear a lot of static in between calls, you may wish to set the “Squelch” option. In the voice receiver options, under the VCO tab adjust the “Squelch” value, until the static disappears, but voice still comes through.
Monitoring Multiple Control Channels with Multiple VCOs
More recent versions of Unitrunker have the option to use multiple VCO’s. Basically this allows you to tune and monitor to multiple control channels with a single dongle, as long as they all fit within the dongles bandwidth. Unitrunker allows the RTL-SDR bandwidth to be set up to 2.56 MHz. To enable monitoring of multiple VCO’s
- Open the options for your Signal receiver and go to the info tab.
- Change the “VCOs” setting to 2 VCOs, or however many you want.
- Go to the second VCO tab.
- Set the “Role” to “Signal”.
- Set the “Park” frequency to the second control channel you wish to monitor.
- Do this for all VCOs if you have selected more than two.
Monitoring with only One Dongle
If you only have one RTL-SDR dongle it is still possible to monitor trunked conversations using the multiple VCO’s feature of Unitrunker. This will work well as long as the voice channels are within the same bandwidth as the control channel. For the RTL-SDR this should be within about 2.56 MHz of bandwidth.
- Press the ‘Add new receiver’ button and then on the bar that pops up click on the RTL2832 button.
- Under “RTL Device” select your dongle.
- Set the PPM offset correction, enable “Drift Correction”, enable “Baseband AGC”, enable “Auto Gain” and set the sample rate to 2.560 msps, and set the number of VCOs to 2 VCOs.
- Go to the first VCO tab, and set the “Role” to Signal.
- Set the “Park” frequency to the frequency of the control channel.
- Ensure that “Mute” is checked.
- Go to the second VCO tab, and set the “Role” to voice.
- Press the Play button . A new site window should pop up.
- If the frequencies are not showing, click the ‘Wizard’ button whose icon looks like a calculator. Then choose the system used in your country. If unsure, try ‘Standard’ first as this is the most commonly used.
- You should now be listening to trunked conversations!
- Once you have the system running to improve performance we recommend disabling “Auto Gain” and instead setting the gain manally using the “Gain” entry under the “Info” tab in both the Signal and Control RTL-SDR options. The gain can be set from 0 to 500.
Decoding Digital Voice (P25/DMR/Mototrbo/NXDN/ProVoice)
Decoding of unencrypted digital voice signals like P25/DMR/Mototrbo can be set up in the same way as the analog system shown above. However, instead of outputting audio to the speakers, audio should be output to a virtual audio pipe such as Virtual Audio Cable (VAC) or VB Cable using the Digital Output audio selection in Unitrunker. Then DSD+ should be used to listen to the audio pipe. Audio will only be piped to the Digital Output during a digital call.
DSD+ is a program that is capable of decoding digital voice protocols such as P25, DMR/Mototrbo, NXDN and ProVoice. It is not capable of decoding encrypted digital voice channels. DSD+ is similar to DSD 1.6, but it has vastly improved decoding in terms of voice quality. You can find the latest download for DSD+ at www.dsdplus.com. To install DSDPlua download both the latest DSDPlus and DSDPlus DLL zip files. Then extract both zip files into the same folder.
To run DSD+ simply double click on DSDPlus.exe. This will open up several windows. DSD+ will listen to the default sound device in the Windows audio recording properties.
Make sure that the Deemphasis option in Unitrunker is turned OFF for the voice receiver to make it work with DSD+.
- For digital voice you may need to play with the Windows volume settings of your audio pipe to improve decoding.
- You will require a decent antenna that is capable of receiving the trunking frequencies you are interested in.
- Unitrunker can be coupled with a radioreference.com account to get trunk group names.
If you enjoyed this tutorial you may like our ebook available on Amazon.
The Hobbyist's Guide to the RTL-SDR: Really Cheap Software Defined radio.
hi sir, i have some doubts and i am beginner to the sdr, please clarify my doubts
1. Can i use single rtl sdr for scanning both digital and analog signals simultaniously
2.can i perform normal digital scanning and trunked digital signals simultaniously using single rtl sdr
3. Is it possbile to scan multiple frequencies at a time using single rtl sdr
4.Here i can do band scanning in my rtl sdr but is it possible to scan two band scans simulatnoulsly using single rtl sdr
Only one trunked system at a time and no you can’t scan multiple frequencies alone. If you want that or know the frequencies use frequency manager in sdr #.
Got it all set up and DSDplus is showing the scrolling channel Data, but I hear no voice? What’s the matter?
Have followed install every thing seem to work except no frequiecies showing you say go to caculater button but there don’t seem to be one.
Sometimes you have to put in the frequency manually off the radio database website for your area
I have followed instructions closely, have tried using two different dongles just for the first step and i get
Status “could not open”
both dongles work fine in SDRSharp
Close SDR# first. It can’t open the device if it’s being used by another program.
What about police, fire and EMS agencies that aren’t trunked?
You can use frequency manager in SDR sharp which will scan them all.
Updated serial trunking plugin: https://github.com/walczakp/serial-controller/releases
Followed the single-dongle instructions and I am not getting anything on the 2nd VCO. The site pops up for the signal VCO and everything looks good there. But the 2nd VCO and scope never display anything at all. It is following a P25 system.
Hola, no puedo abrir la aplicación me sale error: No working folder acces.
Invalid installation or shortcut.
Program will exit.
Not 100% sure what I’m looking for, but at least in SDR#’s waterfall, I do see what looks like the continuous P25 control transmission described above.
Unfortunately, despite the seemingly strong signal, when I open unitrunker, and park to that frequency, nothing happens! Shouldn’t Unitrunker show a Site window containing all the control traffic.
Here’s a short video of what I’m seeing:
I’m using a single RTL-SDR, and have tried tweaking the correction, drift, gain settings, but no luck. I also tried different park frequencies that show activity in SDR#.
BTW, can a trunked system, public or private, contain both analog and digital voice? And in the case of digital voice, can it contain a mix of P25 1/2 and DMR (basic/enhanced)? With the proper amateur ham license, can one create a trunked system (using an open source voice codec like Free-DV)?
I had similar issue, and found the PPM wasn’t the same for some reason. I set the Unitrunker Signal VCO to 162.55 with no mute and adjusted the PPM to verify its receiving. Then went to trunk signal freq as shown in RadioReference for my county and fine tuned PPM more to get good signal and health 100. Now the issue is no freqs show in the Site (except signal freq.) I finally found a signal freq in the 770mhz band that did show all channel freqs. I think single RTL dongle is too narrow freq even at 2.056mhz. Awaiting second dongle…
Trying to get this going, but I’m missing something. Trying to set up for a trunked MotoTrbo system. I have SDR Sharp running and DSD Plus is decoding. I have found the control channel. DSD shows talk group info when I’m on that channel. If I manually click channels as they become active I’m able to decode audio. So, I think most of that is working.
In Unitrunker I have defined the control channel and I’m down to step 12 of setting up the control channel, and I never get the Site window. With audio output set to VB Audio I see the waveform in DSD Plus, but I don’t see talk group info in it. If I change audio out to my speakers I hear what sounds like a good control channel.
In the Signal section of Unitrunker I’m getting Protocol = DMR and Health = 100.
Looks like it should be working. But, why don’t I see the Sites window? Clicking Sites does nothing.
I am having the same issue. Any luck finding a solution?
Mototrbo is not supported only Motorola trunking systems.
Most excellent, thanks for the write-up – have it up and running – total time for upgrade from single dongle with SDR# and old UT along with Freescan and serial attached scanner was about 20 minutes – most of the hassle is making sure the RTxxxx driver doesn’t install and screw things up, and then trying to tell which dongle was which (my nooelec is much better than my other generic one – not sure why – using the nooelec for control and the other for voice). Thankyou!
You folks are bout 500 clicks over my head….my skill sets are in a different direction but I have always admired and envied YOUR skills. I have been in LE, medic and security contracting here and many countries for bout 35 years and need the assistance of someone with yalls skills to set me up with a device to scan and decode 800mhz trunked systems. Even military n police and even the folks we are fighting have this systems and I and my team need your capabilities. In years we were just provided with the frequencies we needed but now, especially as contractors, it may not even be possible depending on mission directives. Used to we would have a contact in the alaphet agency world that could help us but things have tightened up. We often get radios assigned to us for the specific area of operations but we severly need a device like you have described. Simple CYA. Trust has always had its risks but now, well, yall know. So if someone (s) in your world can help us I would greatly appreciate it and it could actually be the difference in a huge way. Also another unit could be in trouble and we would never know without this capability. It is rare for us to “come up on the net” of someone else but there have been times. Thanks for yalls patience with my long n off topic post. Your knoweledge and skills are needed by a lot of folks but I can understand your reticence to share. If I can get assistance it will stay with me. I have survived some terrible injuries and got thru cancer 3 times, so far, n really could use an edge on survival. Doubt I can make it thru the next big thing medically. Im not anybody special and what I signed up aint the gig with the big bucks just 1 overly patriotic/gungho dude tryin to make a difference. At my age its gettin harder every day. Damn PTSD, I cant shut the hell up someday. If you cant help, thanks for your time. Ihate this type of comms so if you email me a phone # or ask for mine, I would rather talk. This took over an hour to type. Finger dont alwys follow brains directive. L8r, rick
Nice write up but I can’t get my 2nd voice RTL stick to do anything…
I don’t see the frequencies showing up in the site list either. It says to click on icon that looks like a calculator but I don’t have that anywhere.
I’m pretty close but can someone help where I setup as a Standard system?
Are there any equivalents that run on Linux, preferably the Raspberry Pi? I’d love to monitor a P-25 system on a RasPi – for not too many bucks, I could monitor multiple talk groups at once.
OP25 ? ( http://www.sigidwiki.com/wiki/P25 )
The copy of DSD+ stored at ZippyShare appears to have a virus. You should link the the author’s website instead, http://www.dsdplus.com/.
I am currently trying to monitor 2 systems. a EDACS system, and a P25 system. I have 4 dongles, and have set them up, to the best of my knowledge, properly. I have 1 dongle monitoring the EDACS trunking control channel, and 1 voice dongle for it. I have a third dongle monitoring the P25 control channel, and a 4th dongle to run voice for it. HOWEVER, both voice dongles only want to be controlled by the EDACS control channel dongle. is there a way to separate this, where once voice dongle will only follow the EDACS dongle, and the other voice dongle will follow the P25 dongle?
I’m following the instructions completely with the latest version of Unitrunker and two dongles I recieved from Amazon last week and I can’t seem to get it to work.
I can get the listen and start following calls but I can’t seem to get the voice channel working right, I tried swapping dongles and still not working.
When I look at the scope for the voice receiver it just shows a blank line, no waves or anything.. and no sound.
Not sure what I’m doing wrong but help would be awesome!
This is the trunked system I’m trying to listen to:
As I mentioned I have my signal channel working (it appears) and I am able to view Joins and Calls but I can’t hear anything – tried adding DSD+ to the mix but it seems like I’m just not getting the listen channels correctly.
I got it working! I had to enable P25 and ProVoice
I found this very helpful, I’m decoding my local APCO P25 system using two NooElec dongles. Fairly impressive.
I am having a slight problem…. I have the two receivers working great, 1 on the control channel for a p25 system and the other is the voice …. I have it going through DSD+ and I am getting output audio… now … here is the problem…. I am also hearing the digital signal on top of the voice…. I have tried multiple things to try and correct it… still cannot figure it out… (Win 7 Ultimate 64 bit) Unitrunker latest version, DSD+ latest version and VB cable…. so close…. yet so far away…. thoughts?
Problem fixed! VB cable was the problem, got rid of it and installed Virtual Audio Cable, completely redid everything and it works flawlessly! I am listening to the Missouri Statewide Interop Network…. only problem is that I can only listen to 1 tower at a time…. but hey… $40.00 scanner or a $400.00 scanner…. or not at all.
Can this be done with just one wideband radio?
I got it working with one dongle however vco2 shows no signals and health level is zero. Health level on vco1 is 67. So far I have heard nothing but sever frequencies appear in both boxes. Help is appreciated.
Great write up. I’ve got to rtl-sdr dongles and can lock the control channel but the one doing the listen role does not render audio properly, it sounds gabled. There is voice there, but it sounds like the sample rate of the audio is borked. So close to working. And naturally the plugin for SDR# is broken with the current release.
I have the new RTL-SDR with 2 antennas.
Brand new winbook Windws 8.
Unitrunker will not work with dongle.
I followed instructions.
Dongle works fine with SDR#. It tunes broadcast FM, NOAA weather 162.55.
It tunes the trunked freqs in our Motorola TRS. When I run UT with RS2832U selected,
and all settings correct, try to RUN, it says:
no radio selected. I am not doing voice following. UT runs fine in inline mode with my PSR500. What is missing?
Is there a way to use a HackRF One in one of the roles?
As of Release 31, the program looks quite different from the images above.
VCO related receiver settings are on a separate tab and – for some receivers – multiple VCOs are supported.
Are you sure about the image you show for the EDACS96 spectrum? I’m trying to get Unitrunker working and the control channel for a local EDACS96 trunked system looks more like the APCO P25 spectrum.
Im having really trouble with Unitrunker . I can hit my control channel with 100 health and I can see the voice channels coming in ok. However the freqs for the voice channels are in the 800mhz range and not 400 where they should be. I have spent hours on this and have gotten no where. ANY help would be awesome….
For anyone having issues like ksquared, the Trunking Control Channel Decoders forum is a good resource.
For questions on DSD and DSD+, you may find answers on the Digital Voice Decoding Software forum.
Help. I’m almost there! I have the local EDACS96 trunked system downloaded from Radio Reference. The control frequency was in error by 1MHz. 852.5 vs 851.5. Unitrunker signal receiver detects the EDACS96 Pro Voice encoding just fine (Health 80-100). Scope looks great. Trouble is, nothing happens. There’s no activity. The voice receiver remains parked on 0Hz.
What am I missing?
As HAL9000 might say “Hold On! Hold On!… I’ve detected an anomaly in module….”. I went to RadioReference forums and saw your response to fyrejumper asking him to click the Site Button (the antenna) on the signal receiver. I did that and got no response. I know the downloaded site data was incorrect. That is, the downloaded channels did not match the spreadsheet or PDF files. I searched with SDR# and found what I thought would be the control channel for the system (852.5). Maybe this is a control signal for a different trunking system. I don’t know. I need to somehow verify the control channel for the system.
What RTL2832U Windows driver will the new UniTrunker 22.214.171.124 accept? The RTL Device dropdown box remains empty with no choices after selecting RTL2832U and model R820T. And the device does not respond to Start or Stop commands.
It seems that UniTrunker 126.96.36.199 does not recognize the otherwise perfectly well working driver “libusbk USB Devices” version 188.8.131.52 (8/23/2013) that performs flawlessly with SDR# and RTL1090 programs among others.
When I’ve encountered problems like this (new software not seeing dongle,) I run Zadig again to reinstall the drivers & it works.
Great article! Thanks so much for posting this.
You may want to update this for Unitrunker release 28. The receiver window looks slightly different as there is now a separate audio path for third party digital voice decode apps.
when i set the ppm correction value to 380.000 and press enter or anything els it goes right back to 250.000 value i get static but no 0 health what am i doing wrong i use 2 nooelec r820t dongls. i get signal fine and the ppm correction values fine in SDRsharp. plees help
Shoot somehow i new i needed two dongles… oh well guess it will be another week or two.
Can someone pull DSD+ off Mega Upload and put somewhere that actually can be downloaded from. Several people either getting “Your browser does not allow data to be written. Please make sure you use default browser settings” with nothing in the settings working, or just getting a prompt to upgrade browser, even if latest browser is installed. PLEASE put it somewhere that is accesible. Many Thanks!
From what I have seen, the majority of those having trouble with MegaUpload can solve the issue by using a browser other than MSIE. I had no trouble grabbing it just now. Where would -YOU- suggest making it available?
It has to be 1) Free, 2) Public, 3) Anonymous and 4) Persistent. (ie: not mysteriously disappear in hours/days)
Yeah Internet Explorer breaks many websites. Only Chrome seems to work properly with Megaupload. Other browsers have bugs or don’t implement modern features that Mega needs for its security encryption.
I’d be willing to host DSD+ on this server, but only if I got the authors permission. Unfortunately, I don’t know who the author is…
Wonderful post! Still, I’m wondering, is this whole package included in Kali Linux? If not, would you be inclined to make it a part of the Kali Linux SDR metapackage?
What a great website for RTL with such clear and well laid out instructions. Looking forward to setting this up tonight.