g4klx / MMDVM

The firmware for the MMDVM (Multi-Mode Digital Voice Modem)
GNU General Public License v2.0
473 stars 188 forks source link

DMR Rate 3/4 data errors #329

Open rick51231 opened 2 years ago

rick51231 commented 2 years ago

Hi all

While testing battery management procol, which uses rate 3/4 dmr data, I've encountered strange data error: many data packets were corrupted while radio was near the repeater. As I understand, there is some bug with the receiving end of rate 3/4 data packets. I've added this code to the MMDVMHost (DMRTrellis.cpp) to check this:

unsigned int failPos = checkCode(points, tribits);

LogMessage("Trellis %u", failPos);

if (failPos == 999U) {

And most errors were in the end of the packet:

log ``` M: 2022-10-21 10:15:00.599 Trellis 47 M: 2022-10-21 10:15:00.660 Trellis 47 M: 2022-10-21 10:15:00.720 Trellis 48 M: 2022-10-21 10:15:00.779 Trellis 47 M: 2022-10-21 10:15:00.834 Trellis 48 M: 2022-10-21 10:15:00.894 Trellis 48 M: 2022-10-21 10:15:00.954 Trellis 999 M: 2022-10-21 10:15:05.939 Trellis 44 M: 2022-10-21 10:15:05.999 Trellis 47 M: 2022-10-21 10:15:06.054 Trellis 48 M: 2022-10-21 10:15:06.119 Trellis 47 M: 2022-10-21 10:15:06.179 Trellis 48 M: 2022-10-21 10:15:06.239 Trellis 48 M: 2022-10-21 10:15:06.299 Trellis 4 M: 2022-10-21 10:15:10.440 Trellis 5 M: 2022-10-21 10:15:10.500 Trellis 16 M: 2022-10-21 10:15:10.560 Trellis 48 M: 2022-10-21 10:15:10.620 Trellis 47 M: 2022-10-21 10:15:10.679 Trellis 999 M: 2022-10-21 10:15:10.734 Trellis 999 M: 2022-10-21 10:15:10.799 Trellis 4 M: 2022-10-21 10:15:52.874 Trellis 47 M: 2022-10-21 10:15:52.934 Trellis 47 M: 2022-10-21 10:15:52.994 Trellis 48 M: 2022-10-21 10:15:53.054 Trellis 47 M: 2022-10-21 10:15:53.114 Trellis 48 M: 2022-10-21 10:15:53.174 Trellis 48 M: 2022-10-21 10:15:53.234 Trellis 47 M: 2022-10-21 10:15:57.791 Trellis 47 M: 2022-10-21 10:15:57.854 Trellis 47 M: 2022-10-21 10:15:57.914 Trellis 48 M: 2022-10-21 10:15:57.974 Trellis 47 M: 2022-10-21 10:15:58.034 Trellis 48 M: 2022-10-21 10:15:58.094 Trellis 48 M: 2022-10-21 10:15:58.154 Trellis 47 M: 2022-10-21 10:16:01.874 Trellis 47 M: 2022-10-21 10:16:01.934 Trellis 47 M: 2022-10-21 10:16:01.994 Trellis 48 M: 2022-10-21 10:16:02.054 Trellis 47 M: 2022-10-21 10:16:02.114 Trellis 48 M: 2022-10-21 10:16:02.174 Trellis 48 M: 2022-10-21 10:16:02.234 Trellis 47 M: 2022-10-21 10:18:40.361 Trellis 36 M: 2022-10-21 10:18:40.421 Trellis 36 M: 2022-10-21 10:18:40.481 Trellis 48 M: 2022-10-21 10:18:40.541 Trellis 47 M: 2022-10-21 10:18:40.601 Trellis 48 M: 2022-10-21 10:18:40.661 Trellis 48 M: 2022-10-21 10:18:40.721 Trellis 47 M: 2022-10-21 10:18:44.441 Trellis 47 M: 2022-10-21 10:18:44.501 Trellis 47 M: 2022-10-21 10:18:44.561 Trellis 48 M: 2022-10-21 10:18:44.621 Trellis 47 M: 2022-10-21 10:18:44.678 Trellis 48 M: 2022-10-21 10:18:44.741 Trellis 48 M: 2022-10-21 10:18:44.801 Trellis 47 M: 2022-10-21 10:18:49.781 Trellis 47 M: 2022-10-21 10:18:49.841 Trellis 47 M: 2022-10-21 10:18:49.901 Trellis 48 M: 2022-10-21 10:18:49.961 Trellis 47 M: 2022-10-21 10:18:50.021 Trellis 48 M: 2022-10-21 10:18:50.081 Trellis 48 M: 2022-10-21 10:18:50.141 Trellis 47 ```
Corrupted packet example ``` M: 2022-10-21 10:40:28.245 Debug: DMRSlotRX: data payload found slot/pos/centre/threshold 1 450 -202 495 D: 2022-10-21 10:40:28.249 RX DMR Data 1 D: 2022-10-21 10:40:28.249 0000: E0 27 18 48 28 22 E7 22 34 5F 2E 37 22 AE 22 BE *.'.H("."4_.7".".* D: 2022-10-21 10:40:28.249 0010: 86 3D 5D 7F 77 FD 75 7A 86 F2 34 22 31 2E B6 F2 *.=].w.uz..4"1...* D: 2022-10-21 10:40:28.249 0020: A4 D2 7C 26 B4 03 EB *..|&...* D: 2022-10-21 10:40:28.254 DMR Slot 1, raw RSSI: 1003, reported RSSI: -141 dBm M: 2022-10-21 10:40:28.254 Trellis 48 D: 2022-10-21 10:40:28.254 DMR Network Transmitted D: 2022-10-21 10:40:28.254 0000: 44 4D 52 44 07 00 27 4A 00 27 73 0B EB C2 65 68 *DMRD..'J.'s...eh* D: 2022-10-21 10:40:28.254 0010: CE E3 E0 F9 28 22 E7 22 34 5F 2E 37 22 AE 22 BE *....("."4_.7".".* D: 2022-10-21 10:40:28.254 0020: 86 3D FF 57 D7 5D F5 DA 86 F2 34 22 31 2E B6 F2 *.=.W.]....4"1...* D: 2022-10-21 10:40:28.254 0030: A4 D2 7C 26 B7 00 8D *..|&...* D: 2022-10-21 10:40:28.255 TX DMR Data 1 D: 2022-10-21 10:40:28.255 0000: E0 25 18 00 28 22 E7 22 34 5F 2E 37 22 AE 22 BE *.%..("."4_.7".".* D: 2022-10-21 10:40:28.255 0010: 86 3D FF 57 D7 5D F5 DA 86 F2 34 22 31 2E B6 F2 *.=.W.]....4"1...* D: 2022-10-21 10:40:28.255 0020: A4 D2 7C 26 B7 ```

MMDVMHost trying to correct It, but with failPos=48 packet is being corrupted. I've used a workaround which helped in my case:

if(failPos==48) {
        failPos = 47;
}

With other packets (CSBK, DataHeader, Rate1/2 data)everything is okay. Is it problem with the MMDVM firmware or is it hardware related?

Thank you

My hardware: