Decoding DMR / P25 with the RTL SDR – an update

Setting up  SDR# (or SDRsharp) for use with an RTL dongle is the cheapest way of listening to most digital voice modes on the VHF and UHF bands, and you don’t need to know talkgroups, colour codes, slots or anything, so it’s much easier than any other method, other than forking out to buy one of the nice but overpriced digital scanners, and it’s also great for general FM, AM and SSB monitoring too, with sensitivity on par with typical purpose made mobile and portable transceivers, though, for analogue listening, i do think the SSB AGC performance on the SDR side needs some improvement, but that may just be my personal preference, and  on the decoding side, there is no DSTAR audio decode built into DSDPlus ‘out of the box’ (on Windows)  but apart from those very minor issues, it’s a great way to go listening nowadays, and it’s not half as fiddly to set up as it was  earlier, so, as interest in decoding digital voice is still on the increase, it seemed like a good time for a refresh.

You will need:
PC  –
anything from the last several years should be fine,  most of us have PCs that are at least dual core by now, so anything runs Vista (remember that nightmare?)  will do. Windows 10 works fine, probably better now to use Windows 10 than Windows 7.   Win 10 runs SDRsharp (Airspy) pretty well, though recent versions are a little ‘crashy’

pc
Of course, You need an RTL SDR dongle.. this blue MK II one (below) was £6 off a well known auction site, and came with the usual TV remote and the pointless UHF magmount, but hey.. i need  fridge magnet, The SDRs’ coaxial connector may be an MCX, it was on my first RTL, but the BEST RTL dongles now come with a SMA connector, with a TCXO even and metal body, some even do HF.

You can use 2 or 3 extension USB cables to get the receiver up and away from the often ‘RF noisy’ computer gear and possibly save a little bit of cable loss too.

RTL SDR dongles also run well under Linux, Linux driver installation here and Mac OS X Mac OSX driver installation here and an old 2012 GQRX SDR receiver complied for Mac (Thanks Elias) it’s GNU Radio based too.
Even Raspberry PI’s and other SBCs can run RTL SDRs too. RTL SDR dongles can even run on Android, with drivers available in the App store, and it can even decode digital voice.

Linux can, of course, run digital voice decoding quite well too, in fact the first DSD decoder program ran on Linux only, not Windows, so to decode on Windows you had to run Cygwin and it seemed a bit fiddly, until DSD was be ported to work on Windows natively. There is a great amount of SDR work going on, not least of all on Linux – check your repo and GIT for goodies, Linux can even decode unencrypted TETRA voice, with GNUradio, so Windows and Mac users are out of luck again with that one, i may do an article on that in the future, if anyone’s interested, but it’s not for the beginner or faint-hearted, but is reasonably straight forward if you’ve compiled  software before on Linux.

 


Above – most 2020/2021 RTL SDR –
slightly better spec with TCXO (temperature Controlled Oscillator) they drift much less.
there are larger, better, more expensive versions with more filtering in.
Below – older style RTL- SDR

dongle2

and you may want something like this MCX to BNC lead if you bought the one with a MCX connector, but those are fast disappearing, most are now SMA, so you’ll need an SMA t whatever you use in your shack for antenna connections

mcx

Before we start, a brief overview might seem appropriate, as using a PC to tune the bands is still an relatively unknown thing to many, , but it’s a quickly maturing technology, and may take a little getting used to, but tuning around on a SDR is quite different, and fascinating to visualise the 2Mhz of band you csn see moving, besides using your mouse wheel as the VFO, you can buy actual hardware VFO type knobs too – USB leads which control software. Electronic musicians have been quick to adopt real hardware controls for software instruments, and they work well too. some are horrendously overpriced, but some can be had much, much cheaper..

The idea is, that RF signals come in to your dongle, then turned into digital inside then sent up the USB to your PC running the SDR program, then (my badly drawn green cable thingy) the signal path once it comes into your PC to your SDR program Then outputs from your SDR into the VIRTUAL CABLE  to the DSD  (or DSDPlus) program which decodes it, then outputs it back to your speakers from the VIRTUAL CABLE OUTPUT.  it’s the ‘middleman’ and Yes.. i know my quick drawing below is rubbish !

cabling

You can install THE VIRTIUAL CABLE  now if you like, but it may want to reboot to take effect. Y

First things first, Windows drivers often come with dozens of CPU chomping addons and run your computer’s audio through some weird surround sound DSP nonsense automatically, which is no good at all if we want to use the soundcard for something genuinely useful, so it’s worthwhile checking your Windows system tray, and  / or Windows control panel to make sure all DSP and sound effects are turned OFF, these effects can hamper or ruin attempts at decoding digital voice.

Software List:

 

VB Cable

Airspy SDRsharp receiver  and  here’s the Airspy wiki   (it’s actually quite good)

DSD Plus (digital voice decoder)  and it’s associated homepage  HERE

When you plug in you RTL SDR – Windows will attempt to install some drivers – you don’t need to bother – but if it does try to download drivers, let it finish,
because you’ll be replacing them in a few minutes anyway.
You’ll may need to install the Microsoft .net framework too, depending on what version of Windows you are using, but If You’r using Windows 10 you probably have it installed already.

