Optimized high speed nRF24L01+ driver class documentation v1.4.8
TMRh20 2020 - Optimized fork of the nRF24L01+ driver
No Matches
Linux cross-compilation
These instructions are no longer recommended because they involve disabling security measures for the target system. Please try the instructions using CMake.

RF24 library supports cross-compilation. Advantages of cross-compilation:

  • development tools don't have to be installed on target machine
  • resources of target machine don't have to be sufficient for compilation
  • compilation time can be reduced for large projects

Following prerequisites need to be assured:

  • ssh passwordless access to target machine Here is a hint
  • sudo of a remote user without password Here is a hint
  • cross-compilation toolchain for your target machine; for RPi
    git clone https://github.com/raspberrypi/tools rpi_tools
    and cross-compilation tools must be in PATH, for example
    export PATH=$PATH:/your/dir/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

Cross compilation steps

  1. clone RF24 to a machine for cross-compilation
    git clone https://github.com/nRF24/RF24
    cd RF24
  2. configure for cross compilation
    ./configure --remote=pi@target_linux_host
    ./configure --remote=pi@target_linux_host --driver=<driver>
  3. build
  4. (optional) install library to cross-compilation machine into cross-exvironment - important for compilation of examples
    sudo make install
  5. upload library to target machine
    make upload
  6. (optional) compile examples
    cd examples_linux
  7. (optional) upload examples to target machine
    make upload

Cross comilation steps for python wrapper


  • Python setuptools must be installed on both target and cross-compilation machines
    sudo pip install setuptools
    sudo apt-get install python-setuptools

Installation steps

  1. Assure having libboost-python-dev library in your cross-compilation environment. Alternatively, you can install it into your target machine and copy /usr and /lib directories to the cross-compilation machine. For example
    mkdir -p rpi_root && rsync -a pi@target_linux_host:/usr :/lib rpi_root
    export CFLAGS="--sysroot=/your/dir/rpi_root -I/your/dir/rpi_root/usr/include/python2.7/"
  2. Build the python wrapper
    cd pyRF24
    ./setup.py build --compiler=crossunix
  3. Make the egg package
    ./setup.py bdist_egg --plat-name=cross
    dist/RF24-<version>-cross.egg should be created.
  4. Upload it to the target machine and install there:
    scp dist/RF24-*-cross.egg pi@target_linux_host:
    ssh pi@target_linux_host 'sudo easy_install RF24-*-cross.egg'