DSDPlus Request help optimizing P25 voice decoding

trossman

Member
Joined
Jun 17, 2020
Messages
22
Kindly request expert advice to optimize my decoding of local P25 voice comms. There was a brief moment where I had it perfectly intelligible, and something changed.... I have driven myself nuts tweaking DSD+ settings, VB cable settings, Windows sound settings, and SDRSharp settings (not to mention antenna fun) to try and get it going again. To be honest, in looking at the settings which still get me semi-intelligible speech, I don't even understand why those settings work at all (especially as they relate to VB cable settings). I have taken screenshots (attached, and via imgur link) to explain my current configuration.

In summary: I am running an RTL-SDR v3 (USB), tuned to a known voice channel in SDR#, through VB Cable to the DSD+ plug-in on SDR#, and then out through my computer speakers. I am the cheap dipole which came with the RTL-SDR, with the elements more or less the right size (target freq is ~861 MHz). SNR during broadcast is around 40 dB, so one would think I'm okay there. SDR gain in software is also set to roughly 14 dB. To troubleshoot, I recorded raw IQ files and played them back at various settings, and can't get it perfect even though I know its possible to do better. You can see in the screenshots that the DSD log is rife with errors. I also included some screenshots of Unitrunker on the control channel, in case it helps diagnose.

Anyway, welcome community advice to help optimize my P25 voice decoding. If this is simply RF being voodoo, I can accept it. If I have done something stupid with sound settings, VB settings, or all the various sampling settings, I'd love to take this opportunity to learn. Thank you in advance.

Screenshots of SDR#, DSD+ VBCable, and Windows 10 settings, and bonus Unitrunker snips:
Raw baseband IQ data available upon request (large file).

Thank you!
 

Attachments

trossman

Member
Joined
Jun 17, 2020
Messages
22
Thanks for your reply. I have not really messed around with FMP much - despite its simplicity, don't I still need to deal with a virtual cable connection to DSD+? That would have all the same variables to contend with as I'm currently grappling with SDR#, wouldn't it?
 

trossman

Member
Joined
Jun 17, 2020
Messages
22
Also, since you're monitoring a PSK signal, I'd be using -mp (IIRC) on the DSD+ 1.101 command line.
Slicerwizard, thank you so much for your reply. The -mp command helped a bit. Not perfect with errors yet, but my brain noticed a difference in the voice quality. I have a lot to learn, thanks for your patience (as I see this is not the first time you've posted this exact advice to this exact quesiton :)

From what you can all tell, are all my audio sources configured properly? I am concerned that I am piping audio around the wrong way (for example, could DSD+ be getting a feed of two different sources at the same time?) Lots of other online instructions have Aux audio unchecked in the DSD+ plug-in, but mine only seems to work with it checked.

Also checking out the Unitrunker Google group for a DSD-free Unitrunker version.

Thanks!
 

WB9YBM

Active Member
Joined
May 6, 2019
Messages
1,180
Location
Niles, IL
Looks like everyone's been looking at the high-tech end of things; has anyone considered the low-tech side? For example, using shielded cable on the audio lines, making sure the shield gets grounded properly, bypass capacitors, chokes and so forth?
 

cg

Member
Premium Subscriber
Joined
Dec 13, 2000
Messages
3,848
Location
Connecticut
It has been so long since using that version but could it have changed to Phase 2 or that channel is now P2? I don't know how v1.101 reacts to P2 voice when there is no monitoring of the control channel.

chris
 

slicerwizard

Member
Joined
Sep 19, 2002
Messages
6,850
Location
Toronto, Ontario
as far as being susceptible to noise, data stream and audio isn't all that different.
The hell it isn't. Digital data isn't affected at all by mild noise levels. Ones and zeroes still arrive as ones and zeroes. Somewhat higher noise levels are often countered by forward error correction schemes. Analog audio has none of that.

Looks like everyone's been looking at the high-tech end of things; has anyone considered the low-tech side? For example, using shielded cable on the audio lines, making sure the shield gets grounded properly, bypass capacitors, chokes and so forth?
Ok, here's a typical SDR dongle plugged into my laptop; by all means show us how, why and where you'd add caps and chokes...

SDR.jpg
 

WB9YBM

Active Member
Joined
May 6, 2019
Messages
1,180
Location
Niles, IL
The hell it isn't. Digital data isn't affected at all by mild noise levels. Ones and zeroes still arrive as ones and zeroes. Somewhat higher noise levels are often countered by forward error correction schemes. Analog audio has none of that.
Ok, here's a typical SDR dongle plugged into my laptop; by all means show us how, why and where you'd add caps and chokes...
No one ever specified "mild"; if we consider "mild" to be less than 1/2+V, you'd be right. Anything above that, though, would represent a glitch. As for adding caps, you can do that right across the connector (assuming you know how to solder--otherwise you'll next to ask someone that can). For a choke, I'd recommend a ferrite bead--they can be had in forms that clip around the connector. Depending on how severe your noise is, you probably won't need both approaches-start with whatever's easier for you.
 

