DSD FME

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
You should be able to use a csv file with the key or keys you want to use loaded by either Key ID, or DestinationID for NXDN by using the -k key.csv option at start up. Note, that's a lower case key to import keys in decimal format, and capital K to load them if they are hex keys.

Format of your key.csv file will be like this:

Code:
key(dec) or tg(dec), value(dec)
1,12345
2,32700
63,32767

I wouldn't fool with using a fancy spreadsheet application to make a csv file, notepad, notepad++, nano, or any simple text editor should do the trick.
 

merlin

Active Member
Joined
Jul 3, 2003
Messages
3,177
Location
DN32su
DSD+ FL just doesn't decode Nexedge audio very well at all. Recording, I wash it through processing (like photoshop for images)
(Cool Edit Pro for audio files)
and never got intelligable content.
I just got my hands on a Nexege radio with hopes I can monitor a couple sites. Some of it is RAS if I can figure out the key.
 
Last edited:

LimaZulu

Member
Joined
Jul 7, 2011
Messages
375
I am almost on the same boat as you:
- I also monitor NXDN system;
- Also have issues monitoring it with DSD+ FL.
A few things to mention here. First you said RAS and "sites". RAS (radio access system if I am not mistaken) is actually used on DMR networks. On NXDN is called RAN (radio access number). RAN is not a secret and is easily obtained but that alone, unfortunately won't give you access to the system. RAN is a equivalent of predefined analog tones but digital.
Second - "sites" you said, makes me think you are trying to monitor trunked system, which is only doable with software or hardware scanner capable of trunk tracking. You cannot program nx-series radio to follow trunk unless you are the admin of the network or he/she agrees to include your radio to that particular network. Just forget about it. It's not possible. You can't put trunked channels as conventional as well. Well you actually can but when the radio senses this is trunked traffic it mutes itself. The only way to cure that is to modify the firmware. I can only say, "Goodluck with that!". Forget about it as well :)
So either you use hardware scanner with NXDN trunk tracking capabilities or you youse DSD-FME or DSDPlus.
Judging by other posts you made on other threads, I think you need to tell us more about the networks you are trying to monitor so we can be more accurate when helping you. :)
 

doriboni

Member
Joined
Oct 31, 2023
Messages
36
I'm assuming you're looking to display the contents of a full superframe in hexa? if that's the case, you could try LEH's DSD with the -DPMRPrintVoiceFrameHex command, which does just that.
I could be wrong but I don't think DSD-FME does?

Thank you, that's exactly what I was looking for. Unfortunately after many trials, I see that DSD LHE is not reliable because it uses sound.

DSD-FME is much more reliable because you can use direct access with RTL-SDR without using sound.

@lwvmobile, would you be able to integrate the -DPMRPrintVoiceFrameHex command into DSD-FME?
 

doriboni

Member
Joined
Oct 31, 2023
Messages
36
but if its another algorithm, such as AES-256, then a larger MI (128-bit) is required, but regardless, either or can be generated from the 32-bit MI using the correct LFSR taps and number of cycles to expand from 32 to the next set of 32, or from 32 to 128 bit as an OFB first round input.
would you have the detail to explain how to extend the 32-bit MI to 128-bit MI for AES-OFB?
 

doriboni

Member
Joined
Oct 31, 2023
Messages
36
Thank you very much.

For the sake of detail, I note that "bit" produces 1 bit each time, so in the end we will have 96 bits.
Is 128-bit IM created by 32-bit IM and 96-bit concatenation?

Set lfsr to the first 32 bits of the mi, and then run this 96 times (for DMR)

Code:
//32,22,2,1
bit = ( (lfsr >> 31) ^ (lfsr >> 21) ^ (lfsr >> 1) ^ (lfsr >> 0) ) & 0x1;
lfsr = (lfsr << 1) | bit;
 

doriboni

Member
Joined
Oct 31, 2023
Messages
36
If you start with 32 bits, and run an LFSR to expand it 96 times, how many bits do you end up with?
You answer my question with another question.
Since the question and answer game can go on forever, i'll take an example so that you understand what I'm asking:

