Smart home gear keeps consolidating around the Matter smart home standard, and a lot of the newest devices run on Thread, a low-power mesh network that sits alongside your Wi-Fi instead of on it. Most ESP32 tutorials still assume a chip that can't join that mesh at all. That's a dead end if you want DIY gadgets to live alongside commercial Matter devices.
When I wrote about why not all ESP32 boards are the same, I recommended the Seeed XIAO ESP32-C6, and Matter is why. The C6 is the cheap, easy-to-find ESP32 board that does Zigbee, Thread, Wi-Fi, and Matter natively, and Espressif's Arduino core can now turn it into a Matter device with one sketch. So I put one on my Apple Thread network and into Home Assistant, and two things tripped me up along the way.
Most ESP32 boards can't join a Thread network
Matter works over Wi-Fi too, but Thread is where the small, low-power devices live
Matter is the language layer that defines what a light, plug, or sensor is and how controllers like Home Assistant or Apple Home talk to it. It runs over Wi-Fi, Ethernet, or Thread, and ESP32 boards have handled the Wi-Fi version for a while. I use two Apple TV 4K (Wi-Fi+Ethernet) and two HomePod Minis as border routers at home, mainly because they're never fully powered down.
Thread is the tricky part, because it needs an IEEE 802.15.4 radio, the same radio family Zigbee uses. The classic ESP32, the S3, and the C3 simply don't have one. You can make them Matter devices, but only over Wi-Fi.
That matters (sorry) for the kind of things people actually build with ESP32 boards. Door sensors, temperature probes, and buttons are exactly the small, often battery-powered devices Thread was designed for. Put them all on Wi-Fi instead, and every one becomes another client your router has to babysit, using a radio that's generally hungrier than the job needs.
Three radios on one cheap board
The ESP32-C6 packs 2.4 GHz Wi-Fi 6, Bluetooth 5 LE, and an 802.15.4 radio onto a single chip. Seeed's XIAO version squeezes that onto a thumb-sized 21 x 17.8 mm board with 512KB of SRAM, 4MB of flash, USB-C, and battery charging, according to Seeed's own documentation.
The Bluetooth radio isn't just a bonus, either. Matter devices are set up over Bluetooth LE, so your phone connects to the board, hands it the network credentials, and then gets out of the way. A Thread build uses Bluetooth to get set up, then lives on Thread from that point on.
One catch to keep in mind before you plan anything clever. The C6 runs Matter over Wi-Fi or Thread, not both at once, and Espressif's Arduino Matter documentation is explicit that you pick one per build. Two network radios, one job at a time.
Espressif's Matter library turns it into a sketch, not a project
You don't need ESP-IDF or the esp-matter SDK anymore, just the Arduino IDE
For a long time, Matter on an ESP32 meant setting up Espressif's ESP-IDF framework and the esp-matter SDK, which is a lot to ask for a weekend project. Now the Arduino ESP32 core ships a Matter library with ready-made device types. That covers lights, plugs, fans, thermostats, blinds, and many sensors.
It handles the setup flow, too. The sketch prints a QR code link and a pairing code to the serial monitor, and you scan that like any off-the-shelf Matter gadget. For my test, I combined two of Espressif's examples into a smart button: the BOOT button on the XIAO reports single, double, and triple taps plus a long press, and one line tells the board to use Thread instead of Wi-Fi.
Two Arduino IDE settings aren't optional. Set the partition scheme to Huge APP (3 MB No OTA / 1 MB SPIFFS), because the Matter stack is big, and my Thread build came out at 2.66MB. Then turn on Erase All Flash Before Sketch Upload, so leftover network or pairing data from an old sketch can't break setup.
I put a XIAO C6 on my Apple Thread network to prove it works
The radio side was easy, and Home Assistant's certificate check was not
My Thread network is all Apple: an Apple TV 4K and two HomePod minis acting as border routers, with Home Assistant running as a VM on my Proxmox server. My first upload went fine, except that it was the IDE's empty starter sketch, not mine. The giveaway was that the firmware came out at about a tenth of the size it should have been, so check which tab you have open before you hit Upload.
With the right sketch flashed, I scanned the pairing code from the Home Assistant Companion app on my iPhone, and the phone passed the board its Thread credentials over Bluetooth. The serial monitor reported the board was on the Thread network and paired. Then it sat there, waiting for a controller that never showed up.
Home Assistant's Matter Server log explained why. The board was using Espressif's test certificate, and Home Assistant refuses those by default. Retail Matter products carry production certificates, and hobby boards don't, so every DIY Matter device hits this wall.
The fix is one toggle. Go to Settings -> Apps -> Matter Server -> Configuration, turn on Enable test-net DCL usage, and save so the app restarts. It loosens the trust check for every device that Matter Server sets up, so treat it as a test-bench setting. After a reflash and a fresh pairing, Home Assistant's side of the handshake took about five seconds.
Every gesture lands as a proper button event, twice
Home Assistant turned the board into a button with an event entity, and every gesture came through with its own type: multi_press_1 for a tap, multi_press_2 for a double tap, multi_press_3 for a triple, and long_press for a hold. Single taps take a beat to arrive, because the board waits 400 milliseconds to see whether you're going for a double tap.
The one oddity is that Home Assistant records each gesture twice, a fraction of a millisecond apart. The board's serial log shows it sending each gesture once, so the duplicate comes from Home Assistant's side. A toggle automation runs twice and leaves the light exactly where it started, so give button automations a guard:
mode: single
max_exceeded: silent
Then end the automation's actions with a 500-millisecond delay. The duplicate arrives while the first run is still going, and Home Assistant quietly drops it.
You need a border router, and you probably already own one
Not every Apple TV is a border router, so check your model first
Thread devices reach the rest of your network through a border router, which bridges the mesh to your Wi-Fi and Ethernet. Many smart home hubs already do this. Home Assistant's Thread documentation lists the HomePod mini, the second-generation HomePod, the Nest Hub (2nd gen), Nest Hub Max, and Google TV Streamer, among others.
Apple TV is where people get caught out. The 2nd-generation Apple TV 4K and the 3rd-generation Wi-Fi + Ethernet model are border routers, but the 3rd-generation Wi-Fi-only model has no Thread radio. If that's your only Apple hub, you'll get all the way through setup before being told you need a border router.
Home Assistant also needs your Thread network credentials before a phone-based setup will work. In the Companion app, go to Settings -> Connectivity -> Thread and select Send credentials to Home Assistant.
When the C6 isn't the right ESP32
Displays, cameras, and Thread-only sensors have better options
The C6 is the right first board for Matter, but it isn't the answer to everything. These are the cases where I'd reach for something else:
- ESP32-S3: Displays, cameras, and anything that needs PSRAM belong here, which is why plenty of people argue your first ESP32 should be the S3. The XIAO ESP32-S3 has 8MB of PSRAM, but it only does Matter over Wi-Fi.
- ESP32-H2: If a sensor will only ever live on Thread, the H2 does Thread and Bluetooth with no Wi-Fi at all. That also means no Wi-Fi fallback if your border router setup goes sideways.
- ESP32-C5: The newer chip adds dual-band Wi-Fi 6 to Thread, and boards are easy to find now. Espressif's Matter library supports Thread through a Tools menu option, but most tutorials and examples still target the C6.
The ESP32-C6 is the cheapest way into Matter that doesn't paint you into a Wi-Fi corner
The ESP32 has always been the go-to board for DIY smart home gadgets, but most of them talk to a single hub over Wi-Fi instead of joining the Matter ecosystem directly. The C6 fixes that without asking you to learn a new framework. A sketch, a pairing code, and one Home Assistant toggle got mine onto the same Thread mesh as my store-bought gear.
Sure, the certificate wall and the double events are rough edges, but neither takes more than five minutes once you know about them. If you already have an Apple TV, HomePod mini, or Nest Hub doing border router duty, a XIAO ESP32-C6 is the obvious first board. The next step is a battery-powered sensor, because that's where Thread's low-power design should really earn its keep.
XIAO ESP32 C6
Start your smart home tinkering with this board so your projects aren't held back by a lack of wireless connectivity.





