Introduction: How to Make a $19 Police Radio Scanner

Picture of How to Make a $19 Police Radio Scanner

In this guide I will explain how to build an inexpensive SDR (software defined radio) that can be used to receive police, fire, taxi, and other digital radio transmissions. I will do my best to explain the steps in detail, and provide further resources to help along the way.

For the radio enthusiasts, this setup is capable of following trunked, digital voice radio transmissions with a single receiver.

Read the full howto here:

Video of completed setup:

I have to give a lot of credit to the creator of the following guide: This how to is based largely from that, and other sites listed in the Resources section.

Please use the information in this guide responsibly.

Step 1: Hardware Requirements

Picture of Hardware Requirements

The only hardware required besides a computer is going to be a SDR receiver. The bulk of these radios are just USB TV tuners, rebranded and sold as SDR receivers. Many are available on Amazon and eBay. A quick google search should turn up some more as well. I recommend purchasing from somebody who knows about SDR, a popular dealer is (NooElec also has stores on eBay and Amazon)

In this guide I will be using a Newsky TV28T v2 with a RTL2832U & R820T tuner.

Step 2: Software Requirements

Please use the normal download link if possible to receive the latest software packages. Secondary links are provided for redundancy.

Software defined radio application. Allows for tuning and receiving of audio from receiver.
A modified version will be needed that is capable of connecting to UniTrunker.
Download (secondary):

Updated file for SDRSharp
Download (secondary):

Version used:
Allows for receiver driver installation.
Download (secondary):

Version used: preview
Provides decoding support for trunking control channels and issuance of tuning commands.
Download (secondary):

Virtual Audio Cable
Version used: 4.10
Provides audio routing between components. Trial available, purchase for $25.
Trial Download (secondary):

Digital Speech Decoder (DSD)
Version used: 1.6.0 Beta
Provides digital voice decoding support.
Download (secondary):

Linux support for Windows. Required by DSD.
Download: (secondary):

Microsoft Visual C++ 2010 Runtime
Required by remote.dll
Download (secondary):

Step 3: Resources

Most of the information in this tutorial is stuff pulled together from the web. Here are some great places to get more information:

SDRSharp Quick Start Guide:

Digital Speech Decoder (DSD) Install Tutorial:

Digital Speech Decoder (DSD) Guide:

Unitrunker Configuration Guide:<-- See for two receiver configuration

Massive Radio Frequency Database:

Step 4: Installing Drivers for the SDR Receiver

Picture of Installing Drivers for the SDR Receiver

Download and extract Zadig (you will need a program like WinRAR or 7-Zip). Take note if using Windows XP you will need to download the XP version. Connect the receiver to your computer and ignore/cancel any attempts Windows tries to make to automatically install drivers. In Zadig select “Bulk-In, Interface (Interface 0)”. You may need to go under options and list all devices. Select WinUSB as the driver to install and press Install/Replace Driver.

Next to Driver it should now say WinUSB and the version number. I don’t believe it is required, but if you like you can do the same for Interface 1.

Step 5: Install SDRSharp / Test Receiver

Picture of Install SDRSharp / Test Receiver

Download the modified SDRSharp package and extract it. Inside the folder is a file called rtlsdr.dll that needs to be replaced. We will get the updated version from inside Use the file in the /x32 folder. Also note contains executables that can be helpful in troubleshooting should you encounter any driver issues.

If you like you can test to make sure your radio is working properly. Open SDRSharp, set the front end to “RTL-SDR / USB” select WFM and type in a known FM radio station to the center/frequency boxes and press play. For example, if you would like to tune to 97.9 type in 97900000. You can drag the red line to align with the stream in the waterfall.

Step 6: Install Virtual Audio Cable

Install Virtual Audio Cable as it is required to route the audio out from SDRSharp into DSD. Using the trial version will work reasonably well however since it periodically adds a voice over the stream you may or may not have some decoding errors. A new Virtual Audio Cable device should now appear under your playback and recording devices.

