“ESP32 driver” is the wrong search, because there is no such thing: the ESP32 itself never talks USB on most boards. A separate bridge chip on the board does, and that chip decides which driver you install and what Device Manager calls the port. This page names the chip on 25 common boards, straight from each maker’s schematic or product page, and gives the driver for each.
⬇ The driver for each USB chip (hosted mirrors and official links)
Download CP210x driver (CP2102, CP2102N, CP2104)
Download CH340 driver (CH340C, CH340G)
CH9102F / CH343: a different WCH package, CH343SER, from wch-ic.com; version table and Device Manager names in the CH9102 and CH343 guide. FT231X / FT2232HL: FTDI’s VCP driver, see the FT232 driver guide. Native USB (ESP32-S2/S3/C3/C6): nothing to download on Windows 10 and 11; the chip enumerates as a CDC serial device by itself, details below.
Which chip is on your board: 25 boards, from the schematics
Every row below was checked against the maker’s own schematic PDF or product page, linked in the last column. “Native” means the USB connector is wired straight to the ESP32-S2, S3, C3 or C6 and there is no bridge chip at all. Where a board has two USB connectors, the row says which one is which.

| Board | USB chip | Connector | Driver | Buttons | Source |
| ESP32-DevKitC V4 (Espressif) | CP2102N | Micro-USB | CP210x | Boot + EN | schematic |
| ESP32-DevKitM-1 (Espressif) | CP2102N | Micro-USB | CP210x | Boot + Reset | schematic |
| ESP32-PICO-KIT v4 / v4.1 | CP2102 (v4) / CP2102N (v4.1) | Micro-USB | CP210x | Boot + EN | user guide |
| ESP-WROVER-KIT v4.1 | FT2232HL (channel A = JTAG, channel B = serial) | Micro-USB | FTDI VCP | Boot + EN | user guide |
| ESP32-S2-Saola-1 | CP2102N | Micro-USB | CP210x | Boot + Reset | schematic |
| ESP32-S3-DevKitC-1 v1.1 | CP2102N on the port marked UART; native USB on the port marked USB | 2 × Micro-USB | CP210x / none | Boot + Reset | schematic |
| ESP32-S3-DevKitM-1 | CP2102N on UART port; native USB on USB port | 2 × Micro-USB | CP210x / none | Boot + Reset | schematic |
| ESP32-C3-DevKitM-1 | CP2102N | Micro-USB | CP210x | Boot + Reset | schematic |
| ESP32-C3-DevKitC-02 | CP2102N | Micro-USB | CP210x | Boot + Reset | schematic |
| ESP32-C6-DevKitC-1 v1.4 | CP2102N on the UART port; native USB on the other | 2 × USB-C | CP210x / none | Boot + Reset | schematic |
| NodeMCU-32S (ESP-32S module) | CP2102 | Micro-USB | CP210x | 2 keys (reset, user) | product page |
| DOIT ESP32 DevKit V1 and its clones | CP2102 on the original; CH340 on many clones | Micro-USB | CP210x or CH340: read the Hardware Ids | BOOT + EN | board database |
| ESP32-CAM (Ai-Thinker) | none on the board; the ESP32-CAM-MB shield adds a CH340C | none / Micro-USB on the shield | CH340 (shield) or your own adapter | no Boot button: IO0 to GND | Zephyr board doc, MB listing |
| LOLIN D32 (WEMOS) | CH340C | Micro-USB | CH340 | Reset only; auto-flash transistors | schematic |
| LOLIN S2 mini | native (ESP32-S2 GPIO19/20) | USB-C | none | 0 + RST | schematic |
| LOLIN C3 mini v2.1 | native (ESP32-C3 GPIO18/19) | USB-C | none | EN + IO9 (Boot) | schematic |
| LilyGo TTGO T-Display | CP2104 on the published schematic; the README links both CP21xx and CH9102 drivers, so later batches differ | USB-C | CP210x or CH343SER | GPIO0 + GPIO35 buttons | repo + schematic |
| LilyGo T-Display-S3 | native (ESP32-S3) | USB-C | none | BOOT + RST | README |
| Heltec WiFi LoRa 32 V3 | CP2102 (“Integrated CP2102”; V4 “Removed CP2102”) | USB-C | CP210x | — | Heltec docs |
| M5Stack Basic v2.7 | CH9102F | USB-C | CH343SER | no Boot button listed | M5Stack docs |
| M5Stack Core2 | CP2104 or CH9102F (“two chip versions”) | USB-C | CP210x or CH343SER | no Boot button listed | M5Stack docs |
| Adafruit HUZZAH32 / Feather ESP32 V2 | CP2104 (original) / CH9102F (V2, after CP2104 went obsolete) | Micro-B / USB-C | CP210x / CH343SER | V2: Reset + user (I38) | Adafruit guide |
| SparkFun ESP32 Thing | FT231X | Micro-B | FTDI VCP | 0 | hookup guide |
| SparkFun Thing Plus (WROOM) / Thing Plus C | CP2104 / CH340C | Micro-B / USB-C | CP210x / CH340 | BOOT (GPIO0) + RST | guide, Thing Plus C |
| Seeed XIAO ESP32C3 | native (USB-C wired to the C3’s USB pins) | USB-C | none | BOOT + RESET | schematic |
| Arduino Nano ESP32 | native (ESP32-S3), USB ID 2341:0070 | USB-C | none | RESET | boards.txt (nano_nora) |
| ESP32-C3 SuperMini (no-name) | native (ESP32-C3) | USB-C | none | BOOT + RESET | board database |
The pattern: every Espressif kit is a CP2102N (the WROVER-KIT is the lone FT2232HL), the WCH parts live on WEMOS, M5Stack, SparkFun’s USB-C board and the Feather V2, and a single-USB-C board built on an S2, S3, C3 or C6 is usually native. The one you cannot trust by name is the no-brand “ESP32 DevKit V1”: CP2102 on the original, CH340 on the copies. Hardware Ids settle it in 20 seconds.
What Device Manager shows, by chip
| Chip | Hardware Id | Name in Device Manager (driver installed) | Driver package |
| CP2102, CP2102N, CP2104 | USB\VID_10C4&PID_EA60 |
Silicon Labs CP210x USB to UART Bridge (COMx) | CP210x Universal Windows Driver |
| CH340C, CH340G | USB\VID_1A86&PID_7523 |
USB-SERIAL CH340 (COMx) | CH341SER |
| CH9102F | USB\VID_1A86&PID_55D4 |
USB-Enhanced-SERIAL CH9102 (COMx) | CH343SER |
| CH343 | USB\VID_1A86&PID_55D3 |
USB-Enhanced-SERIAL CH343 (COMx) | CH343SER |
| FT231X / FT2232HL | USB\VID_0403&PID_6015 / PID_6010 |
USB Serial Port (COMx) | FTDI VCP |
| Native USB Serial/JTAG (S3, C3, C6) | USB\VID_303A&PID_1001 |
“USB JTAG/serial debug unit” under Universal Serial Bus devices, plus USB Serial Device (COMx) under Ports | none (Windows class drivers) |
The IDs come from the kernel driver tables and Espressif’s PID list, collected with sources in the USB VID/PID lookup for bench tools. To read yours: Device Manager → the device (even if it is under Other devices with a yellow mark) → Properties → Details → Property: Hardware Ids. Match the VID_ and PID_ to the table, install that package, replug.
Native USB boards: the two-port trap and “USB CDC On Boot”
On an ESP32-S3-DevKitC-1 or C6-DevKitC-1 there are two connectors. The one labelled UART goes through the CP2102N and behaves like any classic ESP32 board. The one labelled USB goes straight to the chip’s USB Serial/JTAG controller, which Espressif describes as a CDC-ACM device that shows up as a COM port on Windows, /dev/ttyACM* on Linux and /dev/cu* on macOS, with no driver to install (ESP-IDF, USB Serial/JTAG Controller Console). Espressif’s own guide still says to use the UART port for most work, because “connection using ESP32-S3 USB Port is not fully implemented in software” (user guide v1.1).
Two things bite on single-connector native boards (XIAO, LOLIN C3/S2 mini, T-Display-S3, SuperMini):
- The port disappears when the sketch runs. The USB Serial/JTAG device is part of the chip, so if the firmware reconfigures the USB pins, enters deep sleep or crashes early, “the device disappears from the system” (same ESP-IDF page). Holding BOOT and tapping RESET brings the ROM’s USB back, every time: that is why the LilyGo README gives exactly that sequence for the T-Display-S3.
- Upload works, Serial Monitor is blank. In the Arduino IDE the
Serialobject only goes to native USB when Tools → USB CDC On Boot is Enabled; with it disabled the output goes to UART0, which has no connector on these boards. SparkFun’s forum thread on a Thing Plus ESP32-S3 (25 Mar 2025) was closed by that single setting.
Common problems
Nothing at all appears in Device Manager when you plug in. Windows has not even seen a device, so no driver will help: charge-only cable first, dead bridge chip second. The Unknown USB Device guide walks the enumeration steps that happen before any driver loads.
“USB2.0-Serial” with a yellow mark. A CH340 board without its driver, typically a DevKit V1 clone. Install CH341SER and replug; if Device Manager says CH340 instead of CH340G after that and uploads fail, read the counterfeit section of the CH340 guide.
Native USB board shows “USB Serial Device” only while holding BOOT. The firmware is killing the USB peripheral. In a PlatformIO thread on a Waveshare ESP32-S3 display (July 2026) the UART side enumerated as CH343 (COM5) all the time, the native side only in BOOT mode as COM4, and the culprit was the display library’s board init, not a driver. Flash a blank sketch with USB CDC On Boot enabled to prove the hardware.
Port is there, upload says “Failed to connect” or “Wrong boot mode detected”. The driver is fine; the chip did not enter download mode. On an Espressif kit the auto-program transistors do it (see the schematic above); on clones hold Boot through “Connecting…”. The strap bits and every cause are in ESP32 “Wrong boot mode detected (0x13)”.
ESP32-CAM: no port, ever. There is no USB on the module. Use the ESP32-CAM-MB shield (CH340C) or any 3.3 V adapter, TX↔RX, IO0 to GND during reset, as the Zephyr board page lays out; the esptool walkthrough covers the manual reset dance.
FAQ
Do I need a driver for an ESP32-S3 or C3 board on Windows 11? Not for the native USB port: it enumerates with Windows’ built-in CDC and WinUSB class drivers. If the board also has a UART port, that side needs the CP210x or CH343 package like any other board.
My board says CP2102 on the listing but Device Manager shows CH340. Was I scammed? Probably just a different batch. Several makers switched silently when CP2104 went end-of-life (Adafruit says so outright for the Feather V2, M5Stack ships Core2 with either). Trust the Hardware Id, not the listing.
Related guides
- CP2102 driver for Windows and CP210x on macOS and Linux
- CH340 driver · CH9102 / CH343 driver · FTDI FT232 driver
- Arduino IDE 2: port not showing · ESP32 Flash Download Tool · ESP-IDF install
Sources
- Espressif schematics: ESP32-DevKitC V4, DevKitM-1, S2-Saola-1, S3-DevKitC-1, S3-DevKitM-1, C3-DevKitM-1, C3-DevKitC-02, C6-DevKitC-1 v1.4, ESP-WROVER-KIT v4.1
- Espressif user guides: ESP32-PICO-KIT, ESP32-S3-DevKitC-1 v1.1, ESP32-C6-DevKitC-1; USB Serial/JTAG Controller Console; USB-Serial-JTAG driver installation (ESP-Techpedia); espressif/usb-pids (VID 303A)
- WEMOS schematics: D32 v1.0.0, S2 mini, C3 mini v2.1.0
- LilyGo TTGO T-Display and T-Display-S3; Heltec WiFi LoRa 32; M5Stack Basic v2.7 and Core2; Adafruit ESP32 Feather V2; SparkFun ESP32 Thing, Thing Plus, Thing Plus C; Seeed XIAO ESP32C3 schematic; arduino-esp32 boards.txt; NodeMCU-32S; Zephyr: Ai-Thinker ESP32-CAM; espboards.dev: DOIT DevKit V1 (community database, used only for the clone note)
- Threads: SparkFun forum, no serial output (Mar 2025); PlatformIO, upload/monitoring via USB on ESP32-S3 (Jul 2026); Arduino forum, ESP32-S3 Serial Monitor not working (Feb 2025)
