This is the setup guide to read before your first ESP32 project. Follow it once, in order, and you will have Arduino IDE ready to upload code to almost any ESP32 board.
You will install Arduino IDE 2, add the ESP32 board package from Espressif, pick your board and port, and upload the Blink sketch to prove it works. The whole setup takes about 15 minutes on a normal connection, plus the board package download.
I have set this up on more than one computer now, and the same two mistakes keep coming up. The first is a charge only cable. The second is the old board manager address from an old tutorial. This guide avoids both.
If you already set up Arduino IDE for ESP32 a year ago, read the What changed in 2026 section first. The board package is now version 3, and the old board manager address in many tutorials is out of date.
What you need
- An ESP32 board. Any common dev board works. ESP32 Dev Module is the safe choice if you are not sure which board you have.
- A USB cable that carries data, not a charge only cable. Many phone cables are charge only, and they are the most common cause of a board that never appears as a port.
- A computer running Windows 10 or newer, macOS, or Linux, 64 bit.
- About 15 minutes, plus time for the board package download, which is about 300 MB.
What changed in 2026
- Arduino IDE 2 is the current version. The guide below uses Arduino IDE 2.3.10, current as of October 2026. Arduino IDE 1.8.19 still exists, but it only receives critical security fixes now.
- The ESP32 board package is version 3. If you installed version 2 in the past, update it in Boards Manager before you follow the steps below.
- The board manager address changed. Use https://espressif.github.io/arduino-esp32/package_esp32_index.json . Older tutorials still show an address starting with dl.espressif.com or raw.githubusercontent.com. Espressif moved to the address above in 2024, and the old one times out often, so use the new one.
- Install esp32 by Espressif Systems. A package called Arduino ESP32 Boards also appears in Boards Manager. That one is only for the Arduino Nano ESP32. For a generic ESP32 board, install the Espressif package.
Step 1. Install Arduino IDE 2
- Go to arduino.cc/en/software and download Arduino IDE 2 for your operating system. Pick the 64 bit Windows installer, the macOS download, or the Linux AppImage.
- Run the installer with the default options. On Windows, allow it to install the bundled USB drivers when it asks.
- Open Arduino IDE. You should see a blank sketch with setup and loop already written for you.
Step 2. Install the USB driver for your board
Most ESP32 boards use one of two USB chips, CP210x or CH340. If your board appears as a port in Step 4 without this step, skip ahead. If no port appears, install the driver first.
- CP210x boards. Download the CP210x VCP driver from Silicon Labs, install it, then restart Arduino IDE.
- CH340 boards. Download the CH341SER installer from WCH, install it, then restart Arduino IDE.
- On Windows, you can check Device Manager for a device with a warning mark. That is often the missing driver.
Step 3. Add the ESP32 board package
- In Arduino IDE, open File, then Preferences. On macOS, open Arduino IDE, then Settings.
- Find Additional boards manager URLs near the bottom. Paste this address exactly:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - Click OK.
- Open Boards Manager from the left sidebar. Search for esp32.
- Find esp32 by Espressif Systems and click Install. The download is about 300 MB, so give it a few minutes on a slow connection.
- When the install finishes, close Boards Manager.
Step 4. Pick your board and port
- Plug in your ESP32 with the data cable, directly into the computer, not through a USB hub.
- Go to Tools, then Board, then esp32, and choose the entry for your board. If you are not sure, choose ESP32 Dev Module. It is the safe universal choice for a classic 30 pin or 38 pin board.
- For an ESP32 S3 board, choose ESP32S3 Dev Module. For an ESP32 C3 board, choose ESP32C3 Dev Module, and set USB CDC On Boot to Enabled, or Serial will print nothing.
- Go to Tools, then Port, and choose the port that appeared when you plugged the board in. On Windows it is a COM number. On macOS it looks like /dev/cu.usbmodem followed by numbers. The board may show as Unknown. That is normal.
- Check the upload speed in Tools. If it is set above 921600, set it to 921600. If an upload fails at that speed, try 115200.
Step 5. Upload Blink and check it worked
- Open File, then Examples, then 01.Basics, then Blink.
- Click Upload. The output at the bottom should show Connecting, then upload percentages, then Done uploading.
- If the output sticks on Connecting, hold the BOOT button on the board and release it when the upload percentages start. Some boards need this every time.
- When the upload finishes, the onboard LED should blink on and off every second. On most boards that LED is on GPIO 2.
- Open the Serial Monitor and set it to 115200 baud. Upload this test sketch to print a message and prove the board talks back:
void setup() { Serial.begin(115200); delay(1000); Serial.println("ESP32 setup works"); } void loop() { Serial.println("Hello from ESP32"); delay(2000); } - You should see ESP32 setup works, then Hello from ESP32 every two seconds. If you see that, your setup is complete.
Common setup errors
- No port appears. The cable is the most likely cause. Try a different cable that you know carries data, and a different USB port. Then install the driver from Step 2.
- Failed to connect, timed out waiting for packet header. Hold the BOOT button during upload, as in Step 5. Then try a lower upload speed, 115200. For the full fix, read ESP32 Upload Error Fix.
- Board package not found in Boards Manager. Check that you pasted the address from Step 3 exactly, with no extra spaces, and that you used the github.io address, not the old dl.espressif.com or raw.githubusercontent.com address.
- The wrong package was installed. If you installed Arduino ESP32 Boards, uninstall it and install esp32 by Espressif Systems instead.
- Serial Monitor shows nothing. Check that the monitor is set to 115200 baud, and that your sketch calls Serial.begin(115200). On an S3 or C3 board, set USB CDC On Boot to Enabled.
- Upload works but the code does nothing. Check that you picked the right board in Step 4. The classic ESP32, the S3, and the C3 do not share one pin map, so check your exact board pinout before you copy wiring from another board.
- Code from an old tutorial does not compile. Version 3 of the board package changed some library calls. Update the library in Library Manager, or check the library examples for the version 3 form of the call.
Two rules that prevent damage
- ESP32 pins use 3.3 V logic. Do not connect 5 V to a pin.
- Check your exact board pinout. The ESP32, the S3, and the C3 do not share one pin map, and a pin that is safe on one board may do something else on another.
Next step
Now read ESP32 Upload Error Fix if an upload ever fails after setup. Then build Your First ESP32 Project, Blinking an LED, and the DHT11 tutorial that follows it.
Which board did you set up, and did Blink upload on the first try? Leave a comment with your board model and your operating system, so the next reader with the same board can find a working setup.
Sources checked for this post, 14 Nov 2026: Arduino IDE 2 guide, bluegrays.com, based on Arduino IDE 2.3.10 as of October 2026. ESP32 dev environment setup 2026 edition, espdiy.com, 21 Oct 2026. ESP32 beginner guide 2026, solderhub.com, updated 7 Nov 2026. ESP32 driver and setup guide, robocraze.com. XIAO ESP32 C3 setup in Arduino IDE 2, Medium, 25 Oct 2026.
