ESP32-S3 Lab · Day 2 of 30

What "upload"
actually does

This is the one genuinely fiddly day — software and a driver. So while it installs, we spend the time well: by the end you'll know exactly what happens between pressing Upload and the board running your code. That understanding is what turns every future error from a wall into a checklist.

About 30 minutesSoftware onlyNothing to wireUnderstand the chain
Agent assist code TSK-DAY02-SETUP

Hand this to an agent so it can pull the lesson packet and coach you step by step.

01 First, know the pieces

What you need

Everything today lives on your computer and the cable. Tap Define on anything unfamiliar.

Official manual photo of the ESP32-S3 development board.
Manual photo

ESP32-S3 board

The board your computer will learn to see, then write programs onto.

Official manual screenshot of the Arduino IDE interface.
Manual screenshot

Arduino IDE

The free app that compiles your sketch and sends it down the cable into flash.

02 One action at a time

Build it

Follow these in order — this is the fiddliest setup of the course, and worth doing slowly once. If a step stalls, the Test & debug section below maps the common snags to the stage of the chain they belong to.

0 / 8 done
  1. Download and install Arduino IDE 2, then open it.

  2. Open Arduino IDE's settings. On macOS choose Arduino IDE → Settings… or press ⌘,. On Windows or Linux choose File → Preferences.

  3. Scroll to Additional boards manager URLs near the bottom. Click directly in the long text field and paste https://espressif.github.io/arduino-esp32/package_esp32_index.json. Ignore the small button beside it; that is for managing multiple URLs. Click OK once.

  4. Open Tools → Board → Boards Manager… (or click the board-shaped icon in the left sidebar). Search for esp32, find esp32 by Espressif Systems, click Install, and wait until the IDE says the platform is installed. Espressif's install guide describes the same package.

  5. Plug the board directly into the computer with a data-capable USB-C cable. A charge-only cable can light the board up but cannot create a connection in Arduino IDE.

  6. Identify the board's port instead of guessing. Open the board selector at the top of Arduino IDE and note the list. Unplug the ESP32-S3, wait a few seconds, then plug it back in. The item that disappears and returns is the board's port; on macOS its name usually contains usbserial or usbmodem. Ignore Bluetooth, headphones, and debug-console entries.

  7. Select that returning port. If Arduino IDE calls it Unknown, choose Select other board and port…, select the returning port on the right, search for and select ESP32S3 Dev Module on the left, then click OK. The board choice tells the IDE what chip to compile for; the port tells it which connected device should receive the program.

  8. If no item disappears and returns, do not guess from the list. First try another known data-capable USB cable and a different USB port. If the board is still absent, install the CH343 USB driver, restart the computer if its installer asks, and reconnect the board.

Handshake complete.

Your board is a selectable port, and you know what that port really is. Day 3 sends it its first program.

03 Understand, don't memorise

What happens when you press Upload

Upload feels like one button, but four distinct things happen in order. Knowing them is the difference between "it didn't work" and "it got past compile, so the problem is the connection, not my code."

1 · Compile

Text to machine code

Your readable C++ is translated into raw instructions built for the ESP32-S3. This is what the board package enabled.

2 · Enter

Download mode

The IDE pulses the board into the bootloader — the small program that listens for new code instead of running the old one.

3 · Flash

Write to storage

The compiled bytes travel down USB and are written into flash, the board's permanent storage.

4 · Run

Reset and go

The board restarts, the bootloader hands over, and your fresh program runs — and keeps running with the power off and on.

The chain compile → download mode → flash → run

Why there's a driver and a "port"

The board's bootloader speaks old-fashioned serial; your computer speaks USB. A translator chip bridges them, which is why the board shows up as a port and why some systems need its driver first.

Board vs port, made concrete

Board is a compile-time choice — which chip's instructions to build. Port is a delivery choice — which connected device to send them to. Both must be right, for different reasons.

04 Know it worked

Test & debug

There's no sketch to run yet. Success today is that your computer can see the board as a port — the physical end of that USB-to-serial bridge.

How you know it worked
Tools → Port
  • Your ESP32-S3 appears as a selectable port in Tools → Port.
  • The board name is selectable under Tools → Board.
  • Selecting both produces no error.

Seeing the port is the whole win today — that port is the serial bridge your code will travel across on Day 3.

If it doesn't
  • No port appears at all? Don't choose one at random. Unplug and reconnect the board. If no new port appears, try another data-capable cable and USB port. Still nothing? Install the CH343 driver.
  • Board lights up, but no port? The cable may carry power but no data. Swap in a known data-capable USB-C cable.
  • Board name missing from the list? Confirm esp32 by Espressif Systems is installed in Boards Manager. Then choose Select other board and port… and select ESP32S3 Dev Module.

05 Make the idea yours

Try this: watch the port appear

The best way to make "port" real is to watch one blink into existence. This shows you, with your own eyes, that the board arrives as a serial device the moment it's connected — the thing the IDE is choosing in Tools → Port.

Look before

With the board unplugged, list serial devices. macOS/Linux terminal: ls /dev/tty. (or /dev/ttyACM, /dev/ttyUSB*). Windows: open Device Manager and expand Ports (COM & LPT). Note what's there.

Plug in and look again

Connect the board and run the same command. A new entry appears — that's your board arriving through the USB-to-serial bridge. Unplug it and it disappears. That entry is exactly what Tools → Port lists.

06 Learn it with a hand on the tiller

Coach me through it

Every lesson ships with a code and a machine-readable packet, so an agent can guide you with full context.

Lesson code

TSK-DAY02-SETUP

How the agent should behave: walk the install one step at a time, and use the wait to teach the four-stage upload chain so later troubleshooting is a diagnosis. When the board doesn't appear, locate the failure in the chain- driver, cable, board, port.

Keep your place

Finished Day 2?

Mark it complete — it shows on your course map, and your place is saved on this device.

Field note

Shortcut

Prompt copied