RTL-SDR Tutorial: Decoding Digital Voice (P25) with DSD

Update: See out new tutorial for trunked radio tracking, including digital voice trunked tracking.

The RTL-SDR software defined radio combined with SDRSharp, and a program called “digital speech decoder” (DSD) can be used as a radio scanner to easily and cheaply listen to unencrypted digital radio voice conversations.

Digital radio voice communications are becoming more commonly used in the radio spectrum. This is due to the various improvements offered over traditional analogue voice radio systems. Unfortunately for radio scanner hobbyists, digital radio is difficult to receive, as special radio scanners which can be expensive are required to decode the digital signal. Additionally, digital radio systems can be encrypted making it impossible for communications to be decoded by a hobbyist. However, most users of digital radio do not bother to encrypt their systems as it can introduce lag and extra battery drain in portable radios.

The most common digital speech codec is APCO P25, which DSD is able to decode. DSD is also capable of decoding other common digital codecs such as DMR/MOTOTRBO and ProVoice which no hardware scanner is currently capable of.

Super cheap software radios such as the RTL-SDR can be used to decode these digital voice communication signals instead of expensive radio scanners. While this tutorial is aimed at the RTL-SDR, other software radios such as the Funcube dongle, HackRF and BladeRF will also work. Hardware radios with discriminator taps may also work.

Examples of DSD Decoding Digital Voice with RTL-SDR as a Radio Scanner

YouTube user Geoff Wolf shows a video where he uses RTL-SDR as a police scanner to listen to public safety P25 digital radio using DSD, SDRSharp and virtual audio cable.

RTL-SDR: Decoding P25 Phase I QPSK with DSD and SDR#

YouTube user Superphish uses RTL-SDR as a radio scanner to decode MOTOTRBO digital voice of a taxi company, using DSD, SDRSharp and virtual audio cable.

Digital Voice Decoding with RTL SDR (RTL2832), DSD and SDR Sharp

Tutorial – Decoding Digital Voice using SDRSharp, DSD and RTL-SDR (For Windows)

It is assumed you have an RTL-SDR dongle set up and working with SDRSharp. If not, see the buy RTL-SDR, and quickstart pages first before attempting this tutorial.

First, you will need to download the lastest DSD 1.6 version and extract the zip file or place the exe into a folder. Download the latest “Windows Port with P25/DMR Filter”.

Update 25 Feb 2014: Note that there is also the still in development DSD 1.7 available which can also decode D-STAR voice. DSD 1.7 needs to be manually compiled first. These links can help you to compile it for Windows and Linux. There is also DSD+ now available which has much improved P25 and DMR decoding, especially for weak signals. DSD+ download and instructions can be found here. With DSD+ the installation of Cygwin shown in this tutorial can be ignored, but pay attention to the steps needed to download lame_enc.dll on the above link.

Next, if you don’t have Cygwin installed, you will need to go to www.cygwin.com. Download and install the 32-bit version of Cygwin. Even if you have a 64-bit PC, you should use the 32-bit version of Cygwin as DSD is a 32-bit program. You can use the default install options, but make sure you record what “Root Directory” your Cygwin is being installed to. I just install to “c:\cygwin”.

Set the cygwin root folder

Once installed, navigate to the root directory folder where Cygwin was installed to. Open up the “bin” folder, and find the file “cygwin1.dll”.

Find the cygwin1.dll file

Copy and paste this file into the DSD folder.

DSD Folder

You will also need an audio piping utility such as virtual audio cable. (The trial version of virtual audio cable may work, however a watermark sound is played periodically which could cause a bad decode). You can also use the free VB-Cable as a virtual audio cable alternative.  Also ensure virtual audio cable or VB-cable is set as the default recording audio device in windows sound properties as DSD will use the default sound device.

The sampling rate of your audio piping method must be set to 48000 samples/sec. To set this in Windows, right click your device in the Windows sound recording tab, go to properties and under the advanced tab, set the sample rate to 48000Hz. Do the same to the same device under the Playback tab as well.

Sound Properties

Also, in your SDRSharp folder, open SDRSharp.exe.Config in a text editor such as Notepad, and ensure the key minOutputSampleRate has a value of 48000 such that the line reads as <add key=”minOutputSampleRate” value=”48000″ />.

Set SDRSharp Sample Rate

