LoRa and LoRaWAN simulator-cum-emulator with CAD and capture effect in Python
For researchers and developers working with LoRaWAN, this simulator offers a simpler, more accessible tool that includes capture effect and firmware emulation, though it is an incremental improvement over existing simulators.
The paper presents a Python-based LoRaWAN/LoRa simulator that supports all device classes and introduces a method for evaluating real device firmware within the simulator, addressing gaps in existing C++ simulators.
Existing LoRaWAN/LoRa simulators consist of large, complicated C++ codebases and often do not support all device classes. This paper presents the design of a simple to use, Python-based discrete-event simulator that addresses these gaps while also introducing a novel method for evaluating real device firmware in the simulator. The simulator is built on a custom asyncio-based simulation kernel, a three-phase packet delivery model that reproduces the capture effect, a full LoRaWAN 1.0.4 stack, and a containerized firmware system that cross-compiles real STM32 C firmware and redirects HAL calls into the simulator via CFFI. The simulator is distributed as a Python package via Github (https://github.com/MatthijsReyers/lora-simulator) and requires no external simulation framework or dependencies.