DSD FME

doriboni

Member
Joined
Oct 31, 2023
Messages
22
the output I have in the terminal is the screen below, no errors were listed

View attachment 155323
Decoding doesn't work, you should have the decoded frames displayed, as for example with NXDN48:

Code:
   Digital Speech Decoder: Florida Man Edition
 ██████╗  ██████╗██████╗     ███████╗███╗   ███╗███████╗
 ██╔══██╗██╔════╝██╔══██╗    ██╔════╝████╗ ████║██╔════╝
 ██║  ██║╚█████╗ ██║  ██║    █████╗  ██╔████╔██║█████╗
 ██║  ██║ ╚═══██╗██║  ██║    ██╔══╝  ██║╚██╔╝██║██╔══╝
 ██████╔╝██████╔╝██████╔╝    ██║     ██║ ╚═╝ ██║███████╗
 ╚═════╝ ╚═════╝ ╚═════╝     ╚═╝     ╚═╝     ╚═╝╚══════╝
 'Lite' Edition v2.0.0-21-gbb5da93 Windows 32-bit RC2c
Setting symbol rate to 2400 / second
Decoding only NXDN 4800 baud frames.
Logging Frame Payload to console
Enabling NCurses Terminal.
OSS Input /dev/dsp.
OSS Output /dev/dsp.
Audio In/Out Device: /dev/dsp

 Sync: NXDN48  L56 -[32m Voice [0m[36m        [0m
 SACCH SF Segment #3 [6F][90][00][28][00]
 AMBE D4C6EB1FB73100 err = [0] [2]
 AMBE 41E72F0923FF00 err = [2] [2]
 AMBE 49FD2A5C3D1A80 err = [3] [2]
 AMBE B75E302561EC00 err = [1] [2]

 Sync: NXDN48  L56 -[32m Voice [0m[36m RAN 47 [0m
 SACCH SF Segment #4 [0C][FF][68][B4][00] CRC ERR - 25 34
 AMBE 1F733A48EAD780 err = [0] [1]
 AMBE 489FDA9366E580 err = [0] [1]
 AMBE 996D84063CEF00 err = [0] [1]
 AMBE 305975B2C34A80 err = [0] [0]

 Sync: NXDN48  L56 -[32m Voice [0m[36m RAN 47 [0m
 SACCH SF Segment #2 [A9][28][10][4D][00] CRC ERR - 1E 0D
 AMBE 500E5968EE4F80 err = [0] [1]
 AMBE 2EFFF90C768780 err = [0] [0]
 AMBE D0DE914325A480 err = [0] [0]
 AMBE 67A64A9F26F000 err = [0] [0]

 Sync: NXDN48  L56 -[32m Voice [0m[36m RAN 47 [0m
 SACCH SF Segment #3 [6F][43][13][0A][00]
 AMBE F4C4EED937FF80 err = [0] [1]
 AMBE CE4BD7859CE800 err = [0] [0]
 AMBE DEABDEA0781B00 err = [0] [0]
 AMBE CA78C46D6C8080 err = [0] [0]

Try with lwvmobile informations.
When it works, you'll have frames that appear on the screen with the./dsd-fme -Z command
 

luciano_frc

Member
Premium Subscriber
Joined
Jan 15, 2024
Messages
8
I noticed that there was a change in the behavior of SDR++, now it searches for transmissions from the control channel. At times there is some noise, but the audio seems to be masticated lol But I would really like to thank you for the help, I'm learning and I'm very happy to have help. I'll leave a video below of how it turned out now




Looks like that is the control channel on 169.47 Mhz. On P25 (phase 1) the TSBK are the 'trunking signal blocks' so, you've definitely found the control channel. In order to tune those frequencies, you'll need to set up the RIGCTL module inside of SDR++ with the settings found here and have it started and in the listening status. If you don't have a RIGCTL module active, you'll need to scroll down to the bottom and select it from the drop down box and add it first.

View attachment 155324

Then, what you'll want to do is append the options -U 4532 -T to your start up command, so that is looks similar to below.

Code:
dsd-fme -ft -i tcp -U 4532 -T -N 2> log.ans

Since this is P25, you won't need to specify a channel map, as it can figure it out from the Identifier Update TSBKs and tune you to the correct frequencies based on the iden value. You could also do the same for DMR, NXDN, EDACS trunking as well, but those will most likely always need a channel map, unless they have a form of absolute channel assignment (DMR Absolute, NXDN DFA) signalling.
 

luciano_frc

Member
Premium Subscriber
Joined
Jan 15, 2024
Messages
8
Your version is for Windows Correct? I use Ubuntu 22.04 (Linux) I don't know if this command works on Linux


Decoding doesn't work, you should have the decoded frames displayed, as for example with NXDN48:

Code:
   Digital Speech Decoder: Florida Man Edition
 ██████╗  ██████╗██████╗     ███████╗███╗   ███╗███████╗
 ██╔══██╗██╔════╝██╔══██╗    ██╔════╝████╗ ████║██╔════╝
 ██║  ██║╚█████╗ ██║  ██║    █████╗  ██╔████╔██║█████╗
 ██║  ██║ ╚═══██╗██║  ██║    ██╔══╝  ██║╚██╔╝██║██╔══╝
 ██████╔╝██████╔╝██████╔╝    ██║     ██║ ╚═╝ ██║███████╗
 ╚═════╝ ╚═════╝ ╚═════╝     ╚═╝     ╚═╝     ╚═╝╚══════╝
 'Lite' Edition v2.0.0-21-gbb5da93 Windows 32-bit RC2c
Setting symbol rate to 2400 / second
Decoding only NXDN 4800 baud frames.
Logging Frame Payload to console
Enabling NCurses Terminal.
OSS Input /dev/dsp.
OSS Output /dev/dsp.
Audio In/Out Device: /dev/dsp

 Sync: NXDN48  L56 -[32m Voice [0m[36m        [0m
 SACCH SF Segment #3 [6F][90][00][28][00]
 AMBE D4C6EB1FB73100 err = [0] [2]
 AMBE 41E72F0923FF00 err = [2] [2]
 AMBE 49FD2A5C3D1A80 err = [3] [2]
 AMBE B75E302561EC00 err = [1] [2]

 Sync: NXDN48  L56 -[32m Voice [0m[36m RAN 47 [0m
 SACCH SF Segment #4 [0C][FF][68][B4][00] CRC ERR - 25 34
 AMBE 1F733A48EAD780 err = [0] [1]
 AMBE 489FDA9366E580 err = [0] [1]
 AMBE 996D84063CEF00 err = [0] [1]
 AMBE 305975B2C34A80 err = [0] [0]

 Sync: NXDN48  L56 -[32m Voice [0m[36m RAN 47 [0m
 SACCH SF Segment #2 [A9][28][10][4D][00] CRC ERR - 1E 0D
 AMBE 500E5968EE4F80 err = [0] [1]
 AMBE 2EFFF90C768780 err = [0] [0]
 AMBE D0DE914325A480 err = [0] [0]
 AMBE 67A64A9F26F000 err = [0] [0]

 Sync: NXDN48  L56 -[32m Voice [0m[36m RAN 47 [0m
 SACCH SF Segment #3 [6F][43][13][0A][00]
 AMBE F4C4EED937FF80 err = [0] [1]
 AMBE CE4BD7859CE800 err = [0] [0]
 AMBE DEABDEA0781B00 err = [0] [0]
 AMBE CA78C46D6C8080 err = [0] [0]

Try with lwvmobile informations.
When it works, you'll have frames that appear on the screen with the./dsd-fme -Z command
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,272
Location
Lafayette County, FL
but the audio seems to be masticated lol But I would really like to thank you for the help, I'm learning and I'm very happy to have help. I'll leave a video below of how it turned out now

Just from the video, I can see the first call that is tuned is DES encrypted, I would assume that is why you may hear random spurts of noise, it may attempt to decode voice on a frame before getting the encryption parameters and muting because its encrypted. You would need to continue to monitor that site to see if any clear groups or private calls exists on it. You can hit the 'e' key to enable the encrypted voice lock out and it may help by blocking repeat tuning of encrypted voice calls. If the entire system is encrypted, it may leave you with nothing to listen to. You can also make a group.csv file and block any unwanted encrypted groups if desired, that way you only tune to known clear groups. Or if you have multiple P25 sites nearby, maybe another site favors clear calls, while one is ENC'd up the A.
 

luciano_frc

Member
Premium Subscriber
Joined
Jan 15, 2024
Messages
8
Thanks a lot for the help. I managed to learn more. Before, I didn't even know what a control channel was, and I'm still learning. I'm going to focus on DMR transmissions, I also have a lot here at my location, and I'll keep reading.



Just from the video, I can see the first call that is tuned is DES encrypted, I would assume that is why you may hear random spurts of noise, it may attempt to decode voice on a frame before getting the encryption parameters and muting because its encrypted. You would need to continue to monitor that site to see if any clear groups or private calls exists on it. You can hit the 'e' key to enable the encrypted voice lock out and it may help by blocking repeat tuning of encrypted voice calls. If the entire system is encrypted, it may leave you with nothing to listen to. You can also make a group.csv file and block any unwanted encrypted groups if desired, that way you only tune to known clear groups. Or if you have multiple P25 sites nearby, maybe another site favors clear calls, while one is ENC'd up the A.
 

peluson

Member
Joined
May 20, 2019
Messages
26
Hi, I would like to know how to extract the vocoder test pattern from the NXDN.
Is it possible to extract it with a specific command with the FME ?
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,272
Location
Lafayette County, FL
I meant that if these plots are frames out by the FME

I'm not quite sure I understand the behavior you are seeking from FME? Do you want it to report the payload on all AMBE frames for personal analysis, or do you want it to tell you when that exact frame F801A99F8CE080 occurs, or do you want it to tell you when any AMBE frame that is classed as a 'Silent Frame' occurs?

If the answer is one of the latter, then FME doesn't have that functionality exposed to the user. mbelib can be configured to dump a complete debug set, or you can comment out a few #ifdef statements, and have it tell you exactly when an AMBE frame is silent, or you could write a snippet of code to analyze the 49-bit output from ambe_d and determine when a frame is 'silent' and do whatever you want it to do at that point, or you could run a tail/grep and pull it every time that frame occurs, which, outside of context of the rest of the logged payload, really doesn't help you any.


Screenshot from 2024-01-24 11-54-53.png

Another thing to consider is, that while many radios do employ the use of silent frame at the beginning and/or end of tx, there is NO GUARANTEE that it will be there, I've seen that sort of thing fluctuate wildly based on system type, radio type, vendor, user configuration, etc.
 

Louie7

Member
Joined
Dec 4, 2023
Messages
26
No, you'll have to use SDR# to play those back and pass the audio into DSD-FME.
But the problem is that when i use audio, it creates errors in the frames. And can raw recordings made with DSDplus be played back by DSD-FME?
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,272
Location
Lafayette County, FL
But the problem is that when i use audio, it creates errors in the frames. And can raw recordings made with DSDplus be played back by DSD-FME?

Sounds like you either need to make sure any VBCable usage is setup properly, or use the TCP audio server plugin for SDR#. You may also need to make sure to disable any sort of audio filtering in SDR# like high pass filters, and so on. If possible, for a live system, I'd recommend using SDR++ over SDR# if all possible due to its built in and easy to use and very stable Network Audio and RIGCTL modules, easy to find and disable audio processing check boxes, and squelch slider/box for NXDN/dPMR/EDACS analog. For Radio, I'd set a default BW to 12,000 as a safe value and adjust later if signal is weaker, and use moderate gain and adjust your noise floor approprately, etc. Low Pass Filter helps with P25 often times, but not really needed otherwise.

Code:
dsd-fme -ft -i tcp

or

dsd-fme -ft -i tcp:192.168.7.5:7355

DSD-FME will decode raw audio wav files from DSDPlus (not the baseband files), but depending on system type, results may vary. Its usually perfectly fine for DMR and P25, but dPMR and NXDN raw wav files from DSDPlus don't quite work so well in most circumstances. Most time, its fine enough, but it will attempt to sync on the noise on the wav file if no signal is present on NXDN.

For DSDPlus wav files, just run this, or similar, using the proper -f switch for system type:

Diff:
dsd-fme -ft -i dsdplus_wav_file.wav -s 96000

Full input and output usage:

Code:
Input/Output options:
  -i <device>   Audio input device (default is pulse)
 
      /dev/dsp for OSS audio (Depreciated: Will require padsp wrapper in Linux)
      rtl for rtl dongle (Default Values -- see below)
      rtl:dev:freq:gain:ppm:bw:sq:udp for rtl dongle (see below)
      tcp for tcp client SDR++/GNURadio Companion/Other (Port 7355)
      tcp:192.168.7.5:7355 for custom address and port
      filename.bin for OP25/FME capture bin files
      filename.wav for 48K/1 wav files (SDR++, GQRX)
      filename.wav -s 96000 for 96K/1 wav files (DSDPlus)
      (Use single quotes '/directory/audio file.wav' when directories/spaces are present)

  -s <rate>     Sample Rate of wav input files (48000 or 96000) Mono only!
  -o <device>   Audio output device (default is pulse)
                        /dev/dsp for OSS audio (Depreciated: Will require padsp wrapper in Linux)
                        null for no audio output
                        udp for UDP socket blaster output (default host 127.0.0.1; default port 23456)
                        udp:192.168.7.8:23470 for UDP socket blaster output (Target Address and Port
     
Trunking Example TCP: dsd-fme -fs -i tcp -U 4532 -T -C dmr_t3_chan.csv -G group.csv -N 2> log.ans
Trunking Example RTL: dsd-fme -fs -i rtl:0:450M:26:-2:8 -T -C connect_plus_chan.csv -G group.csv -N 2> log.ans

Full usage can be found by running dsd-fme -h and you can see a lot of example usage here.
 

Louie7

Member
Joined
Dec 4, 2023
Messages
26
thanks for the infos. I always left all the SDR# settings as default and only varied the volume. The TCP option is interesting, does it transmit the data without any audio modification or do you still have to disable the filters?
 

Louie7

Member
Joined
Dec 4, 2023
Messages
26
I've seen that sort of thing fluctuate wildly based on system type, radio type, vendor, user configuration, etc.
I'm guessing people sent you a lot of high-quality audio samples for you to create dsd-fme? (dmr, nxdn,p25...) What do you think about putting these samples in a Google drive and putting the link out on your GitHub for people to practice and learn DSD-FME? All the samples that can be found on the net are too short or not of good quality (MP3 compression, Ogg compression...)
 

mtindor

OH/WV DB Admin
Database Admin
Joined
Dec 5, 2006
Messages
10,408
Location
Carroll Co OH / EN90LN
thanks for the infos. I always left all the SDR# settings as default and only varied the volume. The TCP option is interesting, does it transmit the data without any audio modification or do you still have to disable the filters?
Why not try it and find out for yourself? You are asking the author of DSD-FME to school you on SDR# or SDR++. If you really need to know and don't want to simply test it yourself, shouldn't you be asking the authors of those applications?
 

Louie7

Member
Joined
Dec 4, 2023
Messages
26
Why not try it and find out for yourself? You are asking the author of DSD-FME to school you on SDR# or SDR++. If you really need to know and don't want to simply test it yourself, shouldn't you be asking the authors of those applications?
I've done a lot of tests but I have a lot of mistakes on the reception and it's frustrating. The DSD-FME author must have plenty of samples. If it's legal (no decryption), raw samples, it would help a lot people to have high-quality samples available to do the tests with the software.

I guess it would be of interest to a lot of other people as well.

I say this because in this thread I've seen a lot of people send him samples over the years so he can create DSD-FME. I'm talking about the high-quality samples he's received from other people over the years.
 

Louie7

Member
Joined
Dec 4, 2023
Messages
26
Anyone know why I have so many errors?
Yet the signal seems very good and strong
I also don't see how to turn off filters, I can't choose "no filters"
 

Attachments

  • pic1.png
    pic1.png
    26 KB · Views: 30
  • pic2.png
    pic2.png
    146.9 KB · Views: 28
  • pic3.png
    pic3.png
    12.5 KB · Views: 30

mtindor

OH/WV DB Admin
Database Admin
Joined
Dec 5, 2006
Messages
10,408
Location
Carroll Co OH / EN90LN
Anyone know why I have so many errors?
Yet the signal seems very good and strong
I also don't see how to turn off filters, I can't choose "no filters"
No idea about SDR++. But in SDR# there is an area in the Audio section where you see "Filter Audio" and it is checked by default. And that MUST be unchecked in order for you to be able to decode most digital stuff found on VHF+

And you don't need a bandwidth greater than 12500 for NXDN48 / NXDN96 / DMR / P25, and usually don't need more than 9500, and even less for DMR and NXDN48
 

Attachments

  • sample1.png
    sample1.png
    23.3 KB · Views: 6
Last edited:
Top