// the find
jgromes/RadioLib
Universal wireless communication library for embedded devices
RadioLib is a C++ library that gives embedded devices a single API for a wide range of wireless modules — LoRa, FSK, OOK — and protocols from LoRaWAN down to RTTY and Hellschreiber. It's for embedded developers who want to swap radio hardware without rewriting their stack, or who need to speak legacy RF protocols from modern silicon. The HAL abstraction means it works on Arduino, ESP-IDF, Pico SDK, and bare metal with the same user-facing code.
The hardware abstraction layer is well-designed — porting to a new platform means implementing a handful of HAL methods, not touching radio driver internals. Protocol coverage is genuinely unusual: LoRaWAN Class A/C with pre-certification, plus APRS, AX.25, POCSAG, SSTV, and Hellschreiber on a single codebase. The CI pipeline compiles examples across every supported platform before each release, which actually catches regressions rather than just hoping. The online status code decoder and SPI debug log decoder are small tools that save hours of datasheet archaeology when something is misbehaving.
ATmega328-based boards (Uno, Nano) are explicitly flagged as not recommended because the library's flash/RAM footprint leaves almost nothing for user code — this bites beginners who own exactly those boards. LoRaWAN receive (Class B) is absent, which rules out any use case needing downlink scheduling without staying in Class C. The PhysicalLayer interface gives you a consistent API but also means you're one abstraction layer away from hardware-specific features; if you need direct register access for something obscure, you're fighting the design. Documentation is auto-generated Doxygen, which is thorough for API signatures but thin on the behavioral contract between modules and the HAL when timing matters.