Skip to content

RFM12 and RFM69

RFM12 and RFM69 are low-power wireless radio modules made by HopeRF


This page needs work to add links to all the relevant information on the weblog and wiki.

The RFM12 and RFM69 wireless radio modules by Hope RF are small low-power RF units with an SPI interface, which can easily be mounted on a PCB alongside a µC.


This is the radio module that started the JeeNode family (and JeeLabs):

Unlike simpler “ASK” (Amplitude Shift Keying) and “OOK” (On-Off Keying) radios, these modules use “FSK” (Frequency Shift Keying) to generate well-defined packets with a preamble, a header, a payload, and a checksum at much higher data rates, so that messages can be sent within milliseconds, with support for multiple nodes on the same frequency band and with packet error detection through the checksum.

In the RF12 driver (note the absence of an “M”) in JeeLib, the radio data rate is ≈ 50 Kbaud, which translates to one byte sent or received every 160 µs. Since there is no buffering in the RFM12B, the driver has to use interrupts to sustain such data rates.


This is the RFM69CW, the successor of the RFM12B. The “C” stands for compatible, meaning that the physical footprint is similar, although there are some subtle differences in the way interrupts signals work:

The RFM69 modules have an on-board 66-byte FIFO buffer, allowing them to send and collect packets without µC intervention. This considerably simplifies the RF69 driver logic and timing requirements. These radios can also use built-in 128-bit AES hardware encryption, but note that this requires all nodes in the network to work in encrypted mode and share the same key.

There are variants of the RF69 driver which use the same “compat” packet format as the original RF12 driver, making it possible to add new modules to existing sensor networks. Conversely, there is also a modified RF12 driver which makes it compatible with the new “native” RF69 format - this allows re-using older RFM12B-based nodes in a network of new RF69-oriented sensor nodes, and is probably the better long-term option.