A point to note - LoRa low data rate optimisation flag

If the LoRa mode selected has a symbol time of more than 16mS, you need to set the low data rate optimization flag, this does not happen automatically.

I have now seen a few standard code ‘libraries’ that do not do this, some Arduino, some MicroPython and there is also often a comment somewhere that high spreading factor packets, especially long ones are unreliable.

There is a technical reason for this, and it also does get worse the more power you use.

Set the low data rate optimization flag correctly and you will find long high spreading factor packets can be quite reliable.


Thanks for bringing this up and writing to me personally. It definitely doesn’t affect people running the LoRaWAN based library like LMIC BUT if you are running raw LoRa using earlier version of RadioHead library (prior to v1.81), you’ll seeing this short and limited range at high SF and small bandwidth.

The never been updated RFM95W datasheet (which is a bad copy of Semtech’s SX1276 datasheet anyway) adds much weight to this issue as the register definition was not updated leaving such important setting out of the picture totally. Chances that everyone was looking at that RFM95W datasheet instead of Semtech’s SX1276 was nearly 100%! That being said, I will update my existing range testing report here soon.