Co-Processor Designs

Co-Processor designs are supported by OpenThread. There are two main design architectures:

  • Radio Co-Processor (RCP) — Application layer and OpenThread core on the host processor, minimal OpenThread MAC on the 802.15.4 SoC. Communication between the RCP and the host processor is managed by OpenThread Daemon through an SPI interface over the Spinel protocol.
  • Network Co-Processor (NCP) — Application layer on the host processor, OpenThread features on the 802.15.4 SoC. Communication between the NCP and the host processor is managed by wpantund through a serial interface, typically using SPI or UART, over the Spinel protocol.

For more information on these designs, see Platform designs.

When building OpenThread examples, firmware images for your desired RCP or NCP design should automatically be created. For more information, see Binaries.

For downloads of select pre-built NCP firmware images, along with flashing instructions, see Pre-built NCP firmware.

Spinel protocol

Spinel is a general management protocol for enabling a host device to communicate with and manage a co-processor. Initially designed to support Thread-based NCPs, Spinel has been designed with a layered approach that allows it to be easily adapted to other network technologies in the future. It is used with both the RCP and NCP designs.

This protocol is included with OpenThread at /src/lib/spinel. A Python CLI tool called Pyspinel is available for testing purposes.

For more information, see the Internet-Draft for the Spinel Host-Controller Protocol.