DSD+ in Ubuntu 18.04

DSD+ is a popular Windows digital decoding program that handles various digital protocols.  I’m going to install and use it with WINE on Ununtu 18.04.  The example I’ll show here today is a digital trunking control channel that the local Emergency Services uses.  Without DSD+ the signal will sound like this:

So anyway my assumptions are that you have an RTL-SDR device and a program such as GQRX installed AND you are receiving a digital signal that DSD+ is capable of decoding.

Navigate to the Download page of DSD+ and get the Program and the DLL files at a minimum.  It is HIGHLY RECOMMENDED to sign up for and use the DSD+ Fastlane releases (which cost money) although for simplicity the original, old version will work for simple decoding.  If you PayPal the developer $10 he’ll give you a year of Fastlane releases and I think $25 buys the lifetime subscription.

Anyway just unzip the Program Files and DLL files to a directory.  That’s it.  Then if you have the Fastlane files just drag and drop them into that directory and allow them to replace the older files.

Now lets install WINE.  One easy way to do that is to go to the Software Center and install an app called PlayOnLinux or you can do it from the command line with

sudo apt-get install wine


sudo apt-get install wine-developmental

Now you need to be able to pipe the audio from your SDR program directly into DSD+.  In Windows you use a program called Virtual Audio Cable however in Ubuntu Linux it is much easier than that.

Open a Pulseaudio file with this command

sudo nano /etc/pulse/default.pa

At the bottom of the file add this line:

load-module module-null-sink sink_name=Virtual_Sink sink_properties=device.description=Virtual_Sink

It should be all on one line like so:

Now restart Pulseaudio or reboot.  When you come back one of your audio options in GQRX (or any SDR Program) will be “Virtual Sink”.  Select that and your sound will mute.

Now install something called Pavucontrol.

sudo apt-get install pavucontrol

Launch it with the same command.  pavucontrol

On the Playback tab make sure GQRX is outputting audio on the Virtual Sink and make sure dsdplus.exe is outputting audio on Built-In Analog Stereo.  (I realize at this point I haven’t had you start DSDplus)  You can start DSD+ by opening a command prompt and going to your folder where it resides (mine is in a folder called dsd) and typing the following command:

wine dsdplus.exe

It will look like this when you are tuned to a digital channel”

Now back to Pavucontrol. Here are what the pavucontrol settings look like:

Now on the Recording tab make sure dsdplus.exe is set to “Monitor of Virtual_Sink”

Now with GQRX on a digital channel, the audio piped to Virtual Sink, and DSD+ open, and Pavucontrol set as above you should be decoding audio like this:

You done did it!  I want to point out that this is a trunked channel and you were listening to audio from only one frequency.  There is a way to have DSD+ sit on the Control Channel and output audio from ALL THE TRUNKED CHANNELS.  I did not do this here.  I only showed you how to pass audio through from a digital signal.   This will work with DMR radio, or P25 radios.  For example large chain stores, large restaurants, hotel transportation centers, shopping malls, school bus districts will use Digital P25 radios that just use one channel.  Recently I sat in the airport in Atlanta and found the channel the baggage handlers use and listened to that ballet of moving bags around quickly.  Interesting.

A user over at rtl-sdr.com has found a way to add all the channels on a trunked system (except you don’t add the Control Channel) to GQRX and create a scan group.   So suppose you have a control channel with say 7 or 8 channels assigned, you can just add those 7 or 8 channels and scan through them with DSD+, GQRX, and GQRX Scanner.  Brilliant idea.  You can’t add the Control Channel because it is always transmitting and your scanner would always stop and just stay there.   He uses a HackRF which has ample bandwidth as well for tracking larger systems.

Using a program such as SDRTrunk might be easier for beginners.  SDRTrunk is awesome but I’m all about the way it is done above as well.  Very elegant way to tackle a problem.

Anyway hope this helps someone!  Check my contact page if you have anything to say about this.



14 thoughts on “DSD+ in Ubuntu 18.04

  1. TC


    Great blog, very insightful! I have a question and I only ask as Im hoping you ran into this also. I have followed your steps and it is working I am able to decode. However, I am not generating per call recordings, have you encountered this?

  2. Pingback: Listening To Multiple DMR Channels with DSD+ and a HackRF on Linux

  3. 2E0BBN

    Thanks for the guide, I’d already managed to get DSDPlus Fastlane to run with wine but had bad latency problems but this fixed it!

  4. John

    It was essential for me to sign up to Fastlane to decode our local ham repeater. I struggled for quite a while to understand why DSD+ was not decoding anything. it was only when I signed up to Fastlane and upgraded to most current version that I discovered that the repeater was transmitting using Yaesu Fusion rather than DMR or NXDN! The older version that is available free does not decode this format apparently.

  5. WKSUK

    Is it possible to socat stdout udp-listen:7355 | wine DSDPlus.exe -i – -o?????? Something like this.

  6. Pete Halsey

    Tried your instructions for DSDPlus (fastlane) on Ubuntu 18.04.5 LTS, ran into the following problems:
    14 fixme font errors (low level according to wine)
    However, the following errors were researched as best I could and a solution was not found:
    0060:err:ole:start_rpcss Failed to start RpcSs service
    DSD+ 2.235

    Working folder is ‘Z:\opt\dsd\DSDPlus’

    *** Can’t write to working folder ***
    Thanks for any help you may be able to provide.

    1. Pete Halsey

      Update; Just realized I didn’t include the detail of where the error occurred. It started where I entered the command – wine dsdplus.exe’. Sorry for the omission.
      Thanks again.

  7. hamta1

    Hello, thanks for the Guide. But one problem im having is with Wine. Cant get DSD to run using wine.
    This is how my terminal looks like

    wine dsdplus.exe
    wine: created the configuration directory ‘/home/rasp10/.wine’
    004c:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002
    004c:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002
    004c:err:ole:apartment_get_local_server_stream Failed: 0x80004002
    0050:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002
    0050:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002
    0050:err:ole:apartment_get_local_server_stream Failed: 0x80004002
    0050:err:ole:start_rpcss Failed to open RpcSs service
    0040:err:setupapi:SetupDefaultQueueCallbackW copy error 1812 L”@wineusb.sys,-1″ -> L”C:\\windows\\inf\\wineusb.inf”
    Could not find Wine Gecko. HTML rendering will be disabled.
    Could not find Wine Gecko. HTML rendering will be disabled.
    wine: configuration in L”/home/rasp10/.wine” has been updated.
    0024:err:module:process_init L”C:\\windows\\system32\\dsdplus.exe” not found

    If anyone can help i’d really appreciate it. Im new to linux so i dont know many things about it.


Leave a Reply

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