DSD FME

francisuk29

Member
Joined
May 18, 2014
Messages
22
Location
Watford, UK
Just wonted to say, Fantastic work and also running this in Arch Linux x64 via Mate with Gqrx and use the following

pacmd load-module module-null-sink sink_name=Virtual_Sink sink_properties=device.description=Virtual_Sink
padsp dsd -fr -o /dev/dsp


Just one issue for me, When listening to Tier 3 control channels, It says is a Hytera system when i know is Tait vender.

I have also uploaded a SMS from a Anytone radio within Simplex if this is any help?
CQ CQ CQ DX
 

Attachments

  • MSMS_DMR_Simplex.wav.zip
    631.2 KB · Views: 31

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
Just wonted to say, Fantastic work and also running this in Arch Linux x64 via Mate with Gqrx and use the following
I'm glad you were able to get it up and running well and without issue, especially on Arch. I have a Manjaro system as well, and remember having to jump through a couple extra hoops to get it to work properly and never could quite document what I did to make it work. One thing I will mention though, since I switched to pulse audio, that padsp and -o /devdsp shoudln't be required, I specifically worked Pulse Audio in so there would be no more of that padsp/OSS garbage, nor any more of the portaudio garbage.

try running it with this command instead and see how it goes for you, and be sure to use pavucontrol "Pulse Audio Volume Control" to route audio as required.

Code:
dsd -fr -T -Z

You no longer need to specify the input and output if you are using the pulse audio branch. Also, the -T option allows for MS Simplex voice playback and Stereo DMR playback (voice and or data in both slots simultaneously) -Z will enable extra payload info like that text message in 1/2 rata data mode.

Just one issue for me, When listening to Tier 3 control channels, It says is a Hytera system when i know is Tait vender.

Yeah, I had some questionable info on CSBKs in general. Some seem to work okay, but that darn Hytera message, that's bogus. I get that on Moto systems sporadically as well. I could have sworn I disabled that one. I need to go back and revamp the CSBK decodes at some point. To be honest, it hasn't been very high on the priority list, since I really don't really plan on handling any sort of actual trunking in DSD-FME.

As far as that sample MS sample you submitted, I've mentioned before, but handling MS data bursts is pretty bad to terrible in DSD-FME, due to the way the signal works and the super short bursts, I can't guarantee any data on MS or Simplex to be correct at all. About the only data I've ever verified to be okay in SImplex is the trailing TLC after voice data, and occasional PI headers.

P.S., CQCQCQDX

