![]() * Update CC1101.h Add Max packet size for FIFO Refills * Define FIFO Size, Max packet Length for FIFO refills * FIFO REFILL - Go through FSTXON State - Check MARCSTATE to ensure ready to tx - Initial FIFO fill - Check FIFO bytes twice in accordance with errata - Refill FIFO - Check MARCSTATE is idle before returning * Fix typos * Fix another typo * min -> std::min per build check * Revert std::min back to min * Use RADIOLIB_MIN Macro instead of min * Move MARC State check for Idle to finishTransmit function Change allows startTransmit to stop blocking once the last bytes are added to the FIFO * Add timeouts for both MARC state checks * Fix typo * No interrupt for packets bigger than 64 bytes * Initialize state as RADIOLIB_ERR_NONE if avoiding ISR * Update example with packet size and discussion link * Update example with new packet size and discussion link * Update example, clarify blocking on greater than 64 bytes link discussion * Update doxygen comments for 255 byte limit, limitations and discussion link |
||
---|---|---|
.github | ||
examples | ||
extras | ||
src | ||
.gitattributes | ||
.gitignore | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
Doxyfile | ||
idf_component.yml | ||
keywords.txt | ||
library.json | ||
library.properties | ||
license.txt | ||
README.md | ||
SECURITY.md | ||
uncrustify.cfg |
RadioLib

One radio library to rule them all!
Universal wireless communication library for embedded devices
RadioLib allows its users to integrate all sorts of different wireless communication modules, protocols and even digital modes into a single consistent system. Want to add a Bluetooth interface to your LoRa network? Sure thing! Do you just want to go really old-school and play around with radio teletype, slow-scan TV, or even Hellschreiber using nothing but a cheap radio module? Why not!
RadioLib natively supports Arduino, but can run in non-Arduino environments as well! See this Wiki page and examples/NonArduino.
RadioLib was originally created as a driver for RadioShield, but it can be used to control as many different wireless modules as you like - or at least as many as your microcontroller can handle!
Quick links:
- Wiki - contains useful general information on using this library
- FAQ - frequently asked questions, and answers
- API Reference - full API reference, automatically generated from the source code
- Status Code Decoder - decoder for status codes returned by RadioLib methods
- Debug Log Decoder - decoder for RadioLib SPI debug logs
Supported modules:
- CC1101 FSK radio module
- LLCC68 LoRa module
- LR11x0 series LoRa/GFSK modules (LR1110, LR1120, LR1121)
- nRF24L01 2.4 GHz module
- RF69 FSK/OOK radio module
- RFM2x series FSK modules (RFM22, RM23)
- RFM9x series LoRa modules (RFM95, RM96, RFM97, RFM98)
- Si443x series FSK modules (Si4430, Si4431, Si4432)
- STM32WL integrated microcontroller/LoRa module
- SX126x series LoRa modules (SX1261, SX1262, SX1268)
- SX127x series LoRa modules (SX1272, SX1273, SX1276, SX1277, SX1278, SX1279)
- SX128x series LoRa/GFSK/BLE/FLRC modules (SX1280, SX1281, SX1282)
- SX123x FSK/OOK radio modules (SX1231, SX1233)
Supported protocols and digital modes:
- AX.25 using 2-FSK or AFSK for modules:
SX127x, RFM9x, SX126x, RF69, SX1231, CC1101, RFM2x, Si443x, LR11x0 and SX128x - RTTY using 2-FSK or AFSK for modules:
SX127x, RFM9x, SX126x, RF69, SX1231, CC1101, nRF24L01, RFM2x, Si443x, LR11x0 and SX128x - Morse Code using 2-FSK or AFSK for modules:
SX127x, RFM9x, SX126x, RF69, SX1231, CC1101, nRF24L01, RFM2x, Si443x, LR11x0 and SX128x - SSTV using 2-FSK or AFSK for modules:
SX127x, RFM9x, SX126x, RF69, SX1231, CC1101, RFM2x and Si443x - Hellschreiber using 2-FSK or AFSK for modules:
SX127x, RFM9x, SX126x, RF69, SX1231, CC1101, nRF24L01, RFM2x, Si443x, LR11x0 and SX128x - APRS using AFSK for modules:
SX127x, RFM9x, SX126x, RF69, SX1231, CC1101, nRF24L01, RFM2x, Si443x and SX128x - POCSAG using 2-FSK for modules:
SX127x, RFM9x, RF69, SX1231, CC1101, nRF24L01, RFM2x and Si443x - LoRaWAN using LoRa and FSK for modules:
SX127x, RFM9x, SX126x, LR11x0 and SX128x
Supported Arduino platforms:
-
Arduino
- AVR - Arduino Uno, Mega, Leonardo, Pro Mini, Nano etc.
- NOTE: Arduino boards based on ATmega328 (Uno, Pro Mini, Nano etc.) and smaller are NOT recommended. This is because the ATmega328 MCU is very constrained in terms of program and memory size, so the library will end up taking most of the space available.
- mbed - Arduino Nano 33 BLE and Arduino Portenta H7
- megaAVR - Arduino Uno WiFi Rev.2 and Nano Every
- SAM - Arduino Due
- SAMD - Arduino Zero, MKR boards, M0 Pro etc.
- Renesas - Arduino Uno R4
- AVR - Arduino Uno, Mega, Leonardo, Pro Mini, Nano etc.
-
Adafruit
-
Espressif
-
Intel
- Curie - Arduino 101
-
SparkFun
- Apollo3 - Sparkfun Artemis Redboard
-
ST Microelectronics
- STM32 (official core) - STM32 Nucleo, Discovery, Maple, BluePill, BlackPill etc.
- STM32 (unofficial core) - STM32F1 and STM32F4-based boards
-
MCUdude
-
Raspberry Pi
- RP2040 (official core) - Raspberry Pi Pico and Arduino Nano RP2040 Connect
- RP2040 (unofficial core) - Raspberry Pi Pico/RP2040-based boards
- Raspberry Pi - Arduino framework for RaspberryPI
-
Heltec
- CubeCell - ASR650X series (CubeCell-Board, CubeCell-Capsule, CubeCell-Module etc.)
-
PJRC
- Teensy - Teensy 2.x, 3.x and 4.x boards
-
Silicon Labs
- EFR32 - Silicon Labs xG24, xG27 and other boards
The list above is by no means exhaustive - RadioLib code is independent of the used platform! Compilation of all examples is tested for all platforms officially supported prior to releasing new version. In addition, RadioLib includes an internal hardware abstraction layer, which allows it to be easily ported even to non-Arduino environments.