RFM12B library
Arduino C++
Latest commit de7e409 Dec 27, 2013 @LowPowerLab Add targeted ID wireless programming
Specify the node ID of the target in the command line by newly added
command line argument
Some refactoring


RFM12B Library

By Felix Rusu (felix@lowpowerlab.com)
Based on the RFM12 driver from jeelabs.com (2009-02-09 jc@wippler.nl)


  • easy API with a few simple functions for basic usage
  • 127 possible nodes on 256 possible networks
  • 128 bytes max message length
  • customizable transmit power (8 levels) for low-power transmission control
  • customizable air-Kbps rate allows fine tuning the transmission reliability vs speed (transmitting slower is more reliable but takes more time which implies more power usage)
  • Sleep/Wakeup functionality for power saving
  • Low battery detector with customizable low voltage threshold
  • Interrupt driven
  • Support for targeted ACK instead of broadcasted ACK (possible because of the new source byte in the header) encryption with XXTEA algorithm by David Wheeler, adapted from http://en.wikipedia.org/wiki/XXTEA Support for these chips: ATMega8 family (ATmega168, ATMega328) ATMega2560, ATMega1280, ATMega644P, ATTiny84, ATTiny44, ATMega32u4. So far only tested on ATMega 328/P
  • wireless programming (for more info click here, here and here)
  • the library needed for wireless programming is now here, install it in your Arduino/libraries folder (WirelessHEX for RFM12B)


Copy the content of this library in the "Arduino/libraries/RFM12B" folder.
To find your Arduino folder go to File>Preferences in the Arduino IDE.
See this tutorial on Arduino libraries.

Saple usage

TODOs (in order of priority):

  • Support automatic ACK handling
  • Refactor changing the SPI CS signal
  • Add support for hosting multiple radios on 1 MCU