Set up the DSD.exe decoder.
You should unzip SDRsharp into a folder then, the file is still called sdrsharp.exe, and you might need to move the whole folder somewhere else, other than the downloads directory where it probably extracted to, i copied all th DSD.exe and all it’s files into the SDRsharp folder anyway. You could make a shortcut if you like, to sdrsharp.exe, and to DSD..   i created a shortcut to DSD.exe for convenience. I dragged these two shortcut icons into the start menu for ease of use.


Now it’s time to test it.
start SDRsharp and you should see something like this below:

Capture


First thing, check at the top left where it says “Source” and open the drop down menu and select RTL SDR (USB) …. if you dont see RTL SDR listed and the dongle is plugged in, either navigate to the SDRsharp folder and run Zadig  and follow the instructions below, if Zadig,exe is not in your SDRsharp folder already, d/load it here and run it as Administrator, Windows will prompt you for permission.
In the running SDR screenshot above, DSDPlus displays Radio ID, group ID (talkgroup) colour code, and slot.

Running ZADIG (if you need to)
select Options – then List All devices and then from the drop-down, select “Bulk In Interface 0” In the drop down box, choose Bulk-In, Interface (Interface 0) thoughit might also show up as something like  ‘RTL 28320’ or something similar, and that’s ok.
Just make sure that ‘WinUSB’ is selected as the target driver, and then click on ‘Replace Driver’.. you may have to reboot, but next time you start SDRsharp, your RTL SDR should now be in the list of available devices, select it.


Setting it up.

Under the left hand RADIO tab (see the above screenshot) set the mode to NFM, i generally set the filter bandwidth about 12500 for DMR decoding, that’s fine for most normal comms FM listening too, and on NFM i set the steps to 12.5 kc.

These USB devices are cheap and mass produced, the things are not calibrated too accurately, and so we need to fine tune the SDR so they both agree on freq.  (if you’re adventurous and run Linux, try Kalibrate which uses GSM, but it’s really overkill) and you *can* fit a much more accurate crystal.. but i’ll leave that up to you to decide.

Start SDRsharp and click the cog on the SDRsharp toolbar, you will see your device listed, now click both the AGC tickboxes to maximise RF gain, note the frequency correction adjustment there too, we need to find a known signal on air and tune the SDR to the correct freq readout, then, whilst listening, tweak the frequency correction to get it spot on. CW or SSB mode is good as you can more or less find zero beat, as you see, this is an old RTL SDR stick, so this one is set at +68. Newer ones with TCXO are usually set to around ) (zero) or thereabouts.

tghhhre


Now you’re up and running with SDRsharp, you may want to try to decode digital, check the screenshot, and notice the ‘filter audio’ needs to be unticked for decoding: same for Pocsag etc. squelch off/ open.

Captuyyuyyyyre


Make sure to send the SDR’s audio to the DSDPlus decoder program – by selecting Output to ‘VB Cable input‘ and you should see the ‘scope display on the DSDPlus program jumping about wildly now.  If you dont see DSDPlus’ scope displaying activity (even on random FM noise) it could be that the SDR isn’t running (click PLAY’ or the squelch is up. If ithe display is moving, and still silent, audio routing may need one slight tweak, here on my old Windows7 craptop here, i had to go into the control panel, then sounds then check in and output devices as you see below, then it worked. note the audio bargraph level meters reading, your soundcard will probably be named something different.


pb2pb

Get tuning !   if the signals you see are good, but garbled or no audio, they may be using privacy or encryption, or have interference, or it may be data or GPS (LRRP) and all kinds of stuff going back and forwards, still getting problems, check your audio levels, RX bandwidth, make sure your fine tune is correct,  that filter audio is OFF and you are indeed on NFM with no squelch. Remember there is no windows binary widely availble for dstar audio yet (that i have seen) and encryption is used alot.

In case anyone is wondering, clear / unencrypted TETRA isn’t able to be decoded on anything other than Linux at the moment, and it will probably never appear on Windows anyway, On Linux it’s only done with GNURadio as a base, GNUradio companion has the most horrible interface i have ever seen (but it works very well indeed) and there’s not much unencrypted TETRA about anyway, but after all the hours of compiling and patching stuff, it’s a lot of  fun learning about it.

SDR and decoding digital voice can be fascinating, cheap, and lots of fun,  thanks to some really smart people out there, and some really cheap hardware. It offers up a new way of visualising the band and is a crossover of radio experimentation and computer tech, and it’s a developing part of the hacker and radio amateur communities too..  and who knows what direction that may lead to ?   and long may it continue.. Have Fun..

If money’s no object, or if you really must have a VFO knob for your SDR, and let’s face it, most mouse-wheels are pretty crummy for making small or accurate incremental adjustments for any length of time, so you might want to treat yourself to something like the Griffin PowerMate controller .. it’s bluetooth, but it’s still hugely overpriced as it’s little more than a rotary encoder, i wouldn’t mind, but such devices have been around for several years already, and the Chinese manufacturers still haven’t got around to making them for a fiver yet, most you see on Ebay are from Japan or the USA, or if you like the idea, you could always make one…  happy SDRing..

 

-Hax-
All work, text and images © GB7MB

2 Comments so far:

  1. Hi James..
    no, it’s pretty straightforward, but a little involved. If you’re comfortable at the Linux command line it it pretty easy, if you’ve never used Linux before you will be facing a reasonably steep learning curve perhaps, There are no ways to do this in Windows or on the Mac as far as i know James.

    Some of the more popular distro’s are where i would start, i used Xubuntu because i dislike Gnome or the new KDE.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.