04:02:26 Sync: +DMR MS MODE | Color Code=11 | (CRC OK ) | DATA Header
Full Data Header Payload [02][48][01][40][11][0F][30][4D][92][14][2F][D9]
04:02:27 Sync: +DMR MS MODE | Color Code=11 | (CRC OK ) | RATE 1/2 DATA
Full 1/2 Rate Payload [45][00][00][3C][00][01][00][00][40][11][5C][F3]
Hex to Ascii - E..<....@.\.
04:02:27 Sync: +DMR MS MODE | Color Code=11 | (CRC OK ) | RATE 1/2 DATA
Full 1/2 Rate Payload [0C][0F][30][AD][E1][00][00][00][0F][A7][0F][A7]
Hex to Ascii - ..0.........
04:02:27 Sync: +DMR MS MODE | Color Code=11 | (CRC OK ) | RATE 1/2 DATA
Full 1/2 Rate Payload [00][28][D1][6C][00][1E][A0][00][82][04][0D][00]
Hex to Ascii - .(.l........
04:02:27 Sync: +DMR MS MODE | Color Code=11 | (CRC OK ) | RATE 1/2 DATA
Full 1/2 Rate Payload [0A][00][43][00][51][00][20][00][43][00][51][00]
Hex to Ascii - ..C.Q. .C.Q.
04:02:27 Sync: +DMR MS MODE | Color Code=11 | (CRC OK ) | RATE 1/2 DATA
Full 1/2 Rate Payload [20][00][43][00][51][00][20][00][44][00][58][00]
Hex to Ascii - .C.Q. .D.X.
04:02:27 Sync: +DMR MS MODE | Color Code=11 | (CRC OK ) | RATE 1/2 DATA
Full 1/2 Rate Payload [00][00][00][00][00][00][00][00][B2][98][4A][09]
Hex to Ascii - ..........J.
Sync: no sync
Press CTRL + C to close.
 

francisuk29

Member
Joined
May 18, 2014
Messages
22
Location
Watford, UK
try running it with this command instead and see how it goes for you, and be sure to use pavucontrol "Pulse Audio Volume Control" to route audio as required.
Code:
dsd -fr -T -Z

Working fine, I just had to make sure my input was set to Virtual Sink and then my output to Built-in speakers and setting Gqrx currently, I have attached the settings i used for anyone using Gqrx. When selecting Mode: Narrow FM remember the three dots .... to bring the more options menu up

set for gqrx.png

Also, you have plans on inplenting rtl_tcp as i run this on a OpenWrt router and would be nice to give a direct input.


root@router:~# rtl_tcp -h
rtl_tcp, an I/Q spectrum server for RTL2832 based DVB-T receivers

Usage: [-a listen address]
[-p listen port (default: 1234)]
[-f frequency to tune to [Hz]]
[-g gain (default: 0 for auto)]
[-s samplerate in Hz (default: 2048000 Hz)]
[-b number of buffers (default: 15, set by library)]
[-n max number of linked list buffers to keep (default: 500)]
[-d device index (default: 0)]
[-P ppm_error (default: 0)]
[-T enable bias-T on GPIO PIN 0 (works for rtl-sdr.com v3 dongles)]

Another issue i forgot to mention, The colour code texting is Dark.

dark colour code.png
 
Last edited:

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
Another issue i forgot to mention, The colour code texting is Dark.

I think that's terminal specific, those are supposed to be cyan and not grey, but terminal profiles can override those and /or make different default colors or hues.

Also, you have plans on inplenting rtl_tcp as i run this on a OpenWrt router and would be nice to give a direct input.

I'll see if I can find a way to work that in or find a clever way to interface with it. SDR++ and GQRX can already use rtl_tcp as an input device, not sure if you are using it in your case with GQRX at the moment though. DSD-FME can also use an rtl device directly, but I don't know if that would be ideal for you if the device is on a remote server in this instance.
 

francisuk29

Member
Joined
May 18, 2014
Messages
22
Location
Watford, UK
I'll see if I can find a way to work that in or find a clever way to interface with it. SDR++ and GQRX can already use rtl_tcp as an input device, not sure if you are using it in your case with GQRX at the moment though. DSD-FME can also use an rtl device directly, but I don't know if that would be ideal for you if the device is on a remote server in this instance.

Yes that's correct, I'm using GQRX + rtl_tcp as an input device (y)
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
Mid June Update

Any current users of DSD-FME will need to switch over to using the executable name dsd-fme instead of dsd after pulling the latest update. I've taken the opportunity to switch over the executable name to the project name to alleviate any sort of confusion between this version of dsd and others out there. I fear it may cause a little confusion at first though, as the binary executable for dsd may still be in your /usr/local/bin/ directory and can still be called, along with the current iteration of the dsd-fme binary executable. It is advised to open your current dsd-fme/build folder and run sudo make uninstallfirst, or to manually remove the binary with sudo rm /usr/local/bin/dsd if you have already run a git pull and updated the software. An upside to this change is that other github versions of dsd can also be used and installed without clashing with this version.

The full notice on this change and additional information can be found here.

I have also reworked the install scripts slightly, offering a little more variety regarding if you are building for the first time and want to automatically build and install all dependencies(Debian/Ubuntu/Mint/Pi), whether or not you want to just clone and build DSD-FME by itself if you already have the dependencies, use another distro type and need to install dependencies in another manner, or or install if you already have the software cloned or if you need to do a git pull and update. More information can be read regarding these changes and procedures for cloning, building, and installing DSD-FME here.

Updates, Improvements, Changes

The current iteration has seen a big code clean up, removing tons of files in the project directories regarding github workflows, travis containers, test building, and other superfluous directories, slimming the project folder down a nice considerable bit. The CMakeLists.txt will now only build and install dsd-fme and not build the tests as I really don't expect any particular user would use those features. Even I don't use them in development. This speeds up build times by a nice little bit, especially on lower powered machines, Pi, and VMs with limited allocation of resources.

I've also slightly tweaked the pulseaudio output, regarding the application name itself. Prior, pulseaudio server would remember changes made to output streams, but if a user were to switch between the DMR Stereo method -T or use different decoding, it wouldn't remember the left/right channel configuration so I've exploited this by created different stream names for DMR Stereo Slot 1 and Slot 2 so pulseaudio server will remember the left channel and right channel and audio levels when switching between decoding. If audio is broken for you, go into pavucontrol and check to see if audio is still routed out properly.

Other than that, its just minor little tweaks to the back-end of the software, mostly small timing changes in the order of events for DMR Stereo specifically.

How to Install the latest version

New Users on Debian/Ubuntu/Mint/Pi can run the auto installer to install all dependencies and build and install DSD-FME for them. (Headless users should use the manual method instead as a few dependencies will vary slightly)

Code:
wget https://raw.githubusercontent.com/lwvmobile/dsd-fme/pulseaudio/download-and-install.sh
chmod +x download-and-install.sh
./download-and-install.sh

Current users who need to do a update install can simply run the rebuild.sh script inside their current dsd-fme folder. Should this method fail, then you may use the download-and-install-nodeps.sh file inside of a clean folder to do a fresh clean install instead. It is advised to run sudo make uninstall inside of your current build folder first, or to run sudo rm /usr/local/bin/dsd after installing if you find yourself accidentally using the command dsd and not dsd-fme.

Code:
wget https://raw.githubusercontent.com/lwvmobile/dsd-fme/pulseaudio/download-and-install-nodeps.sh
chmod +x download-and-install-nodeps.sh
./download-and-install-nodeps.sh

The project link:
 

scanningfan

Newbie
Joined
Sep 13, 2016
Messages
22
Just recently became aware of DSD FME. DMR sounds great but D star audio is fairly thin and not as pleasant to listen to let's say.. Is this just the way it is with D star ? Using a compiled windows version v1.6.0-285-g8019044
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
Just recently became aware of DSD FME. DMR sounds great but D star audio is fairly thin and not as pleasant to listen to let's say.. Is this just the way it is with D star ? Using a compiled windows version v1.6.0-285-g8019044

Yeah, sadly it may just be the way it is. I only have two d-star samples, but they sound fairly okay to me, even if they are in a foreign language I don't understand, but I don't have the highest standards either. If you could submit some raw wav samples I could take a listen to them and try to look into things.

Also, something about the Cygwin precompiled builds are that they are stuck at 8Khz sampling rate, so sometimes that tends to sound a bit thin or tinny. The Linux builds with Pulse Audio get a much beefier sound to them overall, so it could be because D-star AMBE isn't really well documented, and we are just using the mbelib to process the samples, or the sampling on WIndows.
 

KrisMar

Member
Joined
Feb 28, 2021
Messages
23
Today I compiled the "dsd-fme" version of "pulseaudio" for Windows using cygwin. I succeeded with the help of "Lwvmobile" and detailed step-by-step instructions. The program works great and all information is clearly displayed in two separate terminals. I recommend it for testing.
 

Attachments

  • ok.png
    ok.png
    276.5 KB · Views: 111

llamatrails

Newbie
Joined
Jul 10, 2022
Messages
4
Newbee to dsd-fme, a clean install on a RaspberryPi 4 8GB 64bit. Ran the wget install, compiled without a hickup.

Did find I have to run it as 'sudo', but that is minor to the following. pavucontrol does seem to setup correctly. Where to look now??

Code:
rick@raspi4-8b:~/sdr/dsd-fme$ sudo ./start-dsd.sh
[sudo] password for rick:
 2022 Dove Award Winner           CTRL + C twice to exit
 ██████╗  ██████╗██████╗     ███████╗███╗   ███╗███████╗
 ██╔══██╗██╔════╝██╔══██╗    ██╔════╝████╗ ████║██╔════╝
 ██║  ██║╚█████╗ ██║  ██║    █████╗  ██╔████╔██║█████╗   
 ██║  ██║ ╚═══██╗██║  ██║    ██╔══╝  ██║╚██╔╝██║██╔══╝   
 ██████╔╝██████╔╝██████╔╝    ██║     ██║ ╚═╝ ██║███████╗
 ╚═════╝ ╚═════╝ ╚═════╝     ╚═╝     ╚═╝     ╚═╝╚══════╝
https://github.com/lwvmobile/dsd-fme/tree/pulseaudio     
Digital Speech Decoder: Florida Man Edition
Github Build Version: v1.6.0-356-g10ed2ea
mbelib version 1.3.1
Setting symbol rate to 2400 / second
Decoding only NXDN 4800 baud frames.
Tuning to frequency: 155730000 Hz
Audio Out Device: pulse
Audio In Device: rtl
Press CTRL + C twice to close.
RTL Audio Rate Out set to 48000 Khz/1 Channel
Setting RTL VFO Bandwidth to 12000 Hz
Setting RTL Sample Multiplier to 4
Setting RTL Squelch Level to 70
Setting RTL Volume Multiplier to 1
Found Rafael Micro R820T tuner
Using RTLSDR Device Index: 0.
Tuner gain set to 48.00 dB.
Tuner error set to -1 ppm.
Allocating 15 zero-copy buffers
Main socket started! :-) Tuning enabled on UDP/6021
Tuned to center frequency 155982000 Hz.
Oversampling input by: 84x.
Oversampling output by: 1x.
Buffer size: 8.13ms
Exact sample rate is: 1008000.009613 Hz
Sampling at 1008000 S/s.
Output at 12000 Hz.
Press CTRL + C to close.
22:35:26 Sync: +NXDN48  DATA  - (CRC ERR)
22:35:26 Sync: +NXDN48  VOICE - RAN=50 - Part 3/4 Assertion 'p' failed at pulse/simple.c:273, function pa_simple_write(). Aborting.
./start-dsd.sh: line 8:  6519 Aborted                 /usr/local/bin/dsd-fme -fi -i rtl -c 155.73M -P -1 -D 0 -G 48 -L 70 -U 6021 -Y 12
rick@raspi4-8b:~/sdr/dsd-fme$
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
Newbee to dsd-fme, a clean install on a RaspberryPi 4 8GB 64bit. Ran the wget install, compiled without a hickup.

