Skip to content
CommunicationGPL-3.0 / Commercialv1.122

RadioHead

by Mike McCauley

RadioHead is a packet radio driver library supporting a wide range of transceiver chips — NRF24L01, RFM95/96/98 (LoRa), RFM69, and others — behind a common driver + manager pattern. The `RH_XXX` driver class talks to the specific radio chip, while an optional `RHReliableDatagram` manager layer adds addressing, acknowledgements, and automatic retries on top of the raw driver. The catch that trips people up is licensing: RadioHead is dual-licensed GPL / commercial, meaning it's free for open-source and personal projects but requires a paid commercial license for closed-source commercial products — worth checking before basing a product on it.

Installation

Arduino IDE — Library Manager

Sketch → Include Library → Manage Libraries → search RadioHead

PlatformIO

lib_deps = airspayce/RadioHead

Supported boards

Arduino UnoESP32STM32 Blue Pill

Examples

Send a packet over a LoRa RFM95 module

Same driver pattern (init + send) applies across NRF24L01, RFM69, and other supported radio chips.

#include <RH_RF95.h>

RH_RF95 rf95(10, 2); // CS, INT pins

void setup() {
  rf95.init();
  rf95.setFrequency(915.0);
}

void loop() {
  const char msg[] = "Hello from SolderHub";
  rf95.send((uint8_t*)msg, sizeof(msg));
  rf95.waitPacketSent();
  delay(1000);
}