FORUM

Invalid payload with valid CRC using Implicit Header Mode

I’m following an error on SX12xx, because aleatory it receives an invalid packet. I’m trying to simulate a CRC error
drifting the frequencies between transmitter and receptor. I found the following issue, when implicit mode header with fixlength and CRC is enabled the CRC validation on the receptor fails. Invalid packets are received and the CRC is confirmed as valid, when you transmist on a close channel frequency.

I confirmed it using two pairs of boards SX1276MB1LAS or pairs of boards B-L072Z-LRWAN1. Also a combination of sx1276 with sx1262 as transmitters and receptors.

TX_FRQ: 922720 RX_FRQ: 922800

/* LORA_MODEM SETTINGS */
#define LORA_PAYLOAD_SIZE 9
#define LORA_BANDWIDTH 0 // 0: 125 kHz
#define LORA_SPREADING_FACTOR 9 // SF9
#define LORA_CODINGRATE 1 // 1: 4/5,
#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx
#define LORA_SYMBOL_TIMEOUT 5 // Symbols
#define LORA_FIX_LENGTH_PAYLOAD_ON true
#define LORA_IQ_INVERSION_ON false
#define LORA_RX_CONTINUOUS true

Radio.SetTxConfig( MODEM_LORA, LORA_TX_POWER, 0, LORA_BANDWIDTH,
LORA_SPREADING_FACTOR, LORA_CODINGRATE,
LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
true, 0, 0, LORA_IQ_INVERSION_ON, 300 );

Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, LORA_PAYLOAD_SIZE,
true, 0, 0, LORA_IQ_INVERSION_ON, LORA_RX_CONTINUOUS );

TX_PAYLOAD: 0xC6 0x64 0x00 0x00 0x00 0x80 0x00 0x00 0x18
RX_ERROR - CRC_ERROR

TX_PAYLOAD: 0xC6 0x64 0x00 0x00 0x00 0x80 0x00 0x00 0x18
RX_PAYLOAD: 0xee 0x14 0x03 0x02 0x50 0x90 0x00 0x09 0x18

TX_PAYLOAD: 0xC6 0x64 0x00 0x00 0x00 0x80 0x00 0x00 0x18
RX_ERROR - CRC_ERROR

TX_PAYLOAD: 0xC6 0x64 0x00 0x00 0x00 0x80 0x00 0x00 0x18
RX_PAYLOAD: 0x4e 0x14 0xb3 0x54 0x05 0xd0 0x40 0x50 0x18

TX_PAYLOAD: 0xC6 0x64 0x00 0x00 0x00 0x80 0x00 0x00 0x18
RX_ERROR - CRC_ERROR

TX_PAYLOAD: 0xC6 0x64 0x00 0x00 0x00 0x80 0x00 0x00 0x18
RX_PAYLOAD: 0xee 0x14 0x03 0x54 0x55 0xc3 0x00 0x59 0x18

TX_PAYLOAD: 0xC6 0x64 0x00 0x00 0x00 0x80 0x00 0x00 0x18
RX_ERROR - CRC_ERROR

I also tried to get the CRC received, disabling CRC checking on the receptor and increasing the payload length by 2. But the CRC value received is not match with CITT.

682s382:OnRxDone
682s383:RssiValue=-116 dBm, SnrValue=-11dB
682s383:payload. size=11
C615006155F02B3C191E3A
682s386:CRC_MSG: 0x3a1e
682s386:CRC_CAL: 0xe25e
682s387:CRC_BAD

Thanks in advance, kind regards