Optimized high speed nRF24L01+ driver class documentation v1.4.8
TMRh20 2020 - Optimized fork of the nRF24L01+ driver
No Matches
Linux General/Raspberry Pi

RF24 supports a variety of Linux based devices via various drivers. Some boards like RPi can utilize multiple methods to drive the GPIO and SPI functionality.

Potential PreConfiguration

If SPI is not already enabled, load it on boot:

sudo raspi-config
  1. Update the tool via the menu as required
  2. Select Advanced and enable the SPI kernel module
  3. Update other software and libraries
    sudo apt-get update
    sudo apt-get upgrade

Build Options

The default build on Raspberry Pi utilizes the included BCM2835 driver from the BCM2835 Library

  1. See the Linux section for automated installation.
  2. Manual install:
    sudo make install

Connections and Pin Configuration

Using pin 15(GPIO22) for CE, pin 24(GPIO8 commonly labeled as CE0) for CSN

Can use any available SPI BUS for CSN.

In general, use

RF24 radio(<ce_pin>, <a>*10+<b>);
Driver class for nRF24L01(+) 2.4GHz Wireless Transceiver.
Definition: RF24.h:116

for proper constructor to address the correct spi device at /dev/spidev<a>.<b>

Choose any GPIO output pin for radio CE pin.


RF24 radio(22,0);

MRAA Constructor

RF24 radio(15,0);

See the MRAA documentation for Raspberry Pi support

SPI_DEV Constructor

RF24 radio(22, 0);

See the Raspberry Pi documentation about the GPIO pins


PIN NRF24L01 RPI RPi -P1 Connector
1 GND rpi-gnd (25)
2 VCC rpi-3v3 (17)
3 CE rpi-gpio22 (15)
4 CSN rpi-gpio8 (24)
5 SCK rpi-sckl (23)
6 MOSI rpi-mosi (19)
7 MISO rpi-miso (21)
8 IRQ - -

breif history of RF24 library lineage

Based on the arduino lib from J. Coliz, the library was berryfied by Purinda Gunasekara then forked from github stanleyseow/RF24 to jscrane/RF24-rpi

Network lib also based on farconada/RF24Network