Step 7: Windows Sound System Configuration

Picture of Windows Sound System Configuration

DSD uses the Windows default recording device as an input. Ensure Virtual Audio Cable Line 1 is set as the default recording audio device in the windows sound properties.

Step 8: Install Cygwin

Install Cygwin using all of the default settings. Once installed browse to C:/cygwin/bin and copy the cygwin1.dll file to the same folder the DSD program will be in.

Step 9: Download DSD

Download the Windows Binary and place it in the same folder as the cygwin1.dll file.

Step 10: Configuring UniTrunker

Picture of Configuring UniTrunker

A trunked radio system is simply a system of radios in which the frequencies used are dynamically managed by a central controller. Most police and fire radios use a trunked radio system. Unitrunker decodes the control channel, and tells the receiver which frequency to tune to.

After downloading and installing, run UniTrunker. Choose “First Time Installation” and Continue.

Two receivers must be configured in UniTrunker, a ‘Signal’ receiver used to receive the control channel signal, and a ‘Control’ receiver used to receive the voice channel transmissions.  This can be a little confusing as the signal that the ‘Signal’ receiver is receiving is typically called a ‘Control Channel’.

Step 11: Create Signal Receiver

Picture of Create Signal Receiver

To configure the signal receiver, press the plus button on the top and select “Signal”.

For the Audio Port setting, select the Virtual Audio Cable created earlier. Set the Sample Rate to 48000, and check all of the decoding protocols.

Step 12: Create Control Receiver

Picture of Create Control Receiver

To configure the Control receiver, press the plus again and select “Control”.

Set the Model to “Debug”, and select all three control protocols: P25, ProVoice, and VSELP.

Step 13: Enable Listening in UniTrunker

Picture of Enable Listening in UniTrunker

Finally, in the main UniTrunker options screen, click the Enable checkbox in the Listen section.

Step 14: Start Receivers in UniTrunker

Picture of Start Receivers in UniTrunker

There should now be two receivers listed under the Receivers tab. One control and one signal. Select each and press the play button.

Step 15: Configure SDRSharp

Before starting SDRSharp, open the ‘sdrsharp.exe.config’ file and ensure this line is set as follows:

                    <add key="minOutputSampleRate" value="48000" />

Open SDRSharp and configure with the following settings:

1. set the radio to NFM
2. Press the “Front end” button, disable RTL AGC, and enable Tuner AGC
3. set the Filter bandwidth to 12500
4. ensure Squelch, Snap to grid, Correct IQ, and Swap I & Q are all disabled
5. under the Audio dropdown ensure Filter Audio is unchecked, and the audio output is the Virtual Audio Cable.

Press Play.

Step 16: Find a Control Channel

Picture of Find a Control Channel

Now we need to locate a control channel. This part can be a bit tricky, but after some practice it gets easier. You can start by looking for channels in the 850-900MHz range, but another good place to start is in the frequency database.

On, browse to your area and find the section labeled “Trunked Radio Systems”. Browse through the systems and find one that has a good amount of information. See the example below.

We are interested in the control channels, shown in red and blue.

Step 17: Testing a Control Channel

Picture of Testing a Control Channel

Test each control channel until you find one you can receive. For example, if I want to test 856.21250a then I need to enter 856212500 into the Frequency and Center boxes in SDRSharp. (Note the extra 0, and no decimal point)

Control channels will be a continuous stream in the waterfall window, unlike voice transmissions which are intermittent.

If you cannot find a signal, try other trunked systems listed in your area, listed in surrounding areas, or by manually browsing the spectrum.

If you find that a control stream is to the near right or near left of the red line after typing in a known frequency, manually move the line to be in the center of the stream. It may be helpful to zoom in. This problem will be dealt with under the calibration section.

After about 10-15 seconds of being tuned to a control channel, a new window should pop up in UniTrunker.

After a few more seconds to a few minutes several frequencies should populate and channel activity will start scrolling by. If you see a red “Frequency Needed” and 0.00000, wait a few more minutes to see if it goes away. If not, click on the small calculator icon at the top and then standard.

