Network Co-Processor (NCP) designs are supported by OpenThread. There are two main design architectures:
- Standard NCP — Application layer on the host processor, OpenThread features on the 802.15.4 SoC
- Host / Controller — 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.
When building OpenThread, use the
option flags to create binaries for your desired NCP design. For more
information, see Configuration.
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.
For more information, see the Internet-Draft for the Spinel Host-Controller Protocol.
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 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.