Did find I have to run it as 'sudo', but that is minor to the following. pavucontrol does seem to setup correctly. Where to look now??

What's the contents of your start-dsd-sh script? You don't need to run sudo to run the sofware. Not sure what's going on, but that error is usually because pulse audio output device didn't open, which I suspect may be a setting in your startup command.
 

llamatrails

Newbie
Joined
Jul 10, 2022
Messages
4
Thanks for the quick reply.

Code:
#!/usr/bin/bash

DSD_FME=/home/rick/sdr/dsd-fme
cd $DSD_FME

/usr/local/bin/dsd-fme -fi -i rtl -c 155.73M -P -1 -D 0 \
    -G 48 -L 70 -U 6021 -Y 12

Another niggle: tried to find the setting for a ncurses terminal, the -help info doesn't show the -N option. Also, the ncurses window scrambles when it enables the NCurses terminal. Again, Raspberry Pi Buster 64bit, default lxterminal window.

Screenshot from 2022-07-30 08-00-10.png

Looks super promising, just a few quirks to work out here !

TIA,
Rick
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
Code:
#!/usr/bin/bash

DSD_FME=/home/rick/sdr/dsd-fme
cd $DSD_FME

/usr/local/bin/dsd-fme -fi -i rtl -c 155.73M -P -1 -D 0 \
-G 48 -L 70 -U 6021 -Y 12