Step 18: Calibrating the Tuner

Picture of Calibrating the Tuner

Because this tuner will be tuned programmatically, it is essential that it is correctly calibrated.

Enter the known control frequency (either from radioreference, or the red frequency listed in UniTrunker) in the center and frequency boxes.

You may see that red line not aligned with the channel. Open the “Front End” dialog box and adjust the Frequency correction value until the red line is centered onto the channel.

Step 19: Lock UniTrunker to the Control Channel

Picture of Lock UniTrunker to the Control Channel

After you have found a control channel and calibrated the tuner you will need to lock UniTrunker down to only receive that control channel. Everything would technically work without this step, but it helps UniTrunker find the control channel faster as it switches between the control and signal.

Double click the Signal line under the Receivers tab and change the “Lock Mode” to Dedicated.

Double click the Control line and change the Park frequency to the control channel. In my case it’s 856.21250.

Note: If you change systems or want to find a new control channel you will need to change the Lock Mode back to none.

Step 20: Setup UniTrunker to Control SDRSharp

Picture of Setup UniTrunker to Control SDRSharp

Copy Remote.dll from the SDRSharp directory into the UniTrunker installation directory. Remote.dll requires Microsoft Visual C++ 2010 Runtime, so you will need to download and install that as well.

Close and then reopen UniTrunker. Ensure SDRSharp is tuned to the control channel and UniTrunker is receiving the control signal.

Under the Trunking tab in SDRSharp set the “UniTrunker Install Directory” to the directory containing the ‘sdrsharptrunking.log’ file. This is the file that UniTrunker makes to tell SDRSharp which channels to tune to.

NOTE: The code currently makes the poor assumption that you’re running UniTrunker directly from the install directory.  If you run it from the shortcut, you will find the ‘sdrsharptrunking.log’ file in your %AppData% directory, typically C:\Users\<username>\AppData\Roaming\UniTrunker. This is the folder you need to select, and because it does not see UniForm.exe or Remote.dll in the same directory, it may complain. Ignore that.

Check the “Delay Re-Tune Until Call Completes” box. This setting controls the level at which SDRSharp will retune back to the control frequency after an audio transmission ends. This value will need some adjusting as you go along, but to roughly set it look at the peak signal strength of the control channel, in my previous screenshots you can see it’s around -15db. Subtract another 15db or 20db and set it to that number.

Set the “Tune to Control Channel” to the known control channel frequency.

Step 21: Start Listening!

Picture of Start Listening!

At this point we can launch the Digital Speech Decoder executable and check the Enable box under Trunking in SDRSharp.

You will more than likely need to adjust the AF Gain value under the Audio dropdown. As a general rule you want to try and get the inlvl value in DSD to around 30% for the best quality audio decoding. Note that your computer may work better at another value, so experiment a little.

In my case, setting AF Gain to around 60% worked well.

Also experiment with adjusting the AGC settings in the “Front end” dialog box. Try enabling/disabling the RTL AGC, Tuner AGC, and RF Gain values to get the best signal. Note if you change the AGC values you will likely need to change the “Delay Re-Tune Until Call Completes” value as well.

Step 22: Go Further

Keep in mind this setup is not ideal; it’s a basic setup using minimal components. You will not receive all transmissions and there can be a delay when retuning back to the control channel. For an optimal setup you will want to have two SDR receivers; one dedicated to the control channel and one dedicated to the signal. For information on how to configure this take a look at the UniTrunker Configuration Guide under resources.

I read somewhere that connecting the USB receiver to your computer through a USB extension cable can help reduce interference. I had an old cable lying around from a wireless mouse and it seems to work well.

Also, read over the other resources, they can help you better calibrate your setup.


SteveG90 (author)2016-01-08

