DSD FME

gary123

Member
Joined
Sep 11, 2002
Messages
2,427
I need a little help from the dsd-fme experts here. I am attempting to get dsd-fme running on this system (PRSN Ontario Canada).


It is a P25P2 system. What I want to do is log the Voice channel data only. I do not care about decoding the voice nor following a specific TG.

My set up is a airspy R2. Using SDR++ v1.2.0 and the current dsd-fme build 20240722-262. I have everything functioning however its not configured the way I would like it to be. The current switch string is

dsd-fme.exe -i tcp:127.0.0.1:7355 -U 4532 -T -o null -Z 2> log.ans

What I do not mind if I must use voice following and sit on the control channel. I do want to log the data with as much detail as possible. Any help would be appreciated.
 

ki4hyf

Member
Premium Subscriber
Joined
Mar 2, 2005
Messages
192
Location
Jackson, TN
It is a P25P2 system. What I want to do is log the Voice channel data only.
In order to trunk track, you need to add a control channel config file. Like -C ctrl_ch.csv. If you just want voice data, then like MTL_Emergencies said, you can scan just the voice channels, but since it's Phase 2, you'll have to add the -X parameter, the -C channel scan list and the -Y scan parameter. Something like:
dsd-fme.exe -f2 -X BEE00[sysid][nac] -i tcp:127.0.0.1:7355 -U 4532 -Y -C ch_scan_list.csv -o null -Z 2> log.ans
 

gary123

Member
Joined
Sep 11, 2002
Messages
2,427
Thanks guys. I really just need to sit on a voice channel and log everything. I have tried it using the string I posted but the log looks very uninformative.

