Tool
gr-lora
GNU Radio out-of-tree module by Pieter Robyns and co-authors for receiving and decoding LoRa physical-layer frames with a software-defined radio, implementing the modulation features described in patents and blog posts. Its receiver channelizes the input, detects and synchronizes to LoRa chirps with clock-drift correction, and decodes symbols through Gray mapping, deinterleaving, dewhitening and Hamming decoding into header and payload bytes, which a message socket sink can forward over UDP port 40868. The bundled flowgraphs decode recorded traces or live captures, and the README lists HackRF One, USRP B201, RTL-SDR and LimeSDR as tested receivers.
- Targets
- Protocol
- Category
- Protocol analysis tools
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- The newest commit on master, from 2021-12-10, merged a port to GNU Radio 3.9: CMake requests GNU Radio 3.9, the Python bindings use pybind11, and the library links liquid-dsp and log4cpp. The README was not updated for the port and still lists Python 2, SWIG and wx dependencies, and its Docker image installs python2 packages on an unpinned Arch Linux base; the Travis CI configuration builds GNU Radio maint-3.8. A gr3.7 branch keeps the older code, and GNU Radio 3.10 or later is not covered by the reviewed sources.
- Input is IQ samples from an SDR or a recorded file. The receiver block takes sample rate, center frequency, channel list, bandwidth, spreading factor, coding rate, implicit-header, CRC and reduced-rate settings that must match the transmission. apps/lora_receive_file_nogui.py offers to download an example 868.1 MHz SF7 trace from the authors' university server, and further traces are in the separate gr-lora-samples repository. The README lists LoPy, Dragino HAT, Adafruit Feather 32u4, Microchip RN2483 and SX1276 boards as tested transmitters.
- The README states that payload and header CRCs are not checked and that several channels cannot be decoded at once; its changelog marks version 0.7's downlink, reduced-rate implicit-header and arbitrary-bandwidth support as experimental. The newest version tag is v0.6.2, so 0.7 exists only on master. docs/test-results holds the authors' decoding rates from suites rerun on 2021-12-01 during the port, such as 100% on the short USRP traces, and the author considers LoRa fully reverse engineered as of version 0.6, citing close to 100% accuracy on clear signals; these are author-reported results.
- GPL-3.0 (LICENSE). The README asks research users to cite the Zenodo record 10.5281/zenodo.853201. It covers the LoRa physical layer only and does not mention LoRaWAN. The reviewed sources mention no AI or REA use, and nothing was built or run for this record.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · rpp0/gr-lora · Revision 90343d4
- CMakeLists.txt GitHub · rpp0/gr-lora · Revision 90343d4
- lib/CMakeLists.txt GitHub · rpp0/gr-lora · Revision 90343d4
- grc/lora_receiver.block.yml GitHub · rpp0/gr-lora · Revision 90343d4
- lib/decoder_impl.cc GitHub · rpp0/gr-lora · Revision 90343d4
- apps/lora_receive_file_nogui.py GitHub · rpp0/gr-lora · Revision 90343d4
- docker/Dockerfile GitHub · rpp0/gr-lora · Revision 90343d4
- .travis.yml GitHub · rpp0/gr-lora · Revision 90343d4
- docs/test-results GitHub · rpp0/gr-lora · Revision 90343d4
- LICENSE GitHub · rpp0/gr-lora · Revision 90343d4
More in Protocols
- termshark · Tool
- SigDigger · Tool
- grpc-tools · Tool
- open-appleremote: Siri Remote protocol reconstruction · Case study
- GAMEKB-K17: reconstructing a macropad configuration protocol · Case study
- cooler-lcd: a Thermalright display protocol implementation · Case study