ESP32 USB Driver Guide
Before you can flash firmware to your ESP32, you need the correct USB-to-UART driver installed. Your board's USB chip determines which driver you need. This page auto-detects your OS and provides one-click downloads.
Step 1: Identify Your USB Chip
ESP32 boards use different USB-to-UART bridge chips. You need to know which one your board has before downloading the correct driver. Most ESP32 DevKit v1 boards use the CP2102 chip.
CP2102 Silicon Labs
Most common on genuine ESP32 DevKit v1 boards. Small black chip with "CP2102" or "CP2102N" printed on it. 28-pin QFN package.
CH340 WCH
Common on affordable clone boards. Small chip with "CH340G" or "CH340C" printed on it. 16-pin SOP package.
Not sure? Check the bottom of your ESP32 board. The USB chip is usually a small black rectangle near the USB port. Zoom in with your phone camera to read the text printed on it.
Step 2: Auto-Detect Your Chip
Connect your ESP32 to your computer via USB, then click the button below. We'll scan your system's serial ports to identify which chip your board uses.
Serial Port Scanner
Make sure your ESP32 is plugged in, then scan for connected devices.
Step 3: Download Drivers
Select your chip below and download the driver for your operating system. If you auto-detected your chip above, the recommended driver is highlighted.
CP2102 / CP2102N Driver Silicon Labs
For boards with the CP2102 USB-to-UART bridge chip
CH340 / CH341 Driver WCH
For boards with the CH340 USB-to-UART bridge chip
Step 4: Install the Driver
After downloading, follow the instructions for your operating system below.
Troubleshooting
Common issues and how to fix them.
Device Manager shows "Unknown Device"
You likely have the wrong driver installed, or no driver at all. Uninstall any existing COM port drivers from Device Manager, then install the correct driver for your chip (CP2102 or CH340).
No COM port appears after plugging in
Try a different USB cable — many cables are charge-only and don't have data lines. Also try a different USB port. If using a USB hub, connect directly to the computer instead.
Flashing fails with "Failed to connect" or "Timed out"
Put the ESP32 in download mode: hold the BOOT button on the board, press and release RESET, then release BOOT. The board should now accept firmware uploads.
macOS: "System Extension Blocked" after driver install
Go to System Settings → Privacy & Security. Scroll down and click "Allow" next to the blocked system extension from Silicon Labs or WCH. You may need to restart.
Linux: "Permission denied" when accessing serial port
Your user isn't in the dialout group. Run sudo usermod -a -G dialout $USER and log out/back in. As a temporary fix, run your flash command with sudo.
Windows: Driver install fails with "Hash not found"
This happens on Windows 10/11 with strict driver signing. Temporarily disable driver signature enforcement: Settings → Update & Security → Recovery → Advanced startup → Restart now → Troubleshoot → Startup Settings → Disable driver signature enforcement.
Board resets repeatedly when plugged in
This is often a power issue. Some boards draw too much current for the USB port. Try a powered USB hub, or a different USB port (USB 3.0 ports provide more power). Also check for solder bridges on the bottom of the board.
Quick Reference
Driver download links and common device identifiers at a glance.
| Chip | Manufacturer | Windows Port Name | macOS Device | Linux Device |
|---|---|---|---|---|
CP2102 |
Silicon Labs | COM3 (varies) |
/dev/cu.SLAB_USBtoUART |
/dev/ttyUSB0 |
CH340G |
WCH | COM3 (varies) |
/dev/cu.wchusbserial1420 |
/dev/ttyUSB0 |
CH340C |
WCH | COM3 (varies) |
/dev/cu.wchusbserial1420 |
/dev/ttyUSB0 |
ESP32-S2, ESP32-S3, ESP32-C3 boards have native USB — they don't need a USB-to-UART driver. These appear as /dev/ttyACM* on Linux and /dev/cu.usbmodem* on macOS. Flash them directly with the ESP Web Flasher or esptool.py.
Next Steps
Drivers installed? Here's what to do next.