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.
@article{arxiv.2605.21136,
title = {LoRa and LoRaWAN simulator-cum-emulator with CAD and capture effect in Python},
author = {Matthijs Reyers and Niels Hokke and R. R. Venkatesha Prasad},
journal= {arXiv preprint arXiv:2605.21136},
year = {2026}
}