First flash on C3/C6 — and which USB port to use
The bring-up path for ESP32-C3-DevKitM-1 and ESP32-C6-DevKitC-1: the charging-cable trap, download mode, and the C6's two Type-C ports that look identical but do different jobs.
Question this page answers: "I have a C3-DevKitM-1 or C6-DevKitC-1 — how do I flash it for the first time, and (on the C6) which of the two USB ports do I plug into?"
Both boards start in the same place: Espressif's official ESP-IDF Get Started — both board guides hand you there for toolchain setup and the first example. This page covers the board-specific decisions the guides state.
Before you plug in: the cable trap
The C3 guide's own note: "Be sure to use an appropriate USB cable. Some cables are for charging only and do not provide the needed data lines nor work for programming the boards." A charge-only cable powers the board (LED on) and then flashing silently fails. Use a known data cable. Required hardware per the guides: USB 2.0 cable, Standard-A to Micro-B (C3) or Type-C (C6), and a computer running Windows, Linux or macOS.
C3-DevKitM-1: one port, no decision
Exactly one micro-USB port, wired through the USB-to-UART bridge (up to 3 Mbps). Power, flashing and serial console all go through it. The chip's native USB controller exists but is not wired to a connector — its D-/D+ sit on pins IO18/IO19 (J3 contacts 13/14); leave them alone unless you know why you're wiring them.
If auto-sync fails during flashing: hold BOOT, tap RST, release BOOT — Firmware Download mode, per the guide's component description.
C6-DevKitC-1: two ports that look identical, different jobs
| Port (guide's name) | Wired to | Officially used for |
|---|---|---|
| ESP32-C6 USB Type-C Port | the chip's USB Serial/JTAG controller (USB 2.0 full speed, ≤12 Mbps, no 480 Mbps mode) | power, flashing, CDC-ACM serial console, JTAG debugging |
| USB Type-C to UART Port | on-board USB-to-UART bridge (up to 3 Mbps) | power, flashing, serial communication via the bridge |
How to pick:
- Either port can power and flash the board — both roles are official. Start with either; if your tool cannot see the chip on one, try the other before assuming failure.
- Need the native CDC-ACM console or JTAG? Only the native port ("ESP32-C6 USB Type-C Port"). Per the ESP-IDF guide (v5.5.6), the controller's CDC-ACM portion implements a serial port connected directly to the host — no external USB-UART bridge involved — and it is a fixed-function USB device implemented entirely in hardware: it cannot be reconfigured to anything other than serial port and JTAG debugging, unlike the USB OTG controllers in some other ESP chips.
- Serial console the classic way? The UART-bridge port behaves like every other Espressif board.
- Silkscreen labels on the board identify which port is which — check the component diagram in the guide if unsure.
Download mode, if auto-sync fails: hold BOOT, tap RST (same pattern as C3; both guides describe the Boot button as the download button).
What to expect, and where failure exits
| Step | Expected | If it fails |
|---|---|---|
| USB connected | power LED lights (5 V on C3, 3.3 V on C6) — this only proves power, never data: a charge-only cable lights it too | no LED at all → check the cable/port; LED on but no device below → charge-only cable, swap for a known data cable |
| Serial/USB device appears on the computer | bridge (either board) or native device (C6 native port) | driver/toolchain setup — ESP-IDF Get Started |
| First flash (IDF example) | tool resets the chip, flashes, runs | hold BOOT + tap RST for manual download mode |
| RGB LED behavior | only lights if your firmware drives GPIO8 | the LED is addressable (WS2812-style), not on/off — see the board pages |
What this page cannot tell you
- Which physical port label your particular C6 board revision silkscreens — v1.1/v1.2 production differences are tracked by PW batch number, not port naming; the component diagram in each revision's guide is the reference.
- Windows driver specifics for the bridge chip — ESP-IDF Get Started territory.
Boards
- ESP32-C3-DevKitM-1 — header mapping, strapping pins, ordering variants.
- ESP32-C6-DevKitC-1 — v1.1/v1.2 revisions, J5 current measurement, strapping pins.
Sources
- ESP32-C3-DevKitM-1 User Guide (esp-dev-kits commit 1b4c83bc) — required hardware, cable note, power-supply options.
- ESP32-C6-DevKitC-1 v1.2 User Guide (esp-dev-kits commit 1b4c83bc) — the two USB ports' component descriptions and power-supply options.
- ESP32-C6 Series Datasheet v1.6 — USB Serial/JTAG Controller (USB 2.0 full speed) in the peripheral list.
- ESP-IDF v5.5.6: USB Serial/JTAG Controller Console (ESP32-C6) — CDC-ACM serial directly to the host without an external bridge; fixed-function hardware that cannot be reconfigured beyond serial port and JTAG debugging (unlike USB OTG).