OpenThread released by Google has been ported to several devices and platforms
by the OpenThread team, silicon vendors, and the community. Build examples for
all ported platforms are included in the [OpenThread
repository](https://github.com/openthread/openthread/tree/master/examples).

> [!NOTE]
> **Note:** If you are interested in porting OpenThread to a new platform, see the [Porting Guide](https://openthread.io/guides/porting) for hardware requirements and detailed porting instructions.

See [Search Vendors](https://openthread.io/vendors) for a searchable list of all vendor-supported
platforms and community ports.

## Support

Support for each platform varies over time. Some platforms are tagged with the
current level of support as identified by the OpenThread team. Untagged
platforms have not been recently tested and may be considered as having "Limited
Support."

| Support Level | Description |
|---|---|
| ![Supported](https://openthread.io/static/platforms/images/ot-support-full.png) | Full and basic support, as well as any Thread Certified Component that uses OpenThread. Many of these platforms have been tested and used by the OpenThread team, and are recommended for use in our demos and Codelabs. |
| ![Limited Support](https://openthread.io/static/platforms/images/ot-support-limited.png) | These platforms have not been fully tested and may be missing some key functionality. |
| ![Not Supported](https://openthread.io/static/platforms/images/ot-support-not.png) | Not currently supported and may have issues running OpenThread. Use at your own risk. |

## System architecture

[![OT System Architecture](https://openthread.io/static/platforms/images/ot-arch.png)](https://openthread.io/static/platforms/images/ot-arch_2x.png)

OpenThread is designed with portability and flexibility in mind. The code is
portable C/C++ (C99 and C++11) that's system architecture-agnostic due to a
narrow abstraction layer. This abstraction layer means that OpenThread can run
on either bare-metal or an OS. To date, OpenThread has been demonstrated to run
on FreeRTOS, RIOT-OS, Zephyr OS, Linux, and macOS.

OpenThread's portable nature makes no assumptions about platform features.
OpenThread provides the hooks to utilize enhanced radio and crypto features,
reducing system requirements, such as memory, code, and compute cycles. This can
be done per platform, while retaining the ability to default to a standard
configuration.

OpenThread has a configurable build system with which a developer can enable or
disable features as needed. Beyond the default GNU toolchain, the source is
designed to work with a number of other popular toolchains like IAR and Visual
Studio.

## Platform designs

OpenThread supports both system-on-chip (SoC) and network co-processor (NCP)
designs.

An SoC is a single-chip solution that has the combined RFIC (802.15.4 in the
case of Thread) and processor, where OpenThread and the application layer run on
the local processor.

An NCP design is where the application layer runs on a host processor and
communicates with OpenThread via a serial connection using a standardized
host-controller protocol we call [Spinel](https://openthread.io/guides/ncp#spinel_protocol). In
this design, OpenThread can run on either the radio or host processor.

### Single-Chip, Thread-Only (SoC)

[![OT SoC Architecture](https://openthread.io/static/platforms/images/ot-arch-soc.png)](https://openthread.io/static/platforms/images/ot-arch-soc_2x.png)

In this design, the application layer and OpenThread run on the same processor.
The application directly uses the OpenThread APIs and IPv6 stack.

This is the SoC design most commonly used for end devices. Because it is
highly integrated into a single silicon, it has the lowest cost and lowest power
consumption.

### Single-Chip, Multiple-Interface (SoC)

[![OT Multiple SoC Architecture](https://openthread.io/static/platforms/images/ot-arch-soc-multiple.png)](https://openthread.io/static/platforms/images/ot-arch-soc-multiple_2x.png)

When a SoC has multiple radios, such as 802.15.4 and Wi-Fi, or 802.15.4 and
Bluetooth Low Energy (BLE), the application layer and OpenThread still run on
the same processor. In the multiple-interface design, OpenThread leverages the
shared third-party IPv6 stack via a raw IPv6 datagram interface.

### Co-Processor Designs

OpenThread supports Radio Co-Processor (RCP) and Network Co-Processor (NCP)
designs. For more information, refer to
[Co-Processor Designs](https://openthread.io/platforms/co-processor).

## Open platform issues

The following issues are currently open for OpenThread platforms:
<iframe src="https:///frame/platforms/index_08ca66c4720bde9a7d0d69d6d276f455012010188be3ff6b117a2da66d949962.frame" class="framebox inherit-locale " allow="clipboard-write https://" allowfullscreen is-upgraded></iframe>