Unique Thread/Bluetooth multiprotocol solution with nRF5 SDK for Thread and nRF52840 SoC by Nordic

With the nRF52840, we released our first System-on-Chip (SoC) with a radio that is capable of running the IEEE 802.15.4 PHY, additionally to Bluetooth 5 (Bluetooth Low Energy), ANT+, and proprietary 2.4 GHz protocols. In March 2017, we released our first software solution running on top of the IEEE 802.15.4 PHY - nRF5 SDK for Thread in version 0.8.0, supporting the OpenThread stack.

Multiprotocol with nRF5 SDK for Thread

Since nRF52840 supports multiple radio protocols, applications running on this SoC can use several radio protocols. With the release of nRF5 SDK for Thread in version 0.9.0, we introduced a Thread/Bluetooth Low Energy switched multiprotocol solution. The switched multiprotocol solution presents the simplest approach to multiprotocol support. This method requires disabling the currently used protocol before enabling the other one, and thus achieving non-concurrent radio access.

image description

With the release of nRF5 SDK for Thread in version 0.10.0, we added a unique functionality - Thread/Bluetooth Low Energy dynamic multiprotocol solution that allows for concurrent operation of Thread and Bluetooth Low Energy, utilizing OpenThread and the S140 v5 SoftDevice (Nordic Bluetooth Low Energy stack for the nRF52840).

In the dynamic multiprotocol solution, radio hardware is time-sliced between all protocols. This solution allows for keeping established connections in a few protocols at the same time. Transmitting and receiving data does not break connections from any of the radio protocols used, and therefore both connections on Thread and Bluetooth Low Energy can be maintained without disconnecting the other one.

image description

In the dynamic multiprotocol method, switching between different protocols is done automatically in the background of the currently running application and therefore it is transparent for the user. A user writes the Bluetooth part of a multiprotocol application as it was a Bluetooth-only application, and the Thread part of the multiprotocol application as it was a Thread-only application.

The above video provides a visual demo of this multiprotocol functionality.

nRF5 SDK for Thread

The nRF5 SDK for Thread is based on the OpenThread stack, which is released by Google/Nest, and on the nRF5 SDK. The idea is to deliver an easy-to-use Thread solution based on the leading nRF52840 SoC, bringing to our customers a solution to go fast to market with outstanding power consumption and security. Our goal is also to reuse software and know-how from our Bluetooth low energy products.

nRF5 SDK for Thread comes with a pre-built OpenThread stack. OpenThread (https://github.com/openthread) is an open-source implementation of the Thread networking protocol. However, companies must join the Thread Group to gain the intellectual property rights to the protocol. Products must also be approved by the group before they can be marketed as “Thread-certified”.

OpenThread was initially released by Google/Nest to make the technology used in Nest products more broadly available to developers. It implements all Thread networking layers and is the first stack to be Thread 1.1 certified. Nordic Semiconductor provides full support for its platform within OpenThread and actively participates in the development of OpenThread by co-authoring the core of this stack.

For more information, refer to Nest article “An Open Foundation for the Connected Home”: https://nest.tech/an-open-foundation-for-the-connected-home-1070a8e41e34

Thread protocol is application layer agnostic. Thread specification does not define an application layer, but several IP-based application layers can be supported. nRF5 SDK for Thread utilizes CoAP as an example application layer providing several example applications for all Thread roles and for communication with a cloud service (https://thethings.io).

The nRF5 SDK for Thread has support for Over-the-Air Device Firmware Upgrade (OTA-DFU). This allows for updates of application and/or protocol stack in the field. The DFU algorithm uploads the new firmware image in the background to ensure no network down time.

Nordic’s Thread Border Router is provided with built-in On-mesh Commissioner support. It can be used to authorize nRF52840-based nodes with the use of built-in NFC tag. With this solution, the commissioning of new devices is as simple as tapping the NFC antenna on the Border Router’s NFC reader. An example that presents the commissioning process utilizing NFC can be found in nRF5 SDK for Thread (NFC MeshCoP example).

Thread commissioning procedure involves advanced cryptographic algorithms to keep it secure (EC J-PAKE DTLS session). This requires a lot of computing power and may be time consuming when done in software on resource-constrained embedded devices. nRF5 SDK for Thread provides a precompiled mbedTLS library with ARM CryptoCell-310 support for cryptographic operations used in OpenThread (ECC, SHA-256, AES-ECB), which greatly reduces the commissioning time.

image description

The multiprotocol examples demonstrate how two different protocols, Thread and Bluetooth Low Energy, can be used within the same application. Two different types of multiprotocol examples are available: switched multiprotocol examples and dynamic multiprotocol examples. The following examples are available for the switched multiprotocol solution:

  • Bluetooth Low Energy UART and Thread MTD CoAP Client example
  • Bluetooth Low Energy and Thread Template example

The following examples are available for the dynamic multiprotocol solution:

  • Bluetooth Low Energy UART and Thread MTD CoAP Client example
  • Bluetooth Low Energy Proximity and Thread CoAP Server example
  • Bluetooth Low Energy Eddystone and Thread CoAP Server example
  • Bluetooth Low Energy HRS and Thread CoAP Server with FreeRTOS example
  • Bluetooth Low Energy and Thread Template example

You can also transform any Bluetooth Low Energy peripheral example available in nRF5 SDK v.13.0.0 into a Bluetooth Low Energy/Thread dynamic multiprotocol example using the provided recipe.

You can download nRF5 SDK for Thread from http://www.nordicsemi.com/eng/Products/nRF5-SDK-for-Thread

And feel free to comment and ask questions below!

Best regards;

The Nordic Thread Team