Documentation

ShillehTek Pre-Soldered XIAO Seeed ESP32-C6 Development Board USB-C Cable Pro Module | ShillehTek Product Manual
Documentation / ShillehTek Pre-Soldered XIAO Seeed ESP32-C6 Development Board USB-C Cable Pro Module | ShillehTek Product Manual

ShillehTek Pre-Soldered XIAO Seeed ESP32-C6 Development Board USB-C Cable Pro Module | ShillehTek Product Manual

Overview

The Seeed Studio XIAO ESP32-C6 is the newest Wi-Fi flavor of the XIAO family, built around Espressif's ESP32-C6 — the first ESP chip to support Wi-Fi 6, Zigbee 3.0, Thread 1.3, and Bluetooth 5.3 LE. That radio combination makes it Matter-ready: a single board can join Apple Home, Google Home, Amazon Alexa, and Samsung SmartThings without bridges or extra hardware.

Despite the radio horsepower, the form factor is tiny — 21 × 17.5 mm, the same as every other XIAO. You get 11 GPIOs, 4 ADC channels, hardware I2C, SPI, UART, low-power I2C, SDIO, and an integrated U.FL connector for an external 2.4 GHz antenna. USB-C handles power and programming; on-board RESET and BOOT buttons make recovery painless.

Program it with Arduino IDE (esp32 core 3.x and up), MicroPython, or ESP-IDF 5+. For Matter projects, the ESP-IDF Matter SDK is the right path. For battery-powered Zigbee or Thread sensors, the C6's deep-sleep current is in the microamp range — perfect for years-long coin-cell-powered devices.

At a Glance

MCU
ESP32-C6
Core
RISC-V @ 160 MHz
Wireless
Wi-Fi 6 + BLE 5.3 + Zigbee + Thread
Flash / SRAM
4 MB / 512 KB
GPIO
11 pins (D0-D10)
Logic Voltage
3.3V

Specifications

Parameter Value
Microcontroller ESP32-C6 (single-core 32-bit RISC-V high-perf core)
Maximum Clock 160 MHz (HP core) + 20 MHz LP core
Flash Memory 4 MB
SRAM 512 KB
Wi-Fi 2.4 GHz IEEE 802.11ax (Wi-Fi 6) + 802.11 b/g/n
Bluetooth BLE 5.3
802.15.4 Zigbee 3.0 + Thread 1.3 (Matter-ready)
USB USB-C (Native USB Serial/JTAG)
GPIO 11 pins (D0-D10)
Analog Input A0, A1, A2 (12-bit ADC)
Standard I2C SDA=D4 (GPIO22), SCL=D5 (GPIO23)
Low-Power I2C LP_SDA=GPIO6, LP_SCL=GPIO7 (back side)
SPI SCK=D8 (GPIO19), MISO=D9 (GPIO20), MOSI=D10 (GPIO18)
UART TX=D6 (GPIO16), RX=D7 (GPIO17)
SDIO 4-bit SDIO on D3-D5, D8-D10
JTAG (MTDO/MTDI/MTCK/MTMS) GPIO5/4/6/7 on back pads
Antenna On-board PCB + IPEX U.FL
Battery Input BAT pads on the back (3.7V LiPo)
Dimensions 21 × 17.5 mm

Pinout Diagram

XIAO ESP32-C6 pinout diagram showing the front side with D0-D10 pins, analog A0-A2, I2C SDA on D4 and SCL on D5, UART TX/RX on D6/D7, SPI on D8/D9/D10, the SDIO functions, and the back side with BOOT, JTAG (MTDO MTDI MTCK MTMS), and low-power LP I2C and LP UART pins

Wiring Guide

Power and Programming

USB-C handles 5V power and code upload through the native USB Serial/JTAG controller. A 3.7V LiPo cell can be soldered to the BAT pads underneath.

Pin Function Notes
USB-C 5V power + flashing JTAG also exposed over USB
5V +5V input/output Pass-through from USB-C
3V3 3.3V regulator output ~700 mA available
GND Ground
BAT pads 3.7V LiPo input On-board charging from USB-C
Tip: If a flash fails, hold BOOT, tap RESET, release BOOT to enter the ROM bootloader. Once the first upload succeeds, automatic-reset usually works.
Warning: All GPIO pins are 3.3V. Connecting a 5V signal directly will damage the chip — use a level shifter for 5V sensors.

External LED + Button

The XIAO ESP32-C6 doesn't expose a user LED on a clean GPIO. Add an external LED on a free GPIO via a 220Ω resistor.

Component XIAO Pin Details
LED + 220Ω → GND D0 (GPIO0) Anode to GPIO, cathode to GND through resistor
Button → GND D1 (GPIO1) Use INPUT_PULLUP

I2C Devices

Standard I2C is on D4 (SDA) and D5 (SCL). The Wire library on the ESP32 Arduino core picks these up by default.

Sensor Pin XIAO ESP32-C6 Pin
VCC 3V3
GND GND
SDA D4 (GPIO22)
SCL D5 (GPIO23)
Info: The C6 also has a low-power I2C peripheral (LP_I2C) on the back-side LP_GPIO6/LP_GPIO7 pads. It can run while the main core sleeps — useful for ultra-low-power sensor polling.

SPI Devices

