Have a project in mind? Let's talk.

An ESP32-C6 Thread border router is an appealing piece of kit: one cheap SoC with Wi-Fi and an 802.15.4 radio, sitting between your Thread mesh and the rest of your network. The catch is that "one chip does both radios" is also its main limitation, and Espressif's own documentation is blunt about it. This guide walks through what a border router has to do, the hardware paths Espressif supports, the build flow, and the pitfalls that matter before you commit a design. Source
A Thread network cannot reach anything on its own. According to the OpenThread border router guide, a border router minimally provides four functions: bidirectional IP connectivity between the Thread mesh and Wi-Fi or Ethernet networks, bidirectional DNS-based service discovery using mDNS on the infrastructure side and SRP on the Thread side, Thread-over-infrastructure to merge partitions across IP links, and external commissioning so a phone can authenticate new devices onto the mesh. OpenThread's own implementation adds NAT64 for reaching IPv4 networks and DHCPv6 prefix delegation for obtaining routable IPv6 prefixes. Source
That list is why the border router is the piece to get right. Every cloud call, every Home Assistant automation and every firmware update for a Thread device crosses it. A border router that drops packets under load does not degrade one device; it degrades the whole mesh.
Espressif's OpenThread border router example in ESP-IDF spells out the topologies. The recommended Wi-Fi based setup uses two SoCs: an ESP32-series Wi-Fi chip running the ot_br example and an ESP32-H2, the 802.15.4-only chip, running the ot_rcp example as the radio co-processor. The same document says the example can run on a single SoC that has both Wi-Fi and Thread, such as the ESP32-C6, but warns that the C6 has only one RF path, so Wi-Fi and Thread cannot receive at the same time, which "has a significant impact on performance." Their recommendation is the two-SoC solution. Source
Read that caveat carefully, because it is the whole hardware decision. A single ESP32-C6 works, and for a bench prototype or a small home mesh it is the fastest way to have something running: one board, one firmware image, no inter-chip wiring. For anything that will carry steady traffic, the shared radio means every Wi-Fi receive window is a Thread receive blackout and vice versa. The two-SoC split, a C6 or S3 for Wi-Fi plus an H2 for 802.15.4, removes that contention for the price of a second low-cost chip. Source
Two more topologies are documented. An Ethernet based border router replaces the Wi-Fi backhaul with a wired connection using hardware like the ESP32-Ethernet-Kit or the ESP32-P4-Function-EV-Board, and Espressif sells an Ethernet daughter board for its Thread Border Router/Zigbee Gateway board. The ESP32-P4, which has no native Wi-Fi, can also run the border router with an ESP32-C6 as a Wi-Fi co-processor through the ESP-Hosted component. If the border router will sit near your router anyway, the Ethernet path avoids Wi-Fi congestion entirely. Source Source
The RCP split is also the architecture OpenThread itself recommends, for reasons beyond radio contention: the host processor gets more resources and better debugging tools, the 802.15.4 firmware stays minimal and stable, and the OpenThread stack integrates directly with the host's IPv6 networking. Source
Espressif's ESP Thread BR documentation walks through the build. You clone ESP-IDF (the guide pins release v5.5.4) and the esp-thread-br repository, then build from the basic_thread_border_router example. The default target is the ESP32-S3 on Espressif's Thread Border Router board, so on other hardware you set the target with idf.py set-target and adjust options in menuconfig. One version-specific note from the guide: the border router library fixes the LWIP_IPV6_NUM_ADDRESSES configuration, which changed from 8 to 12 in IDF v5.3.1 and later. Source
By default the example builds as a Wi-Fi based border router and does not start networking on its own. Enabling the automatic start mode makes the device join Wi-Fi and form the Thread network at boot, and in that mode the Thread operational dataset and Wi-Fi credentials come from menuconfig, with the caveat that credentials stored in NVS take precedence over the compiled-in ones. Plan your commissioning flow around that: a device that silently prefers old NVS credentials can look like it is ignoring your new configuration. Source
This is where the ESP Thread BR solution is unusually convenient. Espressif's documentation states that it exposes the same REST APIs as OpenThread border routers based on ot-br-posix, which makes it compatible with Home Assistant's existing OpenThread Border Router integration. The firmware needs the CONFIG_OPENTHREAD_BR_START_WEB option enabled to run its web server. Source
The documented flow: connect the border router, the Home Assistant hub and your phone to the same LAN, read the border router's IPv4 address from its boot log, then in Home Assistant add the OpenThread Border Router integration with that address, followed by the Thread integration. In the Thread integration you select the ESP Thread BR as the preferred network and use "Send Credentials to Home Assistant" so the hub stores the Thread credentials. After that, Thread-based devices, including Matter-over-Thread devices through the Matter integration, commission onto the mesh through the normal Home Assistant flow. Source
Radio coexistence is the first, covered above: on a single ESP32-C6 the shared RF path serializes Wi-Fi and Thread reception, which is why Espressif recommends two SoCs for real deployments. If you are prototyping on one C6, keep the traffic expectations modest and measure before you scale. Source
Addressing is the second. Thread is an IPv6 mesh, and your LAN is usually IPv4-centric. OTBR's NAT64 exists to bridge that gap, and the border router handles DNS-based discovery in both directions, mDNS on the LAN side and SRP on the Thread side. If devices are unreachable from the LAN even though the mesh looks healthy, discovery and NAT64 are the first places to look, not the radios. Source
Commissioning security is the third. External commissioning is how phones join devices to the mesh, and the Thread credentials you push to Home Assistant are the keys to that mesh. Treat the border router like any other networked device you own: it needs the same provisioning hygiene as the rest of your fleet. Our ESP32 secure provisioning guide covers the credential side, and if your Thread devices also talk MQTT upstream, ESP32 MQTT with TLS covers that hop. Power budget matters too for the battery devices behind the router: see ESP32 deep sleep power consumption.
For a fleet of battery-powered sensors or agent devices, Thread's appeal is the low-power mesh; the border router is the one always-on component. That argues for the boring choice: a two-SoC or Ethernet border router near reliable power and networking, commissioning through Home Assistant or your own OTBR-based tooling, and the single-C6 design reserved for prototypes and proofs of concept. The silicon cost difference is small; the debugging difference is measured in evenings. It also keeps your upgrade paths independent: the Wi-Fi firmware and the 802.15.4 RCP firmware can be updated on their own cadence instead of forcing one risky combined update on the device your whole mesh depends on.
Yes. Espressif's border router example supports running on a single SoC that has both Wi-Fi and Thread, and the ESP32-C6 qualifies. The same documentation warns that the C6 has one RF path, so Wi-Fi and Thread cannot receive simultaneously and performance suffers significantly, which is why the two-SoC setup is recommended for anything beyond prototyping. Source
An ESP32-series Wi-Fi SoC runs the ot_br border router example, and an ESP32-H2, Espressif's 802.15.4-only chip, runs the ot_rcp example as the radio co-processor. The H2 handles only the Thread radio while the Wi-Fi SoC runs the full OpenThread stack, which matches the RCP architecture OpenThread recommends. Source
Yes. The ESP Thread BR firmware exposes the same REST APIs as ot-br-posix based border routers, so Home Assistant's OpenThread Border Router and Thread integrations work with it directly, including transferring Thread credentials to the hub. The firmware's web server option, CONFIG_OPENTHREAD_BR_START_WEB, must be enabled. Source
Wi-Fi is the default backhaul and works for most setups. Ethernet is a documented option through boards like the ESP32-Ethernet-Kit or Espressif's Ethernet daughter board, and it removes the border router's Wi-Fi link as a congestion point. If the unit will sit next to your wired router anyway, Ethernet is the steadier choice. Source
OpenThread, "OpenThread Border Router" guide: https://openthread.io/guides/border-router
Espressif, ESP-IDF "OpenThread Border Router Example" README: https://github.com/espressif/esp-idf/blob/master/examples/openthread/ot_br/README.md
Espressif, ESP Thread BR "Build and Run" documentation: https://docs.espressif.com/projects/esp-thread-br/en/latest/dev-guide/build_and_run.html
Espressif, ESP Thread BR "Home Assistant Integration" codelab: https://docs.espressif.com/projects/esp-thread-br/en/latest/codelab/home_assistant.html
Ready to take the first step towards unlocking opportunities, realizing goals, and embracing innovation? We're here and eager to connect.