Google is committed to advancing racial equity for Black communities. See how.

Co-Processor Designs

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

  • Network Co-Processor (NCP) — Application layer on the host processor, OpenThread features on the 802.15.4 SoC
  • Radio Co-Processor (RCP) — Application layer and OpenThread core on the host processor, minimal OpenThread controller on the 802.15.4 SoC

Communication between the NCP and the host processor is via 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 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 an NCP. 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.

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.


OT wpantund Architecture

wpantund is a user-space network interface driver/daemon that provides a native IPv6 network interface to an NCP. It was written and developed by Nest Labs to better support Thread connectivity on Unix-like operating systems. It uses Spinel to communicate with an NCP.

wpantund is not included with OpenThread. For more information, see the wpantund GitHub repository.

SPI/HDLC adapter

spi-hdlc-adapter is a tool that presents an SPI interface as an HDLC-lite encoded asynchronous serial stream.

This tool is used to support hardware designs where the Linux host and OpenThread NCP are connected via SPI. The benefit of spi-hdlc-adapter is that wpantund can run unmodified as if it were communicating to the NCP through a standard serial connection.

spi-hdlc-adapter uses the SPI protocol outlined in Appendix A.2 of the Spinel Protocol Internet-Draft. For more information, see the README in the OpenThread GitHub repository.