trossman

Member
Joined
Jun 17, 2020
Messages
22
Looks like this generated some discussion, all of which was helpful, thanks.

To clarify, there are no audio cables in between my SDR and PC. Its plugged in via USB, and the audio "output" from the SDR is a virtual connection between the SDR software (SDR#) and DSD+, via VB Cable. Due to the many variables at play (SDR# settings, Windows settings, DSD+ settings, VB settings) for piping and sampling that signal, I remain uncertain whether I am doing this optimally. Nonetheless, I document below, for fellow newbies, the settings which got me the best result thus far. I do so recognizing that every set-up is unique to an extent, notwithstanding the additional variability introduced on the RF side. (Worth mentioning I bought a few dB back by putting my antenna up higher and further from my PC and other electronics). The below config produced intelligible voice for a unencrypted P25 voice channels coming in at 50-53 dB above noise floor, using the cheap SMA-connected dipole (which does have a ferrite choke, per above question from WB9YBM) that came with the RTL dongle. Actually, I can see the P25 (simulcast) repeater site from my window. I remain confused and surprised that I need this much SNR to decode intelligible speech, so welcome any insights you all have there.... or is there something else I'm goofing up? For example, decoding of other known P25 voice channels coming in at ~20 dB above noise floor continue to yield spotty voice quality. Only succeeding on the really hot signals.

On SDR#:
  • RF Gain = 14.4 dB
  • Sample rate = 2.048 MSPS
  • No offset tuning or gain controls activated
  • Quadrature sampling
  • Gain slider at top of SDR# - HAPPY PLACE (for me) is ~36 dB in conjunction with the below DSD settings
  • Bandwidth 12.5k (per p25 spec)
  • Filter Order 600 (worked more or less between 500 and 1000, but this seems like a happy place)
  • Latency 100 (does this make a difference?)
  • No need to mess with I/Q settings
  • Audio:
    • Samplerate 48k
    • Set Output to MME Cable Input (VB-Audio Cable) - meaning the output "audio" will go to the virtual cable input
On DSD Interface Plug-in: (still my biggest source of confusion)
  • Set Audio Device to MME Cable Input (VB-Audio Cable) - meaning that its taking the aforementioned data stream from SDR Sharp's audio output setting
  • Output level HAPPY PLACE (for me): one slight notch past the 5th marker, which does not have any units marked
  • Enable Aux Audio Output (checked)
  • DSD command line:
    • -v4 -O NUL -I0 -i1 -o1 -g0 -u3 -dr0 -dh0 -ds64 -dd10 -dv20 -M15 -f1 -mp [thank you slicer for the -mp setting]
    • When DSD terminal runs, it shows my config as:
      • audio input device #1 (CABLE Output (VB-Audio Virtual ) initialized
      • audio output device #1 (Speakers (High Definition Audio) initialized
        [I interpret as meaning that DSD takes in the virtual cable data stream and craps whatever it decodes out as audio through the system speakers.]
VB Cable Settings (in VB Control Panel):
  • Internal Sampling Rate - 96000 Hz [is this a Nyquist thing, 2x the 48k sampling on the SDR# audio stream?]
  • Max Latency - 7168 smp [don't understand, I think default]

Windows 10 Sound Settings:
  • Playback tab:
    • Speakers set as Default Device
    • Cable Input (VB Audio) is active/ready, level set to 100
  • Recording tab:
    • Cable Output (VB Audio) is set to default device; "Listen to this device" is unchecked; Levels to 100
    • One thing I did change was the default format - sample rate now set to 48000, up from 41000. Not sure if it contributed to the overall improvement.
Next Steps:
  • Will record some more raw IQ cuts for continued tweaking
  • Trying to get access to the latest Unitrunker Google Group
  • Playing around with FMP, per above advice
  • Would like to build a Yagi tuned to the 850-860 MHz band

Thanks everyone for your help, welcome continued discussion...
 

K1YNE

Member
Joined
Mar 2, 2019
Messages
8
I think having the SDR# -> VB Cable -> DSD is adding a lot of extra complication that makes it harder to troubleshoot whats going on.
I had several problems that I worked though getting good audio from my setup.
First was the front-end of my SDRs were getting overloaded. Im reasonably close to some high-power FM stations, and a cell tower about 50ft away. When cruising through the band with SDR# I was seeing those FM stations at up to 5th and 6th order IM. I started with the RTL-SDR FM Band stop and that help cut down the FM broadcasters plenty. However, I still felt like it was getting overloaded between the cell tower and everything else going on. Ultimately what I did was pull apart a 800MHz Astro Spectra and used the ceramic preselector out of the front end. Its very narrow, like 845-870MHz; perfect for 800 Trunking. And its down ~90db at 108mhz, so I deleted the little FM broadcast bandstop widget. That cleaned it up and I get great SNR. Running 14db gain, but Ive got both SDRs Tee-d after the ceramic preselector, which is fed by about 60ft LMR400 and a 3db fiberglass stick. So theres a bit of loss in the coax and preselector, and another 3db at the splitter.
Second I noticed as time went on the audio would get worse and worse. Ultimately I think the SDRs were getting hot and it was affecting their output somehow. When I implemented the Astro Spectra ceramic filter, I cut out a piece of Alum and clamped the SDRs to it. That dissipates the heat and Ive had no further problems with degradation of signal quality with time. It runs for months on end.
Thirdly, I found that I had to bring back an old computer and make it dedicated to running FMP and DSD. Even though my tower has 16 cores and 24GB of RAM, browsing the internet and doing other stuff would cause very noticeable (and annoying) glitches in the audio. Setting FMP and DSD to 'Realtime' CPU Priority helped, but Windows also liked to downgrade them on its own without my permission, so I'd have to manually bump them up again. Just having a dedicated machine fixed pretty much the rest of my problems.
 

air-scan

Member
Premium Subscriber
Joined
Oct 6, 2019
Messages
413
Location
Oklahoma City, OK
Looks like this generated some discussion, all of which was helpful, thanks.

To clarify, there are no audio cables in between my SDR and PC. Its plugged in via USB, and the audio "output" from the SDR is a virtual connection between the SDR software (SDR#) and DSD+, via VB Cable. Due to the many variables at play (SDR# settings, Windows settings, DSD+ settings, VB settings) for piping and sampling that signal, I remain uncertain whether I am doing this optimally. Nonetheless, I document below, for fellow newbies, the settings which got me the best result thus far. I do so recognizing that every set-up is unique to an extent, notwithstanding the additional variability introduced on the RF side. (Worth mentioning I bought a few dB back by putting my antenna up higher and further from my PC and other electronics). The below config produced intelligible voice for a unencrypted P25 voice channels coming in at 50-53 dB above noise floor, using the cheap SMA-connected dipole (which does have a ferrite choke, per above question from WB9YBM) that came with the RTL dongle. Actually, I can see the P25 (simulcast) repeater site from my window. I remain confused and surprised that I need this much SNR to decode intelligible speech, so welcome any insights you all have there.... or is there something else I'm goofing up? For example, decoding of other known P25 voice channels coming in at ~20 dB above noise floor continue to yield spotty voice quality. Only succeeding on the really hot signals.

On SDR#:
  • RF Gain = 14.4 dB
  • Sample rate = 2.048 MSPS
  • No offset tuning or gain controls activated
  • Quadrature sampling
  • Gain slider at top of SDR# - HAPPY PLACE (for me) is ~36 dB in conjunction with the below DSD settings
  • Bandwidth 12.5k (per p25 spec)
  • Filter Order 600 (worked more or less between 500 and 1000, but this seems like a happy place)
  • Latency 100 (does this make a difference?)
  • No need to mess with I/Q settings
  • Audio:
    • Samplerate 48k
    • Set Output to MME Cable Input (VB-Audio Cable) - meaning the output "audio" will go to the virtual cable input
On DSD Interface Plug-in: (still my biggest source of confusion)
  • Set Audio Device to MME Cable Input (VB-Audio Cable) - meaning that its taking the aforementioned data stream from SDR Sharp's audio output setting
  • Output level HAPPY PLACE (for me): one slight notch past the 5th marker, which does not have any units marked
  • Enable Aux Audio Output (checked)
  • DSD command line:
    • -v4 -O NUL -I0 -i1 -o1 -g0 -u3 -dr0 -dh0 -ds64 -dd10 -dv20 -M15 -f1 -mp [thank you slicer for the -mp setting]
    • When DSD terminal runs, it shows my config as:
      • audio input device #1 (CABLE Output (VB-Audio Virtual ) initialized
      • audio output device #1 (Speakers (High Definition Audio) initialized
        [I interpret as meaning that DSD takes in the virtual cable data stream and craps whatever it decodes out as audio through the system speakers.]
VB Cable Settings (in VB Control Panel):
  • Internal Sampling Rate - 96000 Hz [is this a Nyquist thing, 2x the 48k sampling on the SDR# audio stream?]
  • Max Latency - 7168 smp [don't understand, I think default]

Windows 10 Sound Settings:
  • Playback tab:
    • Speakers set as Default Device
    • Cable Input (VB Audio) is active/ready, level set to 100
  • Recording tab:
    • Cable Output (VB Audio) is set to default device; "Listen to this device" is unchecked; Levels to 100
    • One thing I did change was the default format - sample rate now set to 48000, up from 41000. Not sure if it contributed to the overall improvement.
Next Steps:
  • Will record some more raw IQ cuts for continued tweaking
  • Trying to get access to the latest Unitrunker Google Group
  • Playing around with FMP, per above advice
  • Would like to build a Yagi tuned to the 850-860 MHz band

Thanks everyone for your help, welcome continued discussion...
Uhmmm.....VB-Audio maybe screwing up. It has a history of glitching out. Experiment by playing a song through it and see if it stutters if it does then there's your problem. Virtual Audio Cable Lite (free version but limited to one cable) has better processing because its updated a few times yearly. If I remember right the last update VB-Audio seen was back in 2012 or 2013. that's not optimal for today.

I had issues with VB-Audio stuttering and I removed it then installed Virtual Cable Lite then everything played very nicely.

It's a long winded process to test for stuttering

Open your preferred music player hoping it has the option to route it's output to VB-Audio then if it does then set output to VB-Audio.
Then in recoding properties make sure VB-Audio is set for default communications and tick the box that says to listen to this device
Then play the song in it's entirety. If there is even a hint of stutter clicks or pops that's the problem.

This is my technique to see if virtual audio anything is working properly. Stutters clicks or pops will badly negate decoding signals in DSD+
 
Last edited:

trossman

Member
Joined
Jun 17, 2020
Messages
22
Hey air-scan, thanks for your reply. That is interesting, I will try this shortly and let you know how it goes. Is there something about my description above which hints at VB Cable being the issue? Also, do I need to un-install VB Cable to install VAC Lite, or can they co-exist on my system? Thanks again!
 
Top