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.

37 Comments

kursad

Dec. 26, 2020, 12:12 a.m.

Hi

Is there a way to use this module as a zigbee adapter/znp?

not_bummelmann

Nov. 23, 2020, 3:10 a.m.

Hi,
The schematics list a chip antenna but in the pictures it seems like you used a pcb antenna? Basically why I'm asking is that I need to fork your design and modify it to fit a AT86RF212b, which supports 868MHz. Pinout luckily is the same, as far as i understood I only need to switch out the balun and the antenna. I was wondering if you could upload the modified design, I also noticed you put in a capacitor in front of the antenna and left out C10 and C11.

onezee

March 8, 2021, 5:10 a.m.

that would be marvelous!

Chase

Oct. 11, 2020, 11:35 a.m.

Hello,

Please reach out to us regarding an open order for this item.

Thank you,

- Chase

Chase

Oct. 11, 2020, 11:36 a.m.

Thank you in advance.

Chase

Oct. 29, 2020, 8:27 a.m.

Thank you so much for reaching out directly to fulfill our order!

I am glad things are up and running and don't worry about the delay as 2020 has been tough all around!

We may reach out one final time for support once the radios are being integrated with our project.

Take care.

Lane Pemberton

July 8, 2019, 8:13 a.m.

I think I have my raspberry pi 2 setup correctly, but I'm not sure how to connect it to a device that has the same radio signal. Is there a tutorial somewhere that shows how to sniff or connect to a device with the same radio frequency?

Murat

June 27, 2019, 5:13 a.m.

Hi All, I have completed the installation of 2 Raspberry Pi 802.15.4 radio modules and Rpi over 6lowpan. is there security by default? I want to encrypt the broadcast. how can I do that. now I can see the content when I classify the broadcast. find out if I broke the bow by doing DoS attacks.

benemorius

June 28, 2019, 3:32 a.m.

What I'm using for security between Linux and Riot is CoAP over DTLS.

Linux has added link-layer security but I haven't used it yet. I found some information on using it here:

https://github.com/linux-wpan/wpan-tools/wiki/Guide:-Contiki-%E2%86%94-Linux,-with-llsec

I assume you can ignore the part about Contiki and use the part for Linux.

Maria

Oct. 24, 2019, 8:50 a.m.

Buenas tardes, estoy trabajando con 802.15.4, funciona 100%, tengo 3 nodos 6lowpan, ahora quisiera agregarle un sensor y un actuador, que protocolos de transporte podría utilizar para tener los datos del sensor y desde el enrutador frontera puede conectar o encender mi actuador . por favor le agradezco su ayuda ..

Murat

June 28, 2019, 3:43 a.m.

I would like to set up sensor network with Raspberry Pi 802.15.4 radio module. After activating 6lowpan, it didn't communicate in encrypted form on the radio channel. Radio channel 2480 Mhz. working well. When I classify this channel, I was able to see the information on the layer. 6lowpan modules were called coming with aes-128 encryption. I would like to use encryption when essentially running wireless communications.

Murat

June 13, 2019, 12:05 p.m.

Hi,I want to run at86rf233 with Rassperry Pi 3 B +. What I want to do is run like edge and router topology. I would like to test with ping6 between 6lowpan connected by running assisted. but I failed. can you help me.

benemorius

June 13, 2019, 12:35 p.m.

What did you do and what problem did you encounter?

Murat

June 14, 2019, 1:51 a.m.

I actually build a topology with rassperry pi 3 B + along with the openlabs 802.15.4 module.
I wanted to run with 2 systems.
The kernel I used was 4.19. I thought it would be kernel 4.17 down. but I could not set up the 802.15.4 network. :-( I would like to make ping6 using 6lowpan but if the modules are defined on the rassperry and up.

benemorius

June 15, 2019, 6:59 p.m.

I've needed to downgrade to 4.9 recently. I'm not sure what the issue is with newer Linux kernels but usually I'm pretty sure it's Broadcom's fault for not publishing proper datasheets without NDAs.

This will install a 4.9 kernel on a pi:
sudo rpi-update 936a8dc3a605c20058fbb23672d6b47bca77b0d5

After that you should be able to do something like `ping ff02::1%lowpan0` and get a response.

https://github.com/RIOT-Makers/wpan-raspbian/wiki/Create-a-generic-Raspbian-image-with-6LoWPAN-support

Anthony Buckton

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

Hi There,
Does this module support OpenThread?

Thanks,

Anthony

benemorius

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.

benemorius

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.

benemorius

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.

https://github.com/RIOT-Makers/wpan-raspbian/wiki/Create-a-generic-Raspbian-image-with-6LoWPAN-support

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.

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

SN

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

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

kostis

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

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

SN

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/

ffleandro

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

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

Steve

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?

Mickey

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.

benemorius

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