NRF52840 Thread NCP

From HiveTool
Revision as of 03:42, 23 January 2019 by Paul (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Pi Border Router with nRF52840 thread NCP

This is an attempt at turning the Pi into a thread border router using the nRF52840 dongle as the Network Co Processor (NCP).

The nRF52840 dongle must be programmed with the NCP application. One way is to use the nRF Connect program.

Background Resources


Install Network Co Processor (NCP) code on nRF52

Download nRF Connect program.

./nrfconnect-2.6.1-x86_64.AppImage

Downloaded the nRF5 SDK for Thread and Zigbee 2.0.0

https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK-for-Thread-and-Zigbee/Download

Write the NCP hex file to the dongle.

Set up the border router on the Pi:

You need both border router and wpantund:

Install borderrouter code

https://openthread.io/guides/border-router/build

git clone https://github.com/openthread/borderrouter
cd borderrouter
./script/bootstrap
.configure --enable-debug  --enable-ncp --enable-ftd --enable-commissioner --enable-joiner --enable-border-agent --enable-border-router --enable-commissioner --enable-udp-forward
make
sudo make install

Install wpantund

git clone https://github.com/openthread/wpantund.git
cd wpantund
./bootstrap.sh
./configure --sysconfdir=/etc --enable-debug
make -j4  // -j4 (use 4 cores) may have locked it up
make
sudo make install

Install OpenThread

git clone https://github.com/openthread/openthread

./configure --enable-ncp --enable-ftd --enable-commissioner --enable-joiner --enable-border-agent --enable-border-router --enable-commissioner --enable-udp-forward


Check wpan status

sudo wpanctl status

Install radvd

Add interface wlan0

sudo vi /etc/radvd.conf
interface wlan0
{
   AdvSendAdvert on;
   prefix FD00:1122::/64
   {
       AdvOnLink off;
       AdvAutonomous on;
       AdvRouterAddr on;
   };
};

interface bt0
{
   AdvSendAdvert on;
   prefix 2001:db8::/64
   {
       AdvOnLink off;
       AdvAutonomous on;
       AdvRouterAddr on;
   };
};


sudo systemctl stop radvd

Add IPv6 routes

MUST ADD ROUTES ON ALL MACHINES!

route -6 add 2001:0002::/48 metric 1 dev eth0

On Pi:

sudo route -6 add fd00:1122::/64 metric 1 dev eth0

On Debian

ip -6 route add fd00:1122::/64 dev wlp1s0

Install libcoap

https://learn.pimoroni.com/tutorial/sandyj/controlling-ikea-tradfri-lights-from-your-pi

https://github.com/smartuni/examples/wiki/libcoap

sudo apt-get install build-essential autoconf automake libtool
git clone --recursive https://github.com/obgm/libcoap.git
cd libcoap
git checkout dtls
git submodule update --init --recursive
./autogen.sh
./configure --disable-documentation --disable-shared
make
sudo make install

Or maybe just:

sudo apt-get install libcoap-1-0-dev

https://github.com/RichardChambers/raspberrypi/tree/master/coap




Commissioning

https://openthread.io/guides/build/commissioning


wpanctl

wpanctl:wpan0> join OpenThread -p 0xABCD
Joining WPAN "OpenThread" as node type "end-device", panid:0xABCD
Partial (insecure) join. Credentials needed. Update key to continue.
wpanctl:wpan0> join OpenThread -x 0xDEAD00BEEF00CAFE
Joining WPAN "OpenThread" as node type "end-device", xpanid:0xDEAD00BEEF00CAFE
Partial (insecure) join. Credentials needed. Update key to continue.

nRF52840 CoAP code examples

https://github.com/cellabox/cellabox