ESP32-C6 Reality Check
I was lucky enough to get a couple of ESP32-C6 devkits through AliExpress when Espressif recently made them available. If you’re thinking about getting one there are a few things you should know.
What Is The ESP32-C6?
The ESP32-C6 is Espressif’s first CPU with WiFi 6 support and first available CPU with an 802.15.4 radio, supporting Zigbee and Thread as well as Bluetooth. It’s a single core, 32 bit 160MHz RISC-V CPU with the usual complement of I2C, SPI, UART and other GPIO functions. Think of it as an ESP32-C3 with updated radio support that allows Zigbee and Thread.
The ESP32-C6’s datasheet is available from Espressif.
Samples vs Shipping Product
I was able to buy two of the ESP32-C6 DevKitC-1 samples. These are slightly different from the expected final product. The biggest difference is a jumper on the board - J5 - which provides access to measure current draw by the hardware.
The DevKitC-1 board includes both native USB support (CDC/serial mode only), and a CP2102N USB/UART chip, both with USB-C connectors and both able to power the board.
2.4GHz WiFi 6 Support
I’ve seen folks confused by WiFi 6 support: the C6 supports WiFI 6 - 802.11ax - but only in the 2.4GHz band, so don’t expect 5GHz (or 6GHz) radio support or performance. The main thing you’ll get from 802.11ax is improved power usage and low power modes, which should help battery operated projects.
Requires ESP-IDF 5.1
ESP-IDF 5.1 will include “initial support for the ESP32-C6 chip”. Unfortunately, it’s not available yet. At the time that I wrote this, ESP-IDF was still on version 5.0.
The master branch of ESP-IDF does have preliminary ESP32-C6 support in it. You can build C6 firmware today by using an up-to-date copy of the master branch and running
idf.py --preview set-target esp32c6
Initially No Simultaneous Radio Use
According to Espressif’s notes, ESP-IDF 5.1 will not support radio “coexistence”. On other ESP32 models, coexistence allows you to use Bluetooth, Wifi and ESP-NOW at the same time by parceling out time on the radio to each service. This isn’t currently supported on the ESP32-C6.
This means that although the C6 supports Thread and Zigbee, you won’t be using it to build a Thread Border Router or to act as a WiFi Zigbee hub at this time.
A Thread Border Router is a very limited IPv6 router that routes traffic between a Thread network and another Internet (IPv6) network. In order for it to operate, the border router must be able to use its Thread radio and another network interface simultaneously. ESP-IDF 5.1 does not currently support this. While it does include support for SPI ethernet devices, which potentially could allow an ethernet/Thread Border Router, it explicitly does not include Border Router support.
I’m sure that a future release of ESP-IDF will support coexistence; just don’t expect it to be working now.
No Arduino Support Yet
Don’t expect Arduino support anytime soon. Arduino updates usually lag ESP-IDF releases by quite a bit. The latest Arduino core release, 2.0.6, is still based on ESP-IDF 4.4.3; moving to 5.x might be a larger undertaking than usual.
Add to that the fact that there are currently no Arduino-style software interfaces for Zigbee or Thread support, so when the Arduino core does initially support that ESP32-C6, it may yet include support for its new radio protocols.
From Espressif’s notes:
- the ADC is not calibrated, which means that it won’t be as accurate as it might be
- the software may not yet support deep and light sleep modes
First Software builds
I was able to build and run the blink example in ESP-IDF.
I was also able to build and run the OpenThread CLI example, which was very encouraging. Although its README didn’t mention the C6, it built and ran without modification.
I was able to scan for Thread networks and see Nest Protect’s Thread network and the Thread network used by our Apple gear. Now if I could find a way to provision Thread devices to the Apple network I’d be even happier.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | PAN | MAC Address | Ch | dBm | LQI | +------+------------------+----+-----+-----+ | 6152 | 18b43000002cXXXX | 23 | -53 | 0 | Nest Protect | 6152 | 18b43000002cXXXX | 23 | -55 | 0 | | 6152 | 18b43000002cXXXX | 23 | -69 | 0 | | 6152 | 18b43000002cXXXX | 23 | -76 | 0 | | 6152 | 18b43000002cXXXX | 23 | -53 | 0 | | 6152 | 18b43000002bXXXX | 23 | -73 | 0 | | 6152 | 18b43000002fXXXX | 23 | -56 | 0 | | 6152 | 18b43000002cXXXX | 23 | -38 | 0 | | a8f1 | 964a0d2c1a85YYYY | 25 | -47 | 0 | | a8f1 | c67a880f96a7YYYY | 25 | -41 | 0 | | a8f1 | 86efff4254ceYYYY | 25 | -60 | 0 | | a8f1 | 76670b06a333YYYY | 25 | -45 | 0 | | a8f1 | b6dce50debcbYYYY | 25 | -47 | 0 | Eve Energy
I was also able to build the Zigbee light example.
Who Should Get This?
If you’re not prepared to build software using ESP-IDF without a lot of handholding and tutorials, you should not get an ESP32-C6 board at this time.
If you need to use the Arduino core, get ready to wait for a while for initial support, then wait longer for it to be stable, then wait longer for Arduino-style interfaces to Thread and Zigbee.
You should also not get them if you need radio coexistence, deep or light sleep, or calibrated ADC to work at this time. I’m sure these are all coming but there’s not an established timeframe for them yet.
If you need to get a leg up on Thread or Zigbee development in an ESP32 context, then you can do that today with these chips and the live version of ESP-IDF.
Be sure to use Espressif’s official store if you order through AliExpress. You may also be able to find samples at Adafruit.