Raspberry Pi 802.15.4 radio

This is an addon module for the Raspberry Pi. Intended for use with the lowpan userspace tools, it adds support for 6LoWPAN over 802.15.4 (2.4GHz) to a Raspberry Pi running Linux.

The module comprises a chip antenna, crystal oscillator, and an Atmel AT86RF233, which is a 2.4GHz SPI-to-antenna transceiver IC with 802.15.4 hardware assist. This is therefore an SPI-to-airwaves 802.15.4 solution.

The header pins are matched to pins 15-26 of the RPi P1 header, but this design is otherwise not RPi-specific. It would not be wrong to call this a simple AT86RF233 breakout board with an antenna and crystal.


Anthony Buckton

May 23, 2019, 5:30 p.m.

Hi There,
Does this module support OpenThread?




May 25, 2019, 1:38 p.m.

Technically the module can support it, but I don't know of any OpenThread implementations for Linux yet. You might want to use this module instead, which includes a microcontroller that can run the official OpenThread firmware which combined with a raspberry pi is a supported configuration I think.

Robo Warrior

April 26, 2019, 11:08 a.m.

Only link to schematics (*.pdf) seems to be working, links to other resources are dead. Can you please make the files available again? Thank you.


April 26, 2019, 12:03 p.m.

Sorry about that. They're fixed now.

Maria Elena

May 1, 2019, 3:32 p.m.

Good evening, I am trying to create a 6lowpan network with raspberry pi3 and 802.15.4 radio, I have followed several tutorials, I already have the interfaces created in the nodes, but when I ping6 from one node to another I get an unreachable destination, please someone can help me with that. thank you.


May 14, 2019, 8:18 p.m.

There has apparently been some problem with the current linux kernel version used by raspbian lately. I haven't investigated what's causing it but I think most people are just using an older kernel version to work around the problem. This wiki page mentions the problem and how to install an older kernel.


I believe the information in that link is still accurate as of today.

Robo Warrior

April 26, 2019, 12:35 p.m.

Really appreciate your fast respone. Thanks for sharing the resources, nice work though!

matta phani

Aug. 1, 2017, 11:45 p.m.

I want to test it with Intel celeron based Custom Board.please provide suggestions.


July 19, 2016, 1:26 a.m.

6lbr is unable to detect this radio. Any configuration miss?


July 29, 2016, 3:08 a.m.

6lbr expects an IoT mote, this is a simple transceiver.


July 11, 2016, 11:25 p.m.

Does this device with RPi2 provide peer-to-peer?
I get destination unreachable error while doing ping6.

Jan Newmarch

Aug. 10, 2016, 4:52 a.m.

I'm getting the same behaviour between two RPi2 B's: "Destination unreachable: Address unreachable". Each RPi is able to ping6 itself. Is there some sort of equivalent to WiFi's infrastructure mode?

Md Mahbubul Hoque

April 14, 2017, 7:29 a.m.

Did u find any solutions ?

Jan Newmarch

April 15, 2017, 4:21 a.m.

I got it all working and wrote three articles for Linux Journal (Nov 2016 - Jan 2017). Setting it up, TCP and UDP programs, talking to the general internet, CoAP, etc. They are on my web site at https://jan.newmarch.name/IoT/


Nov. 26, 2015, 12:13 p.m.

Do you have sample code on how to use the API on the Raspberry Pi?


Aug. 12, 2015, 5:33 p.m.

I know this module acts like a Thread router. Can it also simulate a IoT device as well? If I had two modules, can I have both a router and a IoT device?

Christoffer Holmstedt

Aug. 21, 2015, 1:50 a.m.

Hi Steve
I've not read the specification from the Thread Group so can't say for sure concerning what a Thread Router/device is. This module supports the 802.15.4 PHY layer and most MAC functionality is implemented as Linux drivers (at least it is Linux I'm running).

What you run on top of the PHY/MAC layer is up to you. At the moment the Linux drivers don't support 802.15.4 Coordinator functionality so e.g. running it as a "router/full function device" is not possible afaik (with Linux kernel that is).

As a last note. All Full Function Devices can act as both routers and IoT devices and probably will in most applications.

Gilbert Brault

June 16, 2015, 12:57 p.m.

Does this piece of hardware works on the Raspberry PI 2 B?


Aug. 28, 2016, 3:26 p.m.

Hi Gilbert,

I've managed to get it working on RPi 1 model B and RPi 2 model B.

I'll outline the steps below. For all steps I've used the rpi-tools cross compiler
git clone --depth 1 https://github.com/raspberr...

I've also used an alias named armmake to makes things a bit simpler.
alias armmake='ARCH=arm CROSS_COMPILE=~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=.mods make'

1) Put the Raspbian-Jessie-2016-05-27 image on your SD card
2) Get the rpi-4.7.y source (rpi-4.4.y, which is the default as of today, doesn't work with AT86RF233, and rpi-4.8.y gives me kernel panic)
git clone --depth 1 https://github.com/raspberr... --branch rpi-4.7.y --single-branch rpi-4.7.y
3) Clean the source
armmake mrproper
4) Configure the kernel with the defaults
# RPi 1 model B:
KERNEL=kernel armmake bcmrpi_defconfig
# RPi 2 model B:
KERNEL=kernel7 armmake bcm2709_defconfig
5) Configure the kernel with your modifications (no modifications needed as defaults are fine to enable AT86RF233 and get it working)
# RPi 1:
KERNEL=kernel armmake menuconfig
# RPi 2:
KERNEL=kernel7 armmake menuconfig
6) Build the kernel and modules (the option -jX is to use X number of cpu cores when you build to speed things up)
# RPi 1:
KERNEL=kernel armmake zImage modules dtbs -j4
# RPi 2:
KERNEL=kernel7 armmake zImage modules dtbs -j4

7) Install the modules in our temp path (.mods)
armmake modules_install
8) Mount your RPi SD-card on /mnt/sd (or where you see fit) and copy modules and overlays.
sudo cp arch/arm/boot/dts/*.dtb /mnt/sd/boot/
sudo cp arch/arm/boot/dts/overlays/*.dtbo /mnt/sd/boot/overlays/
sudo cp -r .mods/lib/modules/* /mnt/sd/lib/modules/
9) Copy the kernel to the SD-card
# RPi 1:
sudo scripts/mkknlimg arch/arm/boot/zImage /mnt/sd/boot/kernel.img
# RPi 2:
sudo scripts/mkknlimg arch/arm/boot/zImage /mnt/sd/boot/kernel7.img
10) Get the latest firmware and copy it to the SD-card
git clone --depth 1 https://github.com/raspberr... --branch next --single-branch firmware
sudo cp -r firmware/hardfp/opt/* /mnt/sd/opt/
11) Unmount your SD-card, insert it into your RPi and enjoy!

I hope the above helps and saves you for the days I've spend realizing that the rpi-4.4.y kernel driver for AT86RF233 is faulty :)

Won-Jae Yi

Sept. 21, 2016, 11:02 p.m.

Thanks for the advice here. I have successfully compiled the kernel on my RPi2 and boots well. I have them running on two RPi2s now but how did you manage to ping each other? i've done several attempt such as ping6 -I lowpan0 (ipv6 address) but no luck.


July 10, 2015, 9:39 a.m.

Hi. Sorry, I put off getting one longer than I meant to. Today I can say for sure that yes it works.

Jeffrey Pomeroy

Sept. 3, 2015, 11:46 p.m.

May i ask how you actually got it to work? Can i take a peak at your bcm2709-rpi-2-b.dts file?

Leave a comment