LoRaWAN is composed of a network layer (fully documented) and the modulation/encoding layer LoRa (undocumented). For simulations and performance tests it is essential to be able to generate perfect transmit signals and/or to add intentional impairments.
The internet gives many sources and videos on reverse engineering the underlying modulation and encoding. Unfortunately, most of them are incomplete or incorrect. To support their own research on interference and to enable interested users to generate their own LoRa-signals, the InterOP team has developed a Matlab library for generating LoRa-compliant signals. The library was verified by sending thousands of messages to a commercial LoRaWAN-node and verifying a correct reception.
The associated downloads include:
- Matlab library (LoRa_endoding_modulation (ZIP)): A complete Matlab-based library to generate baseband signals, fully compliant to LoRa. As a starting point, the use of the testscript.m is recommended: It demonstrates the LoRa encoder and modulator and verifies the generated baseband signal by a simplified demodulator/decoder. Please note that all codes in this library put emphasis on correct encoding and not on the decoder. The latter is implemented in a very primitive and suboptimum way, requires perfect time and frequency synchronization, and might fail to decode generated LoRa-signals with specific parameter combinations.
- Presentation on LoRa Modulation (LoRaWebinar_LoRa (PDF)): This presentation is part of a webinar showing details on the encoding/modulation of LoRa.
- Master thesis (Interference Analysis of LoRaWAN Systems (PDF)): This thesis’ chapter 2.1 explains the LoRa encoding and modulation in great detail and is recommended as the main information source for better understanding the codes of the Matlab library
For questions to the provided codes, feel free to contact the InterOP team via our contact form!