NRF52840 Thread NCP
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.
https://electronut.in/nrf52840-thread/
https://groups.google.com/forum/#!topic/openthread-users/9TFIATWWrxw
https://www.nordicsemi.com/DocLib/Content/SDK_Doc/Thread_SDK/v2-0-0/index
Contents
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
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