Fix: ESP32-S3 not detected — no COM port on the USB socket
Your ESP32-S3 shows no port, or the port vanishes after upload. Use the right connector, force download mode with BOOT+RESET, and pick a safe USB Mode.
Community draft — report a mistake
What you see
Arduino IDE → Tools → Port: (greyed out)
Device Manager: no new device, or
Universal Serial Bus devices → "USB JTAG/serial debug unit" (no COM port)
Failed uploading: no upload port providedArduino IDE → Tools → Port: (greyed out) Device Manager: no new device, or Universal Serial Bus devices → "USB JTAG/serial debug unit" (no COM port) Failed uploading: no upload port provided
The ESP32-S3 can talk USB by itself, and many boards rely on that instead of a CH340 or CP2102 chip. The upside is no driver. The downside is that the COM port only exists while the running program, or the ROM bootloader, keeps USB alive.
When no port shows up, try the other socket if your board has one, then force the ROM bootloader with BOOT+RESET. The port appears there every time, and you can upload a sketch that keeps USB working.
Quick fix — try in order
- 1
Try the other USB-C socket
DevKitC-1 boards have two: “UART” (through a CH343/CP2102 chip — needs its driver) and “USB” (the S3's own port — no driver on Windows 10/11). One of them will show a port.
- 2
Force download mode
Hold BOOT, press and release RESET (or plug in while holding BOOT), release BOOT. The native USB port then always appears, whatever the sketch did.
- 3
Upload a simple sketch to recover
Once in download mode, upload Blink with Tools → USB Mode → Hardware CDC and JTAG and USB CDC On Boot → Enabled. Press RESET afterwards.
- 4
Install the CH343 driver for the UART socket
Newer DevKit clones use WCH's CH343 instead of CP2102. Windows 10 sometimes needs the CH343SER driver from wch-ic.com before a COM port shows.
- 5
Check the cable with a phone
A USB-C cable that only charges will light the board and show nothing else. Use one that can transfer files to a phone.
Why it happens
It showed up before I uploaded my sketch
The native USB port belongs to the running program. If your sketch crashes at boot, deep-sleeps, uses TinyUSB in a broken way or reconfigures GPIO19/20 (the USB D−/D+ pins), the port vanishes. BOOT+RESET bypasses the sketch.
Device Manager shows “USB JTAG/serial debug unit” but no COM port
Windows bound only the JTAG interface. Unplug, uninstall that device (tick delete driver), replug — Windows 10/11 then adds the CDC port with its built-in driver.
OTG mode
With Tools → USB Mode → USB-OTG (TinyUSB), the port only exists while your sketch runs its USB stack. For everyday work, Hardware CDC and JTAG is simpler.
Board-specific notes
ESP32-S3-DevKitC-1: Upload through UART while learning; switch to the USB socket when you need USB features. See the DevKitC-1 page.
XIAO ESP32S3: Only one USB-C socket (native). Hold B (BOOT), plug in, release — the port appears in download mode.
Drivers — official sources only
Did this fix it?
Thanks — that helps us keep this page right.