If the initial 32-bit MI is A0B0C0D0 and the 96-bit LFSR output is 102030405060708090111213 (it's not the real output, just an example).

Is the 128-bit MI for AES-OFB :
A0B0C0D0102030405060708090111213 ?
or
102030405060708090111213A0B0C0D0?
 

Digonding

Member
Joined
Jan 4, 2024
Messages
9
Hi @lwvmobile, when I use dsd-fme to capture DMR frames, there is after the AMBE frame [ 0 ] [ 0 ] if there is no reception error.

If, on the other hand, there are reception errors, i can see [ 1 ] [ 2 ] or [ 1 ] [ 3 ], that kind of thing...

Where can I find the meaning of the numbers to find out which error it is?
 

Digonding

Member
Joined
Jan 4, 2024
Messages
9
Those are the number of bit errors found in c0 and c1 vectors for AMBE. c0 is uses Golay 24,12, and c1 uses Golay 23,12 for FEC.
Thanks for the explanation. Are they erroneous bits that are corrected by the Golay or erroneous bits that could not be corrected by the Golay.
Can we tell the difference between the two? Bits corrected and bits that could not be corrected?
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
Its supposed to be corrected bits, and usually that is the case, but if the signal is completely trash, or for whatever reason, like during a TXI event and the VC6 (F) voice burst is empty, then it may report a value like [3][2], but there isn't anything there to correct, or the demodulated dibits are so bad off that no amount of Golay can fix it. I may be wrong, but I seem to recall that Golay on AMBE can correct about 2 bits reliably, up to 3 on c0, if the 24th parity bit is wrong, and I think just 2 tops on c1. There is also the possibility that it attempts to correct the bits, but doesn't do so correctly but only reports a low value like [0][1].
 

Digonding

Member
Joined
Jan 4, 2024
Messages
9
thanks @lwvmobile.
I have another question, when I make an RTL-SDR capture with DSD-FME and the -6 option to save to a raw.wav file, the capture on the screen is perfect: no error but when I replay the raw.wav file afterwards I have a lot of decoding errors, why?
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
What kind of system is it and how are you playing back the .wav files? You should just be able to do so directly at the command line using this to playback any .wav files captured by DSD-FME.

Code:
dsd-fme -i raw.wav

setting up any other parameters you need for decoding as well. If you are trying to playback the .wav file with a media player, you need to make sure you have your virtual sink or virtual cable setup managed properly, and that you also aren't feeding another audio source into it at the same time (aka playing back the wav file into an audio sink that the sdr is also currently playing into).
 

Digonding

Member
Joined
Jan 4, 2024
Messages
9
What kind of system is it and how are you playing back the .wav files? You should just be able to do so directly at the command line using this to playback any .wav files captured by DSD-FME.

Code:
dsd-fme -i raw.wav

setting up any other parameters you need for decoding as well. If you are trying to playback the .wav file with a media player, you need to make sure you have your virtual sink or virtual cable setup managed properly, and that you also aren't feeding another audio source into it at the same time (aka playing back the wav file into an audio sink that the sdr is also currently playing into).
i tried with a media player and with -i option.
i'm attaching an example.
On the screen no error :

Code:
 Sync: +DMR MS/DM MODE/MONO | VC*
 AMBE EA3C3A0E179A80 err = [0] [0]
 AMBE D824F31FA62A80 err = [0] [0]
 AMBE D8036CE8807D80 err = [0] [0]
 AMBE F82271116C6E80 err = [0] [0]
 AMBE F82271914C6C80 err = [0] [0]
 AMBE F825F19144F480 err = [0] [0]
 AMBE F82321C144EC80 err = [0] [0]
 AMBE F825F19D44E880 err = [0] [0]
 AMBE F823211144EE80 err = [0] [0]
 AMBE F823B10144E680 err = [0] [0]
 AMBE F81321014C6680 err = [0] [0]
 AMBE F819A1814C5480 err = [0] [0]
 AMBE F813B1014CC480 err = [0] [0]
 AMBE F813B1814CE480 err = [0] [0]
 AMBE F813B11D4CE880 err = [0] [0]
 AMBE F813B1114CEC80 err = [0] [0]
 AMBE F813B11144EC80 err = [0] [0]
 AMBE F813211164EC80 err = [0] [0]

 AMBE F813211144EC80 err = [0] [0]
 AMBE F819A11064FC80 err = [0] [0]
 AMBE F813211064EC80 err = [0] [0]
 AMBE F815F10144E480 err = [0] [0]
 AMBE F815F11144EC80 err = [0] [0]
 AMBE F813B1114CEC80 err = [0] [0]
 AMBE F815F1114CEC80 err = [0] [0]
 AMBE F813B1914CEC80 err = [0] [0]
 AMBE F813B1914CF480 err = [0] [0]
 AMBE F813B1914CEC80 err = [0] [0]
 AMBE F81321114CEC80 err = [0] [0]
 AMBE F81321114CEC80 err = [0] [0]
 AMBE CAEA134F604180 err = [0] [0]
 AMBE 0C0F2203B10C80 err = [0] [0]
 AMBE F811A421841780 err = [0] [0]
 AMBE F811A451843F00 err = [0] [0]
 AMBE F811A451843F00 err = [0] [0]
 AMBE F811A050447D00 err = [0] [0]

 AMBE F811A430445D80 err = [0] [0]
 AMBE F8136020446580 err = [0] [0]
 AMBE F8136030446D80 err = [0] [0]
 AMBE F813652044B500 err = [0] [0]
 AMBE F8136520447D00 err = [0] [0]
 AMBE F813653044AD00 err = [0] [0]
 AMBE F8136020446580 err = [0] [0]
 AMBE F81361CD846B80 err = [0] [0]
 AMBE F81360CD846B80 err = [0] [0]
 AMBE F813655184AF80 err = [0] [0]
 AMBE F81361C1846D80 err = [0] [0]
 AMBE F81360C1846D80 err = [0] [0]
 AMBE F81360C1846F80 err = [0] [0]
 AMBE F8136421842780 err = [0] [0]
 AMBE F8136420442580 err = [0] [0]
 AMBE F8136430442D80 err = [0] [0]
 AMBE F80365204CB580 err = [0] [0]
 AMBE F8136021847580 err = [0] [0]

 AMBE F811A051847D80 err = [0] [0]
 AMBE F801A5518CBF80 err = [0] [0]
 AMBE F811A55184BD80 err = [0] [0]
 AMBE F811A151847F80 err = [0] [0]
 AMBE F80365318CBD80 err = [0] [0]
 AMBE F811A54184B780 err = [0] [0]
 AMBE F811A12184FD80 err = [0] [0]
 AMBE F811A131847F80 err = [0] [0]
 AMBE F811A121847780 err = [0] [0]
 AMBE F811A52184B700 err = [0] [0]
 AMBE F811A421845500 err = [0] [0]
 AMBE F811A431845D00 err = [0] [0]
 AMBE F811A431845D80 err = [0] [0]
 AMBE F811A151847D80 err = [0] [0]
 AMBE F811A151847D80 err = [0] [0]
 AMBE F8136021846780 err = [0] [0]
 AMBE F8136050446D80 err = [0] [0]
 AMBE F8136020447580 err = [0] [0]

 AMBE F8136090447580 err = [0] [0]
 AMBE F81360C1847F80 err = [0] [0]
 AMBE F8136491844780 err = [0] [0]
 AMBE F81365CD84AF80 err = [0] [0]
 AMBE F81364CD845B80 err = [0] [0]
 AMBE F8136051847D80 err = [0] [0]
 AMBE F811A0C0447D80 err = [0] [0]
 AMBE F811A451841D80 err = [0] [0]
 AMBE F811A421841580 err = [0] [0]
 AMBE F8136420443580 err = [0] [0]
 AMBE F8136020447580 err = [0] [0]
 AMBE F8136021847580 err = [0] [0]
 AMBE F8136031847F80 err = [0] [0]
 AMBE F8136031847F80 err = [0] [0]
 AMBE F8136051847F80 err = [0] [0]
 AMBE F8136051845F80 err = [0] [0]
 AMBE F811A050447D80 err = [0] [0]
 AMBE F811A1CD847980 err = [0] [0]

 AMBE F811A0C1847D80 err = [0] [0]
 AMBE F801A1518C7D80 err = [0] [0]
 AMBE F811A121847580 err = [0] [0]
 AMBE F811A52044BD80 err = [0] [0]
 AMBE F811A430445D80 err = [0] [0]
 AMBE F811A431845D80 err = [0] [0]
 AMBE F81364D1845580 err = [0] [0]
 AMBE F811A5D044B580 err = [0] [0]
 AMBE F811A52044BD80 err = [0] [0]
 AMBE F811A13044FD80 err = [0] [0]
 AMBE F8136020447D80 err = [0] [0]
 AMBE F8136020447D80 err = [0] [0]
 AMBE F811A53184B980 err = [0] [0]
 AMBE F811A55184BD80 err = [0] [0]
 AMBE F811A55184BD80 err = [0] [0]
 AMBE F813652044B580 err = [0] [0]
 AMBE F813653044BD80 err = [0] [0]
 AMBE F813652184A580 err = [0] [0]

If i use -i option, nothing is decoded.
If i use media player, only the first superframe is decoded but with errors:

Code:
 AMBE EA3C3A0E141A00 err = [0] [1]
 AMBE D824F31F022A80 err = [0] [0]
 AMBE D8036CE8807D80 err = [0] [0]
 AMBE F8227111486A80 err = [0] [1]
 AMBE F82271914C6C80 err = [0] [0]
 AMBE F825F19144E480 err = [0] [1]
 AMBE F82321C144EC80 err = [0] [0]
 AMBE F825F19D44E880 err = [0] [1]
 AMBE F823211144EE80 err = [0] [1]
 AMBE F823B10144E680 err = [0] [1]
 AMBE F81321014C6680 err = [0] [1]
 AMBE F819A1814C5480 err = [0] [0]
 AMBE F813B1004CC480 err = [0] [0]
 AMBE F81F318100E480 err = [0] [1]
 AMBE F813B11D4CE880 err = [0] [0]
 AMBE F813B1114CEC80 err = [0] [1]
 AMBE F813B11144EC80 err = [0] [0]
 AMBE F813211164EC80 err = [0] [0]
 

Attachments

  • ambe.wav.zip
    223.1 KB · Views: 4
Last edited:

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
Okay, its DMR Simplex. Guess I never tested that type before when making raw wav files. I just went and tested that functionality, and it doesn't work for me either. I think what is happening is that samples are being dropped and not properly writen to the wav file due to the absence of the other slot, as it were. I'll have to take a look at the code at some point, and see if anything can be done to fix it.

In the meantime, if you need a capture to playback later on in DSD-FME, just use the -c capture.bin symbol capture method instead, those work properly when played back using dsd-fme -i capture.bin
 
Top