Basically, your problem is poor quality decode. Noise on the channel or a marginal signal. Its not a software issue in DSD, but rather something wrong with your decoding setup.
Yeah, I'm responding to an old thread that someone else revived, but what the hell.
The P25 DUID / frame type is a 4 bit value, that along with the 12 bit NAC, is protected by 47 bits of BCH FEC data. The BCH code can correct up to 11 bit errors (e.g. any 11 bits out of the total 63 bits). This means that the
entire 4 bit DUID value can be trashed, yet still be recoverable. The NAC and DUID values are not interleaved in any way, but are instead sent over the RF channel as a contiguous block of 8 symbols, so it's
very easy for a noise burst to take out a sizeable chunk of the NAC and/or DUID. However, DSD does not use the 47 FEC bits (they are just discarded) to recover the NAC and DUID values, so it
is a software issue in DSD.
The P25 protocol designers did not assume that P25 4 level data would be received error-free 100% of the time, nor should they - in the real world, bits get flipped. DSD attempts to error-correct the Golay-protected IMBE voice data (although the process is flawed), but fails to correct the
much better protected and far more critical DUID value. This leads to entire 180ms or 360ms audio chunks being lost. That's a lot of audio. The lack of error correction is also why DSD will sometimes display incorrect NAC, talkgroup and radio ID values.
Having said all that, this is by no means a dig against the DSD authors, who describe themselves as "non-programmers". DSD is wonderful proof of concept, not a finished product. Many major components are missing:
- proper noise filtering
- proper symbol shaping
- proper symbol centering
- proper FEC on all critical data
That's off the top of my head. Other issues include:
- the incomplete Golay FEC table
- unnecessary sensitivity to input audio levels
- no ability to select/force decoding of specified DMR/TRBO timeslots
- no detection of the various NXDN trunking sync patterns
- much higher than required CPU usage
Again, not a dig, just stating the facts/issues.