Help! I have followed all of the above and SDR# "looks" good, Unitrunker is showing activity and all the information changes as the calls come through, I have DSD running and I can see lots of activity happening in the DOS screen that matches the changing data in Unitrunker. BUT I don't hear a thing! I know I have missed something, but I have looked so long my eyes are crossed. Any help for a first timer would be greatly appreciated.

FredP10 (author)2015-07-22

If you don't load the groups you get everything in the system.

As they popup in the calls list you can name them by clicking on them. You can also lock out the ones you don't want. Downloading the radio reference list is easiest, but you still have to lockout the ones you don't want. When you find your system in the search the ?sid=xxx in the url is the one you put in the system info tab Site ID for download.

FredP10 (author)2015-07-22

All you need is zadig, UniTrunker, and one dongle.
Create a RTL radio.
In the info tab say 2 VCO's
1st vco is control channel
2nd is voice
You also need all the channels set up and the trunk groups -RadioReference is the place.

pcnotmac (author)2015-06-25

has anyone tried this on the rasbery pi 2

MarkC7 (author)2015-06-15

Would I be able to monitor air channels 118-136 with this setup? Great writeup!!!

antonys (author)2015-03-28

hi. i would like to know if i can do this with ANY (by any i mean non rtl2832 based chipsets) usb tv tuners. i am unable to get any of those in my country (uruguay).

MichaelD14 (author)2014-12-19

I seem to have gotten SDR to work but the voice reception is choppy. Does anyone have a solution to improve this?

is2dsky (author)2014-09-09

Nice write-up.. Up to the point of configuring UniTracker Control. Under model there is no debug option. Suggetions? Thanks..

MichaelD14 (author)is2dsky2014-12-07

I'm using UniTrunker version and the initial creation screen includes a button for Debug. Once created, I left the type as debug also and it seems to work okay.

DoctorEvil30564 (author)2014-11-29

what kind of antenna would you suggest for someone to make this work optimally?

I followed the instructions but am only getting extremely intermittent transmissions on the control frequency for my county public service trunk control. I've tried the alternates no difference with those as opposed to the primary control frequency. I'm only using the antenna that came with my usb software radio so I figure that this is woefully inadequate.

I'm having the same issues.Got everything working but many conversations are choppy. One thing that helped my reception was to put the antenna on a metal surface. I used an old cookie sheet and it seems to help considerably. I have a friend who is Ham Op and will ask about antenna choices. Something small that I can keep in the house rather than mounting on the roof.

Cmdr_Jim (author)2014-01-26

I have a 2 dongle setup and all appears to be working fine except I have no sound what so ever. Am I missing something everything is configured as to the article, in sound properties record is set to line 1 vac and in playback it is set to speakers.

oldvettedrvr (author)2014-01-16

My local police/fire does not use trunking, What steps can I elimate just to receive digital non-encrypted traffic?/


MajorHavoc (author)2013-10-29

Need help please! In step 17, I can tune to a few different good control signals. However, I am not getting any new windows to pop up! Ideas? Thank you!

pichulo (author)2013-09-18

Need help. Got stuck on step 17(sptep SDRSharp trunk radio guide). Unitrunker does not display the "site" window as described int the step. I have followed both guides to the letter, but no luck.

romandocent (author)2013-06-08

Yes, it controls. But jumps very fast between voice chanels, so I hear nothing. How to tune it to one ID or group?

romandocent (author)2013-06-08