SPI is on D8 (SCK), D9 (MISO), D10 (MOSI). Pick any free GPIO for CS — D7 is a common choice.

SPI Signal XIAO Pin GPIO
SCK D8 GPIO19
MISO D9 GPIO20
MOSI D10 GPIO18
CS D7 GPIO17 (or any free GPIO)

UART / Serial

D6 is TX and D7 is RX for Serial1. The USB-C port acts as default Serial for the Arduino IDE Serial Monitor.

UART Signal XIAO Pin GPIO
TX (Serial1) D6 GPIO16
RX (Serial1) D7 GPIO17
Serial Monitor USB-C Native USB CDC

Code Examples

Arduino — External LED Blink

xiao_c6_blink.ino
// XIAO ESP32-C6 - Blink an external LED on D0
// Board: "XIAO_ESP32C6" in the Arduino IDE (esp32 core v3+)

#define LED_PIN D0   // GPIO0

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Arduino — Wi-Fi 6 Connect

xiao_c6_wifi.ino
// XIAO ESP32-C6 - Connect to Wi-Fi (802.11ax/n/g/b)
// Replace YOUR_SSID / YOUR_PASS with your credentials.

#include <WiFi.h>

const char* ssid     = "YOUR_SSID";
const char* password = "YOUR_PASS";

void setup() {
  Serial.begin(115200);
  delay(500);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print('.');
  }
  Serial.println();
  Serial.printf("Connected, IP = %s\n", WiFi.localIP().toString().c_str());
  Serial.printf("RSSI: %d dBm\n", WiFi.RSSI());
}

void loop() {
  delay(10000);
  Serial.printf("Heap: %u  RSSI: %d\n", ESP.getFreeHeap(), WiFi.RSSI());
}

Arduino — BLE 5.3 Beacon

xiao_c6_ble_beacon.ino
// XIAO ESP32-C6 - Simple BLE Advertise (5.3 LE)
// Uses NimBLE-Arduino: install from Library Manager.

#include <NimBLEDevice.h>

void setup() {
  Serial.begin(115200);
  NimBLEDevice::init("ShillehTek-C6");

  NimBLEAdvertising* adv = NimBLEDevice::getAdvertising();
  adv->setName("ShillehTek-C6");
  adv->start();
  Serial.println("Advertising...");
}

void loop() {
  delay(1000);
}

MicroPython — Wi-Fi Scan

xiao_c6_scan.py
# XIAO ESP32-C6 - MicroPython Wi-Fi Scan
# Requires the official MicroPython ESP32-C6 firmware.

import network
import time

wlan = network.WLAN(network.STA_IF)
wlan.active(True)

print("Scanning Wi-Fi...")
networks = wlan.scan()
for ssid, bssid, channel, rssi, security, hidden in networks:
    print("{:32}  ch{:2}  {:4} dBm".format(ssid.decode(), channel, rssi))

Frequently Asked Questions

What's special about Wi-Fi 6 on this board?
Wi-Fi 6 (802.11ax) brings TWT (Target Wake Time) which dramatically lowers power consumption for battery-powered IoT devices. It also supports OFDMA and BSS coloring, making the radio more efficient in dense networks. Throughput-wise, on an ESP32-C6 you'll see modest improvements over Wi-Fi 4/5; the real win is power efficiency.
Can I use it for Matter (Apple Home, Google Home, Alexa)?
Yes. The C6 supports Matter over both Wi-Fi and Thread — making it one of the cheapest paths to a Matter-compatible accessory. Use the ESP-IDF Matter SDK (espressif/esp-matter on GitHub) to build the firmware. Once provisioned, your device shows up in any Matter-compatible smart home app.
What are Zigbee 3.0 and Thread used for?
Both are low-power 802.15.4 mesh-networking protocols common in smart-home hardware. Zigbee 3.0 is widely used by Hue, IKEA Trådfri, and SmartThings devices. Thread is the basis of Matter's IoT mesh. The C6's radio supports both, so you can build a sensor that talks to a Zigbee hub, or a node that joins a Thread network.
Why is there a "low-power I2C" port?
The ESP32-C6 has a separate Low-Power (LP) co-processor that can run while the main core is asleep. The LP_I2C peripheral lets the LP core poll a sensor every few seconds without waking the entire chip. That's how you build a battery sensor that lasts months on a coin cell.
How do I switch to the external antenna?
The XIAO ESP32-C6 ships with the on-board PCB antenna selected by default. To switch to the U.FL/IPEX connector, reflow a 0Ω jumper resistor on the back side (refer to the Seeed wiki — there's a labeled antenna-select pad). Then plug in any 2.4 GHz IPEX antenna.
How is it different from XIAO ESP32-C3 / S3?
C3 = Wi-Fi 4 + BLE 5.0, single-core RISC-V, smallest and cheapest. S3 = Wi-Fi 4 + BLE 5.0, dual-core Xtensa with 8 MB PSRAM, best for AI/audio. C6 = Wi-Fi 6 + BLE 5.3 + Zigbee + Thread, single-core RISC-V — best for smart home and Matter projects.
Which Arduino core version do I need?
You need esp32 core v3.0.0 or later for full ESP32-C6 support. Earlier cores will not see the board correctly. Update via the Arduino IDE Boards Manager — search for "esp32 by Espressif Systems" and install the latest version.