NXDN SACCH Decoding

Status
Not open for further replies.

blackmore90

Member
Joined
Jan 9, 2018
Messages
13
I'm working on decoding the SACCH for the MMDVM project. I have the LICH decoding correctly after I realised that the scrambler was per symbol and not per bit.

I'd be interested in your CRC algorithm for the six-bit CRC, as well as any gotchas on decoding the SACCH. I don't expect to see an FACCH2 unless I send data, I get the impression from the documentation that the FACCH2 works as a header for a bunch of UDCH blocks.

For voice I only expect to see SACCH and FACCH1 as well as audio blocks.

Hi,
Here is the CRC-6 algorithm:

void crc_calc()
{
unsigned char xor_flag = 0;
crc = 0x3f;

for (int i = 0; i < 26; i++) {
xor_flag = l3_data ^ ((crc & 0x20) >> 5);
crc <<= 1;
if(xor_flag)
crc++;

if (xor_flag)
crc ^= 0x26;

crc &= 0x3F;
}
}

sorry for the late response.Actually FACCH2s are with data packets, that's why i don't encounter them. I have FACCH1 and SACCH packets but it seems that i miss some TX_REL_EX packets from FACCH1. But i can use IDLE messages instead, to determine the call stop instants. Thank you.
 

G4KLX

Newbie
Joined
Jan 23, 2018
Messages
3
My version of the NXDN CRC code is to be found at https://github.com/g4klx/MMDVMHost/blob/nxdn/NXDNCRC.cpp
My software is almost complete for handling conventional NXDN, next stage is the networking side.

Having implemented D-Star, DMR, System Fusion, P25, and now NXDN, I can see a direct lineage from P25 to NXDN to System Fusion. In the latter two cases they share the same convolution code, scrambling polynomial and even names, "channels", VCH, LICH -> FICH, etc.
 

blackmore90

Member
Joined
Jan 9, 2018
Messages
13
slicerwizard, thank you for the corrections.

G4KLX, thank you very much for the codes. It is a great amount of work there. I will check them to detect possible errors in my code. I am currently working on NXDN and P25. Your codes will probably help me a lot, especially in decoding P25 data packets, which is currently absent in my problem.

I will first check that FACCH1 issue, still hoping to get those TX_REL_EX packets. Many of the concepts are really the same as you said but that NXDN document has some blurry definitions and typos. Often, you need to figure out what's happening in the frames.

Thank you again, i will be back shortly.
 

blackmore90

Member
Joined
Jan 9, 2018
Messages
13
Hi again,
I have a problem with some NXDN audio output files.

First, I have demodulated a signal which seemed to have good SNR and good conditions, and obtained a bit file from that. Then i have decoded this bit file using my own decoder application and DSD+ 1.101. Both gives same voice output, which is partially understandable. However it lacks some parts. It is like saying "radio....rence" instead of "radioreference".

I have attached the bit file for that signal. Frames and SYNC patterns seem OK but I am not %100 sure if it has good conditions. My decoder application uses mbelib, maybe there is a problem with pseudorandom sequence deinterleaving. I am currently working to determine which side, demodulator or decoder, has the problem. I would be very happy if you could decode that file and give an idea. The voice is not English but the problem can be seen easily in editing tools like Audacity. I can also upload the corresponding IQ file if you would like to check.

Raw bit file format: 8-bit char ( 8-bits per byte )

Best regards
 

Attachments

  • nxdn_rec.zip
    19 KB · Views: 28
Status
Not open for further replies.
Top