Os designs de coprocessador são suportados pelo OpenThread. Ao construir exemplos OpenThread, uma imagem de firmware para cada projeto de coprocessador é criada automaticamente. Para obter mais informações, consulte Binários .
Coprocessador de Rádio (RCP)

Em um projeto RCP, o núcleo do OpenThread reside no processador host com apenas um "controlador" mínimo de camada MAC no dispositivo com o rádio Thread. O processador host normalmente não dorme nesse design, em parte para garantir a confiabilidade da rede Thread.
A comunicação entre o RCP e o processador host é gerenciada pelo OpenThread Daemon por meio de uma interface SPI sobre o protocolo Spinel.
A vantagem aqui é que o OpenThread pode utilizar os recursos do processador mais poderoso.
Esse design é útil para dispositivos menos sensíveis a restrições de energia. Por exemplo, o processador host em uma câmera de vídeo está sempre ligado para processar o vídeo.
O OpenThread Border Router suporta um design RCP. Para obter mais informações, consulte Roteador de borda OpenThread .
Para construir um RCP, consulte os seguintes Codelabs:
Construir uma rede Thread com o Thread Border Router nRF52840
Coprocessador de rede (NCP)

O design NCP padrão possui recursos de Thread no SoC e executa a camada de aplicativo em um processador host, que normalmente é mais capaz (mas tem maiores demandas de energia) do que o dispositivo OpenThread.
A comunicação entre o NCP e o processador host é gerenciada pelo wpantund
através de uma interface serial, normalmente usando SPI ou UART, sobre o protocolo Spinel.
O benefício desse design é que o host de maior potência pode dormir enquanto o dispositivo OpenThread de menor potência permanece ativo para manter seu lugar na rede Thread. E como o SoC não está vinculado à camada de aplicativos, o desenvolvimento e o teste de aplicativos são independentes da compilação do OpenThread.
Esse design é útil para dispositivos de gateway ou dispositivos que possuem outras demandas de processamento, como câmeras IP e alto-falantes.
Protocolo Spinel
Spinel é um protocolo de gerenciamento geral para permitir que um dispositivo host se comunique e gerencie um coprocessador. Inicialmente projetado para suportar NCPs baseados em Thread, o Spinel foi projetado com uma abordagem em camadas que permite que ele seja facilmente adaptado a outras tecnologias de rede no futuro. É usado com os projetos RCP e NCP.
Este protocolo está incluído no OpenThread em /src/lib/spinel
. Uma ferramenta Python CLI chamada Pyspinel está disponível para fins de teste.
Para obter mais informações, consulte o Internet-Draft for the Spinel Host-Controller Protocol .