6:30:37 Sync: +YSF [31mFICH (CRC ERR) [0m FICH: [E5][17][A3][FF]
[31mDCH (CRC ERR) [0m
DCH1: [E1][28][A3][C4][55][5D][EF][AF][10][9E][47][D8][3A][34][0E][C4][F1][BD][3A][84][A0][7D][31mDCH (CRC ERR) [0m
DCH1: [BB][28][AE][DE][63][D0][93][2F][10][22][33][87][F6][8C][D2][71][12][E1][83][27][FF][FD][0m

basing my new string off ki4hyf and MTLs suggestion for the -Z switch. I am now getting this

6:52:57 P25p2 LCH 1 MAC_PTT [32m
VCH 1 - TG 19018 SRC 730749 [33m
ALG ID 0x84 KEY ID 0x0708 MI 0x66C76A331EEF65CD MPTT
MAC_PTT_PAYLOAD_F OFFSET: 0 RES: 0
[20][66][C7][6A][33][1E][EF][65][CD][00][84][00]
[22][0B][26][7D][4A][5B][20][70][00][00][00][00][0m
16:52:57 P25p2 LCH 0 MAC_IDLE [33m[0m
16:52:57 P25p2 LCH 1 4V 1
AMBE 2BA541AA76DC00 err = [0] [0]
AMBE BED2A7D9C34000 err = [0] [1]
AMBE 28DEB313F46B80 err = [0] [1]
AMBE 3C73066FED5580 err = [0] [0]

The string I am using is this

dsd-fme.exe -f2 -X BEE00AD9AD3 -i tcp:127.0.0.1:7355 -U 4532 -Y -o null -Z 2> log.ans

This is what I was hoping to get. Thanks
 

AngWay

Newbie
Premium Subscriber
Joined
Sep 19, 2020
Messages
361
Location
Buchanan, Va
Thought I'd just take a moment to share a project I've begun working on lately. If anybody wanted to give it a try out and see how it works, I'd love to hear any feedback, critique, constructive criticism, ideas, etc.

View attachment 116276

This version of DSD is a flavor blend of szechyjs RTL branch and some of my own additions, along with a few tweaks from the LouisErigHerve branch as well. NXDN voice decoding is currently working a lot better, thanks to the latter, although I have yet to explore the expanded NXDN or DMR decoding he has laid out. That is a goal. I have also implemented a few more RTL options, including rtl device gain, PPM error, device index selection, squelch, VFO bandwidth, and a UDP remote that works like the old rtl_udp fork, although its currently limited to changing frequency and squelch. The goal is to integrate this project into EDACS-FM but I also want it to be its own standalone project.

Code:
padsp -m dsdfme -- ./dsd -fi -i rtl -o /dev/dsp -c 154.9875M -P -2 -D 1 -G 36 -L 25 -V 2 -U 6020 -Y 8

-i rtl to use rtl_fm

-c Set frequency

-P set PPM error

-D set device index number

-G set device gain (0-49) (default = 0 Auto Gain)

-L set rtl squelch to 25

-V set RTL sample 'volume' multiplier

-U set UDP port for rtl_fm remote control

-Y 8 set rtl VFO bandwidth in kHz, (default = 48)(6, 8, 12, 16, 24, 48)

-W Monitor Source Audio (WIP!) (may or may not decode audio if this is on, depending on selected decode type and luck)
(Also, should be noted that depending on modulation, may sound extremely terrible)

The github with more info and a bit of a project road map can be found at:

Build instructions is the same as the others, but I wouldn't recommend doing the 'make install' portion, and just run it from the build folder, especially if you already have a main version installed as well.
can sdrplay be used with it?
 

EI9BAB

Member
Joined
Sep 3, 2021
Messages
53
I am looking at using DSD-FME with rigctl but with non-standard hardware. I suppose the question I have applies to a number of use cases (e.g. just feeding audio in without rigctl). I have previously used DSD-FME with SDR++ so I understand how one port is used to send the commands and the other port is used to receive the audio, using the -i tcp:x.x.x.x. and/or -U switches.

However, in additon to dongles, I also have a PRO2006 with an Optoscan board that I want to add a discriminator tap to. I plan to link into this over TCP and I'm sure I'll work out how to set up something to send commands over the CI-V interface (or via the RS232 port worst case). My main query is the best way to get the audio back over TCP.

A previous option might have been to use a data slicer or something but that seems to be an older approach and I probably won't be directly connecting to the radio (although that it might be no harm to have that option also) but I probably don't want to rule that out.
I presume I can use a Pi board or something to take the audio input from an audio jack or usb audio input and use Pulseaudio or some other sound server to send it over TCP. However, I'm not sure if the audio needs to be sent in any specific format to be received by DSD-FME or if it is just that straightforward. I already use a Raspberry Pi 5 with RTL dongles but this is obviously a different use case and I am considering embedding something inside the radio and installing an ethernet port in the scanner to feed the audio back (and ideally maybe also control the rig if I work that out too).

My main concern is that when taking audio in from FMP or DSD+ I have noticed that I need to have a really tight bandwidth (7.6 khz) for optimum reception. I'm worried that the default 25khz bandwidth for the scanner will be far too wide for DMR. But I have seen demos of people using it for P25 so presumably it can be made to work somehow.
Secondly, I do get a bit of local electrical interference but even without that I do find that there is a massive difference for me if I use the Noise Filter option in FMP(24/FMPA) - specifically NF2. I'm not sure if this is doing noise blanking or just applies some form of Equalisation to the audio - any ideas? Possibly there is something that I can do hardware-wise or in software (if I need/use a Pi) to clean up the audio further before I send the audio in order to optimise the input for DSD-FME.

I suppose I can just start my experiments by plugging the discriminator audio directly into the PC first and see how I get on.
However, I did have some worrying issues previously with taking IF audio from my TRX-1E directly into the PC as I started getting some flickering on the scanner screen when the audio was playing and shortly after my laptop SSD died. That might have all been a coincidence but I'm not keen to repeat the experience! However, if I do try again, I will probably use a Ground Loop Isolator to be on the safe side.

I'd be happier with sticking to dongles for their flexibility but they are so wideband that they overload easily and they are naturally a lot less sensitive than a proper dedicated tuned UHF receiver. I use RTL-SDR V4s, along with Airspy dongles and an SDRPlay RSP1a. There are many weak stations that I can barely receive using these with, even with all the parameters optimised. However, the same stations come in crystal clear when programmed into one of my DMR handhelds. So for those weaker signals I'd really like to take the audio from a radio/scanner and use that for decoding in order to improve my reception.

Maybe the best option is another dedicated receiver/transceiver that provides this functionality out of the box but if I could get this to work with the equipment that I have then that would be great too.

Any suggestions or feedback welcome.
 

Ubbe

Member
Joined
Sep 8, 2006
Messages
9,514
Location
Stockholm, Sweden
Any suggestions or feedback welcome.
I would use raw audio from discriminator taps and not bother with the extra step to send it over TCP/UDP.

That SSD drive are connected to an internal electronic interface that has nothing to do with the audio port or any grounding issue, it's just a fluke that it failed. If you have another big disk 2TB-4TB for storing files and install programs that are not speed sensitive then you can make a partition copy of your OS install and make a partition on the store drive that will work just as well to run windows, but a bit slower of course.

Then get a new SSD when the original fails and copy the partition back. I have one SSD with Win7 and another SSD with Win10 and have backups on a 6TB drive and have a boot selection to start on any of those partitions. Never buy any drives that use SMR technology that writes one track upon another track to increase storage space as they have a high failure rate.

A Pro-2006 have a bad sensitivity at something like 0,6uV and don't have a IF filter to handle NFM 12,5Khz channels. A TRX scanner has a perfect audio signal from its IF audio output but sensitivity are not great. Unidens scanners have great sensitivity at something like 0,35uV and a DMR radio has the same or even better. But what matters are how much strong signal issues you have that could desense a receiver. The Pro2006 doesn't desense at all so might receive the signal best of your receivers. Also a DMR radio like TYT MD380 doesn't desense so are probably the best of all, but are more difficult to take out a discriminator signal. I haven't seen any schematics for it but is the most sensitive receiver I have so would like to make that modification myself.

/Ubbe
 

AngWay

Newbie
Premium Subscriber
Joined
Sep 19, 2020
Messages
361
Location
Buchanan, Va
Not quite sure what kind of problems you've had with SDR++. If its an issue with linking up or using rigctl, just make sure that both are started up and listening, and with audio, that its set to TCP output and not UDP output. The appropriate settings are in the image below.

View attachment 133386

Alternatively, if you do want to use GQRX, I wouldn't advise using the UDP audio connection, I made some attempts to make it work with DSD-FME, but I couldn't ever get frame sync out of it, despite being able to read the UDP samples just fine, so had some issues with that, but to be honest, you can just as easily use the virtual sink and have DSD-FME listen to that and then use the same RIGCTL method to control it, just make sure to hit the PC Network looking icon towards the top to turn on the 'Remote Control' for GWRX (rigctl) and then specify the port it wants, which I think is 7356 if memory serves. Here is a video or two of me demonstrating its use on GQRX, I made these along with the other ones I posted, I just forgot I post them.






Yeah, it does that sometimes if there is no audio to listen to, not sure why, but the easy workaround for this is to open the 'pulse audio volume control' software, and just leave it open in the background. It usually happens to me in a Mint VM as well. I have no idea why opening volume control fixes it, but it does, thinking its something to do with the pulse server.

EDIT: I DO know why the menu is sluggish, I forgot, its because I close the pulse audio input and output instances when opening the menu to prevent a buffer overflow, so opening the pulse audio volume control is a quick work around to prevent the menu from being sluggish. It always responds, but it can take it a few seconds sometimes, and just leaving that open in the background keeps an application open on it and makes it disconnect and reconnect to pulse much faster, and I don't know why THAT behavior exists with pulse, but it does.
is these videos uploaded anywhere else? they are no longer here
 

jj1978

Newbie
Joined
Sep 5, 2024
Messages
1
Hi group, need a bit of help/advice.

I'm attempting to decode NXDN48 via a few Kenwood NX300 devices.

I have an RDS dongle (both RTL-SDR v4 and also a Nooelec), and what I'd like to do is send the decoded data to UDP in order for further processing by my customer (this is all above board and legal in my jurisdiction and their industry and they own their frequency).

I've validated through GNU radio that frequency is all good.

When using dsd-fme I just can't seem to get anything coming through.

For example I execute;

dsd-fme -fi -i rtl:0:<freq>M:20:1:48:70:2 -o udp:localhost:7355

Have tried various bandwidths, squelch etc but nothing appears to be coming through. Any help or guidance would be much appreciated. I've had no issues doing what needs to be done over CB radios over UHF, just having issues with these particular NXDN devices.
 

ki4hyf

Member
Premium Subscriber
Joined
Mar 2, 2005
Messages
192
Location
Jackson, TN
Well, I would start with getting it to work locally before trying to blast UDP packets. There are a few things that I would change on your command line. Try using 0 for automatic gain. This doesn't always work well for marginal signals, especially NXDN, but it's a good place to start. The PPM is very important, especially for NXDN, don't guess at this. Your bandwidth is way too high for NXDN, I would try 6 or 4. Using a program like SDR++ or SDR# will help visualize bandwidth and PPM choices.

BTW, it's been my experience that SDR++ or SDR# does a better job of preprocessing input than RTL software, so if you can, use one or the other.

Try the new command line below to see if you can get audio locally:

Old: dsd-fme -fi -i rtl:0:<freq>M:20:1:48:70:2 -o udp:localhost:7355
New: dsd-fme -fi -i rtl:0:<freq>M:0:-2:6:70 -N 2> log.ans

If that works, then you could try troubleshooting UDP.
 

racingfan360

Member
Joined
Dec 19, 2005
Messages
1,167
Hi all, Iooking for some help please...a slightly odd request/task. I'm trying to find a way to run dsd-fme for a short period of time to sample what's on a defined frequency, write this to a logfile, close down dsd-fme. It will then repeat this sampling on a new frequency with different parameters, but also append the details to the same log file. I think the bat file should look a bit like this but directing any output to a logfile is giving me a problem. Can anyone help me out? TIA

cd dsd-fme
start dsd-fme.exe -ft -i rtl:0:450.0M:0:0:12:0 -o pulse -fn -Z -P 2>> log.ans
timeout /T 30
taskkill /im dsd-fme.exe

start dsd-fme.exe -ft -i rtl:0:451.0M:0:0:12:0 -o pulse -fn -Z -P 2>> log.ans
timeout /T 30
taskkill /im dsd-fme.exe

start dsd-fme.exe -ft -i rtl:0:452.0M:0:0:12:0 -o pulse -fn -Z -P 2>> log.ans
timeout /T 30
taskkill /im dsd-fme.exe
 

ki4hyf

Member
Premium Subscriber
Joined
Mar 2, 2005
Messages
192
Location
Jackson, TN
You've got a lot going on. It's been decades since I've done any batch file scripting, so I'll have to defer to someone more knowledgeable than me. However, I can help with your command line, because it has a few problems, like -ft and -fn are not compatible.

I'm assuming you want to listen to NXDN96, so it's usually best to add squelch to help prevent false signals. I believe pulse is the default output and Per Call can only be used in Ncurses Terminal (unless you're wanting static wav files), and I have better luck decoding NXDN96 with a bandwidth of 6, so a command line like dsd-fme.exe -fn -i rtl:0:451.0M:0:0:6:100 -Z 2>> log.ans may work better.

I'm reading a lot between the lines, but if you're wanting to cycle through NXDN scramble codes, there is a much easier, faster and efficient way, but it's probably not appropriate to discuss here. If that wasn't your intent, then I apologize. Just for the record, and for what it's worth, I don't know anything about cracking encryption schemes.
 

sq3dho

Newbie
Joined
Nov 29, 2012
Messages
3
Location
Poznan
Hi Team,
Big thanx to Author for this project.
Is there a way to save received DMR streams as binary output without or with recompiling Windows binary?
 

EI9BAB

Member
Joined
Sep 3, 2021
Messages
53
Is there a way to save received DMR streams as binary output without or with recompiling Windows binary?
I'm not sure exactly what you mean by binary output but when using the NCurses option then these keyboard shortcuts apply:-
R - start capturing symbol capture bin (date/time name file)
r - stop capturing symbol capture bin
Regardless of NCurses or not, these optional command line switches also apply:-
-d <dir> create AMBE files
-6 <file> raw audio output file
-c <file> capture output symbol to .bin file
and there may be other options available to you, depending on your version.

Checkout the usage examples here - dsd-fme/examples/Example_Usage.md at audio_work · lwvmobile/dsd-fme
and read the help with "dsd-fme --help" for more information.

Also, if you are not just using the rtl: options then depending on your audio source (e.g. piping from SDR++ or DSDPlus) there may be options in those utilities to alternatively capture the raw audio input.

On the other hand, possibly you are referring to the MBE/PDU payloads and these can be produced with the -Z flag and stored to a file with "2> " option - e.g. "dsd-fme -Z 2> log.txt"

I hope one of those answers your question!
 

sq3dho

Newbie
Joined
Nov 29, 2012
Messages
3
Location
Poznan
I'm not sure exactly what you mean by binary output but when using the NCurses option then these keyboard shortcuts apply:-
R - start capturing symbol capture bin (date/time name file)
r - stop capturing symbol capture bin
Regardless of NCurses or not, these optional command line switches also apply:-
-d <dir> create AMBE files
-6 <file> raw audio output file
-c <file> capture output symbol to .bin file
and there may be other options available to you, depending on your version.

Checkout the usage examples here - dsd-fme/examples/Example_Usage.md at audio_work · lwvmobile/dsd-fme
and read the help with "dsd-fme --help" for more information.

Also, if you are not just using the rtl: options then depending on your audio source (e.g. piping from SDR++ or DSDPlus) there may be options in those utilities to alternatively capture the raw audio input.

On the other hand, possibly you are referring to the MBE/PDU payloads and these can be produced with the -Z flag and stored to a file with "2> " option - e.g. "dsd-fme -Z 2> log.txt"

I hope one of those answers your question!
Thanx a lot for all explanations. This is what im looking for. Binary i mean 0101 but i think this will be stored in symbol.bin file with -c command. 73s!
 
Top