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.