tryed, still no control from UniTrunker (

lyletanner (author)2013-05-14

I prefer the VB-Audio Virtual Cable instead. Very simple and it's donationware:

harrysand (author)lyletanner2013-06-08

I will have to check that out! I searched high and low for a free alternative to VAC and came up empty handed...

romandocent (author)2013-06-08

Hi, Harrison! I have one dongle and set it all as described in your article (single tuner configuration). But all that SDRSharp listens just control channel, and doesn't jump to the voice frequencies, in spite of the UniTrunker lists all of the target ID's in this time (look at the screen). I'm novice in this, what do I wrong?

harrysand (author)romandocent2013-06-08

You seem to be really close to getting everything to work!

I would first suggest setting the filter bandwidth to 12500. And also taking a look again at the section that talks about calibrating the tuner, you can see the red line in your screenshot is a bit to the left of the signal. If you take care of those issues the signal quality in UniTrunker should improve.

Also, the Minimum Signal Level (in the screenshot you sent me) should be set to something around -30 or -35. The goal is to set the number to a level above the noise floor but not too high so that it will ignore a signal. My guess is that this is what’s keeping SDR# from changing the frequency… Keep in mind if you adjust your gain settings this value will need to be changed again.

jimmyaggie (author)2013-06-06

This is what I have so far. The first picture is the SDR program along with the DSD and Unitrunker. The second picture is the Unitrunker Installation directory. I can't seem to get Unitrunker to control SDR so I was wondering if I did anything wrong.

romandocent (author)jimmyaggie2013-06-08

the same problem (

GeekSkunk (author)2013-05-11

Thanks for pulling this together, very helpful. Quick question - With 1 RTL-SDR should I expect to actually hear anything, or just see it decode with DSD? Seems everything revolves around the VAC. Audio output of SDR# needs to be the VAC, U-Trunker uses that as the input (so does DSD I think).What gets the decoded sound out of the computer speakers? Hoping its just a setup issue I have.

harrysand (author)GeekSkunk2013-05-12

You are correct, UniTrunker and DSD will use the same input that comes from SDRSharp. You direct the sound out of SDRSharp into the line 1 device, and set up DSD and UniTrunker to listen to line 1. When tuned to the control channel Unitrunker will decode tuning information, and when tuned to a voice stream, DSD will decode the voice information. You should absolutely be able to hear sound out of DSD. Double check and make sure that Line1 is set as the "Default Recording Device" in windows sound properties and that Unitrunker is set to listen to Line1. Go back over the final steps in the guide and make sure you didn't miss anything. Hope this helps!

rj44319 (author)2013-05-07

I don't see the Trunking tab in SDR#?

knack (author)2013-05-01

Small calculator icon?

I found mpt1327, i see the call, joins but frecuency its 0.0000. any ideas?
perhaps its encrypter? how i known if its encrypt?

znorris (author)2013-04-30

Great article. You re-kindled my interest in SDR. I bought a couple during the craze and never really did much more than listen to the radio. This has been a fun re-awakening. I am having troubles finding the correct frequency. I've tried looking up the Illinois State Police trunk on but can't seem to get anything out of it. Maybe a new antenna? Thanks again for this!

harrysand (author)znorris2013-04-30

Thanks! I just used the antenna my receiver came with, pictured above. On the system in my example there were a bunch of control channels but I could only actually receive one or two. I think they are only a few miles away. Upgrading the antenna might be an option to look into. But before you spend money, see if your county has a trunked system, you probably have better chances at being close to one of those. Also do you see consistent streams in SDRSharp, but just have no luck getting UniTrunker to pick it up? That could point to a configuration issue.

znorris (author)harrysand2013-05-01

I was able to tune into a local trunk and UniTrunker was able to see it. So that's good. I've attached a picture of it so you can see what I'm getting.

How did you pick the frequency for the police trunk? I guess I'm not entirely sure I'm tuning to the correct freq.

harrysand (author)znorris2013-05-01

You're actually closer to getting it working than you think! The green bars in the top left of the UniTrunker window means that you are successfully connected to the control channel and your antenna should be okay! By looking at the 8D01 in the UniTrunker window I can see you're tuned to this system here:

I dont think that is a police system. For Illinois I would try looking here and finding the control channels listed in your county or nearby counties:

Also, you are using a newer version of SDRSharp that doesn't (yet) have a compatible trunking plugin. I have a download link under the Software section to the version you need. Then take a look at the end of the tutorial that shows how to configure the plugin.

Hope this helps!

About This Instructable




More by harrysand:How to Make a $19 Police Radio ScannerAdding an External Antenna to a Clear Motorola CPEi25150
Add instructable to: