ESP32 Bench
Boards: ESP32, S3, C3
Flash and monitor: Web Serial

Getting started

From a board in a bag to a board printing to your screen, in about fifteen minutes. Most first-day problems are a cable, a driver or a permission, and they are all covered here.

1. What you need

  • An ESP32 dev board. The ESP32-DevKitC, ESP32-S3-DevKitC-1 and ESP32-C3-DevKitM-1 are covered in detail on Boards, and most clones work the same way.
  • A USB data cable. Many cables in drawers are charge-only: the board lights up but no computer ever sees it. If nothing shows up, try another cable first.
  • Chrome, Edge or Opera on a desktop computer for the browser tools. Firefox and Safari cannot talk to serial ports.

2. Pick a board

BoardGood forWatch out for
ESP32 (classic)Most tutorials and libraries, Wi-Fi, Bluetooth Classic and BLE, touch pins.GPIO 34 to 39 are input only. A few pins set the boot mode.
ESP32-S3More pins and memory, native USB, cameras and displays.Two USB ports on many boards. Serial output may need USB CDC On Boot.
ESP32-C3Small and cheap, Wi-Fi and BLE, native USB.Fewer pins, no touch pins and no Bluetooth Classic.

3. Plug it in

Look at the small chip next to the USB socket. It decides which driver you need. ESP32-S3 and ESP32-C3 boards that use the chip's own USB need no driver at all.

Chip markingDriver
CP2102, CP2104Silicon Labs CP210x. Built into Linux; Windows usually fetches it automatically; otherwise install it from Silicon Labs.
CH340, CH343, CH9102WCH CH34x. Built into Linux and recent macOS; on Windows install it from WCH if the port does not appear.
No chip (S3, C3)Native USB. No driver on Windows 10 or 11, macOS or Linux.

Linux: permission to open the port

  1. Add yourself to the group that owns serial ports: sudo usermod -aG dialout $USER on Debian, Ubuntu and Fedora, or uucp instead of dialout on Arch.
  2. Log out and back in so the new group applies.
  3. On Ubuntu, if a CH340 board appears and vanishes at once, the braille display service has claimed it: sudo apt remove brltty.
  4. Chromium installed as a Snap needs serial access: sudo snap connect chromium:raw-usb.

4. Check it talks

  1. Open the Bench and press Connect.
  2. Pick the port: cu.usbserial or cu.usbmodem on a Mac, COM3 or similar on Windows, ttyUSB0 or ttyACM0 on Linux.
  3. Leave the speed at 115200 and press the board's EN or RST button. A few boot lines should appear, starting with rst:0x1 (POWERON_RESET).

Seeing those lines means the cable, driver and permissions all work. Want to try flashing before installing anything? The Detective and the ProbeHarbor probe flash straight from the browser.

5. Set up the Arduino IDE

  1. Install Arduino IDE 2 from arduino.cc.
  2. Open File, Preferences, and add this to Additional boards manager URLs:
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. Open Tools, Board, Boards Manager, search for esp32 and install esp32 by Espressif Systems. The projects here are written for version 3.
  4. Pick your board under Tools, Board, esp32: ESP32 Dev Module, ESP32S3 Dev Module or ESP32C3 Dev Module.
  5. On an S3 or C3 plugged into its native USB port, set Tools, USB CDC On Boot to Enabled, or nothing will print.

6. First upload

  1. Close the bench tab or press Disconnect. Only one program can own a serial port at a time.
  2. Open the Blink and heartbeat project, copy the sketch into the IDE and press Upload.
  3. If the upload stops at Connecting..., hold the BOOT button, tap EN, then let go of BOOT. Some boards need this every time.
  4. When it finishes, reconnect the bench at the project's speed and watch the heartbeat.

7. What next

  • Wi-Fi scanner and I2C scanner need no extra parts, or one sensor.
  • Not sure what to build? Tick your parts on the library page and let it pick.
  • Something went wrong? Paste the output into the error reference or the bench's crash translator.