RadioReference on Facebook   RadioReference on Twitter   RadioReference Blog
 

Go Back   The RadioReference.com Forums > Computer Aided Monitoring and Programming > Voice/Control Channel Decoding Software


Voice/Control Channel Decoding Software - For discussion of software applications which decode digital voice formats and trunking control channels. Please use the HF Digital Signals forum for anything below 30MHz.

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #21 (permalink)  
Old 02-05-2018, 2:24 AM
Member
   
Join Date: Jan 2018
Posts: 13
Default

Quote:
Originally Posted by G4KLX View Post
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[i] ^ ((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.
Reply With Quote
Sponsored links
  #22 (permalink)  
Old 02-05-2018, 9:12 AM
Member
   
Join Date: Sep 2002
Location: Toronto, Ontario
Posts: 4,706
Default

Quote:
Originally Posted by blackmore90 View Post
crc <<= 1;
if(xor_flag)
crc++;

if (xor_flag)
crc ^= 0x26;
That's a lot of lines to say crc = (crc << 1) ^ (xor_flag * 0x27);


Quote:
crc &= 0x3F;
That would normally be outside (after) the loop.
Reply With Quote
  #23 (permalink)  
Old 02-06-2018, 2:50 AM
Newbie
   
Join Date: Jan 2018
Posts: 3
Default

My version of the NXDN CRC code is to be found at https://github.com/g4klx/MMDVMHost/b...dn/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.
Reply With Quote
  #24 (permalink)  
Old 02-06-2018, 7:57 AM
Member
   
Join Date: Jan 2018
Posts: 13
Default

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.
Reply With Quote
  #25 (permalink)  
Old 05-18-2018, 10:48 AM
Member
   
Join Date: Jan 2018
Posts: 13
Default

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
Attached Files
File Type: zip nxdn_rec.zip (19.0 KB, 9 views)
Reply With Quote
Sponsored links
  #26 (permalink)  
Old 06-18-2018, 8:33 AM
Member
   
Join Date: Aug 2017
Location: Sacramenta, CA
Posts: 16
Default

Hi,

I need help descrambling without knowing the initial states for any digital encoding type.
There is a topic about that in that link below but could anybody help me in that ?

https://www.mathworks.com/matlabcent...02-11-standard
Reply With Quote
Reply

Tags
4800, channel, control, nxdn, trunked

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -5. The time now is 4:19 AM.


Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
All information here is Copyright 2012 by RadioReference.com LLC and Lindsay C. Blanton III.Ad Management by RedTyger
Copyright 2015 by RadioReference.com LLC Privacy Policy  |  Terms and Conditions