I think its safe to say this script is way over engineered, you should be able to just run that straight from the terminal without setting all those extra home variables and things like that. I'd ditch all the extra stuff at the beginning and just use this in your sh file, all my personal sh files for DSD-FME are literally just the command itself, no need to overreach on the path settings and so on.

See what happens when you paste this straight into the terminal instead.

dsd-fme -fi -i rtl -c 155.73M -P -1 -D 0 -G 36 -L 70 -U 6021 -Y 12 2> log.txt
Another niggle: tried to find the setting for a ncurses terminal, the -help info doesn't show the -N option. Also, the ncurses window scrambles when it enables the NCurses terminal. Again, Raspberry Pi Buster 64bit, default lxterminal window. I also need to update the help print. Been taking a break from the heavy coding lately, so maybe the next big push will get that added in there.

That happens because you need to route the stderr to a file or a null device, usually I recommend appending 2> log.txt
to the end of your command so it will write all the console output to a log file for you, and you can view that simultaneously using the tail command.

tail -n 40 -f log.txt

When you have that running, open up pulse audio volume control 'pavucontrol' and confirm that you have an output stream for DSD-FME. Should all look like this.


Screenshot_443.png

Screenshot_444.png

This is running on a Raspberry Pi 3b+ with Bullseye aarch64.