If you are unfamiliar with what a digital voice signal may look like, two waterfall examples are shown below, with audio examples.

P25 (LEFT)

DMR/MOTOTRBO (RIGHT) 

P25 Waterfall ExampleDMR/MOTOTRBO Signal Waterfall

 

 

 

 

 

 

 

 

Now to decode the digital voice signals follow these instructions.

  1. Open SDRSharp and set the audio output to virtual audio cable or VB-cable.
  1. Set the receive mode to NFM, with a bandwidth of about 12.5KHz.
  1. Tune to a digital voice signal frequency. You will need to Google for these frequencies by your location. The radioreference databases may be a good place to start looking for these frequencies. Most digital voice frequencies will be around 850 – 900 MHz.
  1. Open a command prompt from Start->All Programs->Accessories->Command Prompt, and navigate to the folder where DSD is located. For those who are not familiar with the command prompt, use the “cd” command to change directories within command prompt. For example, if your DSD folder is located in c:\Radio\DSD, you would type in command prompt “cd c:\Radio\DSD”.
  1. Type in “dir” to show a list of files in the current directory, and look for the name of the DSD .exe file. Now type into the command prompt the file name of the DSD .exe file, which at the time of writing this article is “dsd160″, and then press enter to start decoding.

At this point, text should be scrolling through the command prompt window when a digital signal is broadcasting. Whenever someone speaks into the radio you should see the words “voice” in the window, and hear voice.

DSD Command Prompt

If the word voice is constantly showing and a garbled sound is playing, you may be listening to an inverted DMR/MOTOTRBO signal. Try typing “dsd160 -xr” into the command prompt at step 5 instead. More DSD options for other digital signals can be found by looking at the DSD help screen by typing in “dsd160 -h”.

To get good decodes (for most soundcards), the volume settings in SDRSharp and Windows should be played with until “inlvl” reads at approximately 30% for best performance. Note that all soundcards are different, and DSD may get better performance at a different percentage on your computer.

To stop DSD, simply press “ctrl + c” at the command prompt while it is running.

Some Tips

  • If you don’t know what P25, MOTOTRBO, ProVoice or any digital voice signals sound like, this page has some more example audio files.
  • You can simply manually scan through various signals, and see if DSD starts scrolling text to see if a signal is supported. DSD will start attempting to decode immediately. Note however that DSD will also scroll text on trunking channels, but will not be able to decode them. See the next section for information on decoding trunking channels.
  • A strong signal is required for DSD to decode audio well. Ensure you are using a good antenna and have set the RTL-SDR gain correctly.
  • DSD will listen to the default windows sound recording device. Make sure virtual audio cable or VB-cable is set as the default device. No text will be scrolling within DSD if the wrong audio device is used.
  • Stereo mix can be used, but you will be hearing both the digital signal as well as the decoded voice at the same time. Also, the decoded voice audio will be pumped back into DSD causing a detrimental feedback loop.
  • DSD is software in development and may not perform as well as a commercial digital radio.

More Advanced Digital Radio Scanning

As digital voice uses a trunking system, unitrunker can be run along with DSD to follow conversations across channels. Suprisingly, only one RTL-SDR dongle is required. This allows RTL-SDR to work as a proper radio scanner which can follow conversations across frequencies.

A good write up of how this can be done is presented here, with example video shown by YouTube user jcims.

SDRSharp + UniTrunker + DSD + VAC Decoding P25 with Single Receiver