Screenshot_445.png
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
See what happens when you paste this straight into the terminal instead.

dsd-fme -fi -i rtl -c 155.73M -P -1 -D 0 -G 36 -L 70 -U 6021 -Y 12 2> log.txt

Need to correct myself on this one. I forgot to add -N to enable the ncurses terminal. Also, of note, I realized in your original command you had -G 48, driving the gain all the way up. If you need to do this to get a system in, then it may not do very well at all decoding. Currently in DSD-FME, with NXDN systems, due to the short framesync word, you'll need to find the fine balance of squelch and gain, about any random noise can trigger a false framesync in NXDN and dPMR systems especially.

dsd-fme -fi -i rtl -c 155.73M -P -1 -D 0 -G 36 -L 70 -U 6021 -Y 12 -N 2> log.txt
 

llamatrails

Newbie
Joined
Jul 10, 2022
Messages
4
WOW, you've done a heck of a job on this program !

I figured out about the -N, and lowered the gain to 36 per your example. It's working very well.

I see the window size needs to be taller than 80x24, bumped it up to 80x30 and get the following, but the last line is still wrapping. What is the 'optimal' window size so it doesn't wrap? Maybe an option to suppress the Build Info ? This is for NXDN48, all we seem to have up here in the North East Georgia mountains ...

Screenshot from 2022-07-30 13-24-23.png

Rick
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
WOW, you've done a heck of a job on this program !

Thank you, that means a lot to me!

I see the window size needs to be taller than 80x24, bumped it up to 80x30 and get the following, but the last line is still wrapping. What is the 'optimal' window size so it doesn't wrap? Maybe an option to suppress the Build Info ?

Glad to see you got it working well for you, and my apologies, I don't know how I missed this message and didn't see it sooner. I had considered trying to make things more compact. In the future, I may look into an option to remove the big gaudy banner and build info, and also perhaps make call history optional as well. I'm not sure the exact optimal window size, but should be 80 columns wide, and the call history at the bottom should have enough lines for 10 entries, otherwise, it'll wrap around at the bottom and go off screen.

Since you are already versed in fixing things I've modded :LOL: you can open up src/dsd_ncurses.c and comment out lines 437-450, and other sections as well if you'd like. Then, just go into the build folder and run sudo make install and viola, no more banner and build info.

Screenshot_461.png

This is for NXDN48, all we seem to have up here in the North East Georgia mountains ...

I feel your pain there brother, that's about all I have locally with a strong signal outside of NXDN, EDACS/ProVoice, and some NFM analog systems. All the hot and popular P25 and DMR is few and far in-between here in rural North Florida.
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,296
Location
Lafayette County, FL
Screenshot_464.png

Looking for any of the following:

WAV File Captures
Hytera DMR Voice Samples - Clear and any or all forms of ENC.
Hytera XPT Samples.

OP25 Symbol Bin
Any form of DMR, NXDN, or P1 with audio captured with either Boatbod or Osmocom OP25.

Any submissions can be uploaded to Ufile.io - Upload files for free & share them without registration or any host of your choosing that doesn't require registration.
 

LimaZulu

Member
Joined
Jul 7, 2011
Messages
357
View attachment 125637

Looking for any of the following:

WAV File Captures
Hytera DMR Voice Samples - Clear and any or all forms of ENC.
.......

I can help with that. Both - clear and encrypted in almost all of it's forms and can provide the key as well if needed (just let me know). Will send you a message with links provided when ready
 
Top