50 comments

  1. Ambrose

    Heya i am for the primary time here. I found this board
    and I to find It truly useful & it helped me out
    much. I am hoping to present one thing again and help others like you helped me.

  2. Ham

    How does this work in Estonia? i don’t understand. Police uses Sepura radios and Fire Dept. uses EADS radios..

    Anyone help me?

  3. Günter

    I setup everyting as you described and it works in so far that I see DSD output with many = and R and E and I hear audio. But what I hear is cut off pieces, maybe 400 ms long and then about the same time silence. I tried all combinations of -xr and -fr and volume settings but nothing has an effect on this behavior. I’m listening to DB0NJ and DB0TVM repeaters with strong signals. Don’t think they are encrypted as this should not be allowed in HAM radio.

    Any ideas?

  4. Pingback: Software Defined Radio Tutorial For The Beginner | The Cyber Daily
  5. Pingback: SDR Dongle Turns Computer Into Receiver | KI4KQD BLOGGER
  6. Pingback: Improved Digital Voice P25 Decoding with DSD+ - rtl-sdr.com
  7. Lucas

    Hello. Thank you for this very well written and updated tutorial. I have followed all of the instructions to decode DMR and all I am hearing is this constant tone when I click “Play”. I’ve fiddled around the software a bit and have not been able to get this to go away. Any help would be greatly appreciated!

  8. Daniele

    Hello.
    Using a laptop and VB-Cable and the software decodes well. However, no sound comes out from the speakers. But what should I do / set? I still do not understand …
    Using Windows 7.
    Thanks in advance!

  9. Takis

    Hey, i am running dsd, with all the settings, i receive an error: unknown burst 1101 somrthing like that, i can see DMR, filter name, and slot voice, but the voice is too bad!!!
    Also, i run a dipole antenna, could you please give some instructions, about length, polarity, etc?
    Any other cheap or homemade antennafor dsd decoding? (DMR in my region, runs at 400-430 MHZ)

  10. Dan P

    Ok. Now I am getting scrolling of P25 channel, but no voice decode coming out of the speaker. Speaker is set to default so I know that’s not the problem. I can send you a screen shot. How can I get a screen shot to you?

    • admin

      Per your other comment, it is possible that the signal strength isn’t good enough. When I use DSD, my signals are usually about 30db above the noise floor. Also are you sure the P25 channel is unencrypted?

      To show a screen shot use an image service like http://imgur.com/, then link to it here, or attach it in a post in the forum.

      • Dan P

        Hello. Here is a screenshot of DSD160 scrolling, but so sound. All my settings are correct as far as my soundcard settings, etc. Can you tell from this DOS screenshot if anything is out of the ordinary? Frustrating because the software definitely hears the channel and scrolls, but again no sound decoded. [IMG]http://i.imgur.com/qzx6bb9.jpg[/IMG]

          • Dan P

            Nope it’s not a trunking channel. It’s one single channel. 159.150 Mhz in Apco 25. I think I am going to give up though. Spent enough time on this for now. Signal is strong (only 11 miles from the tower), volumes are set correctly and all else is set fine. Thank you for your help anyway.

  11. Jochen

    Hello there!
    I am working with E4000 Dongle, Sharp SDR and DSD wich all working perfect. I am receiving some DMR-Channel, wich are decoded very well. but i did not hear any decoded synthezised voice over the speaker.
    If i set DSD with option -w to set a wave-file, that wave file will work fine. But i want to hear live. Did i set something wrong? I set input- and output device with VB-Cable to default. I am using Windows7 32bit version. How can i make it possible?

  12. RB

    Well, this may be a little off topic, but…

    I’m trying to decode a single frequency using a discriminator tap from a Yaesu FT7800 transceiver.

    Well, if i run the signal straight to DSD, i do get something. But it is all garbled.
    If i run it straight to SDR# i do get something on the waterfall.

    But if i run it thru SDR# and THEN to DSD, it appears that DSD can’t read the stuff, because nothing happens at all.

    • admin

      What type of signal are you attempting to decoding? Getting garbled voice sounds like the signal might be an inverted DMR. If it is DMR, invert the signal with the -xr flag. You might also get garbled voice if the channel is encrypted, nothing you can do then. Try playing with the Windows volume settings as well.

      I’d probably avoid trying to go through SDR# with a hardware radio, just adds another step of failure. Plus, I think you’re probably getting the audio spectrum in the waterfall, and not the RF spectrum. I don’t think SDR# will work well like that.

  13. Pingback: DSD and P25 GFSK decoding - The RadioReference.com Forums
  14. Pingback: PA3ANG – Dutch Ham Radio Station – Homepage & Weblog » D-STAR wordt DMR
  15. Dan P

    Help! I have SDR Sharp working great, as far as listening to many frequencies goes and it works great, but when I want to switch over the SDR output to VAC so I can decode and listen to P25 frequencies, nothing happens on the DSD screen. I know I have VAC installed correctly, am tuned to a known P25 frequency with a strong signal, but it’s almost like VAC doesn’t hear anything so no scrolling or decoding happens. Any suggestions? Any settings I should look at? Help!!!!

    • admin

      Hi, check the windows sound screen (by right clicking the speaker icon and going to playback devices) verify that the volume meter for VAC is showing sound output. The other thing is to make 100% sure that VAC is your default sound device by disabling all the other devices you have in the recording devices screen (such as stereo mix). Finally, if VAC still doesn’t work, try VBCable.

      • Dan P

        Still nothing. In Windows, I set the recording device input as VAC and in SDR I set the device output as VAC. (per instructions above on this website). Stlll nothing. All I get on the Dos screen is : DIGITAL SPEECH DECODER 1.6.0 BETA WITH AUTO P25 & DMR FILTER
        MBELIB VERSION 1.2.4
        AUDIO IN/AUDIO OUT DEVICE:/DEV/DSP
        and with a flashing curser under that. Nothing is heard. Not sure what is happening. Signal is strong and loud too.

        • admin

          Try this as a test: Get windows stereo mix setup, and disable VAC and set stereo mix as your default sound device and set the volume loud enough to register on the volume meter. Go to my Signal Identification Guide page linked up the top, and try test DSD on the example P25 and DMR audio examples. You should see some text scrolling. Then test it with Stereo Mix on your live signal.

          Also, try VBCable. I heard once about someone having trouble with VAC, and only VBCable worked.

          EDIT: Also, you didn’t mention anything about making sure that VAC is your default sound device. Like here, but do it with VAC instead. http://i2.wp.com/rtl-sdr.com/wp-content/uploads/2013/04/DefaultDevice.png?resize=414%2C461

          • Dan P

            VAC is my default device. I also tried VB Cable and both are not giving me results. I am trying to get stereo mix set as default, but that is not an option. All there is for options is REALTEK HD AUDIO INPUT, VB-AUDIO POINT, and VIRTUAL CABLE 1. Remember I have XP so my Audio Properties box looks different than the one in your link. I will fiddle some more and try to get DSD to pick up the P25 sound posted here.

            • admin

              Usually stereo mix isn’t enabled by default. There are a bunch of tutorials on Google showing how to enable it. Good luck, and let us know your results.

                • Dan P

                  I did what you asked and DSD is not hearing the sound files even after enabling stereo mix. No scrolling. Although when I first started DSD, a quick burst of unknown something showed on the screen. Not sure what because there were no sounds at the time I started it. Frustrated.

  16. Austin

    I believe I have followed all of the steps correctly, however when I try to run dsd160.exe I get an “application was unable to start correctly” error message (this is on a windows 7 64-bit computer). I also tried “dsd -h” but dsd isn’t recognized. Any suggestions?

  17. Dan P

    When I use SDR Sharp with my dongle to use as a regular scanner, I use the default sound card on my laptop and I hear everything I want. But when I want to use DSD to decode P25 per the instructions I change the input on my sound card to VB Cable and the output on SDR Sharp to VB Cable, I hear nothing. Is that a normal thing. Will I hear something through my computer speakers when the dongle picks up and decodes a channel with digital P25? Is it normal to not hear anything at all on my speakers when the sound settings are like so? Is that the whole purpose of VAC or VB Cable? FYI, I am using XP. Any insight would be a big help. Thanks!

    • admin

      Hi, yes that is expected. VAC or VBCable are used to silently send the P25 channel audio to DSD, which will play only the decoded speech audio through your speakers. Otherwise, it would be a pain to hear the undecoded channel at the same time as the decoded voice.

      • Dan P

        Great! Thank you so much for the quick response to a question that has been bugging me for a week! Great. Now I know my sound settings are ok. One other question. I am not sure of any other settings such as filter bandwidth, etc… I left all the settings the way SDR came out of the box. Are there any other settings I should change to tweak everything? So far it all sounds ok. Any insight? I will probably just leave everything like it was when I installed it. Thanks again!

        • admin

          Yeah try everything with defaults first, then fiddle with the filters later to try improve performance. Usually turning off the audio filter and reducing the filter bandwidth seems to help for me, but it’s hard to be sure.

  18. Pingback: DSD Windows Port - Page 20 - The RadioReference.com Forums
  19. Bob

    Where can I find the Cable output properties dialog (about halfway through the page) under Windows XP?

    • admin

      I don’t think XP has this particular dialog.

      Anyway, setting the minimum sample rate to 48 KHz in SDR# should be sufficient. Windows should use the sample rate setting defined by SDR#. I only included that part as a ‘just in case’ type of thing.

  20. Pingback: SDR decoding digital modulation | rodezio

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>