Protoship Finish my build

ESP32-S3-DevKitC-1: USB ports, strapping pins, PSRAM pins and ESPHome

The ESP32-S3-DevKitC-1 has two USB ports: one through a USB-to-UART bridge, the default for flashing and the serial monitor, and one wired to the ESP32-S3's native USB on GPIO19 and GPIO20. Avoid the strapping pins GPIO0, 3, 45 and 46, and on variants with octal flash or PSRAM, such as the N16R8, leave GPIO35, 36 and 37 alone. In ESPHome set the real flash size and psram: mode: octal for the 8 MB and 16 MB PSRAM variants.

Variants

From Espressif's v1.1 user guide. N is flash and R is PSRAM in the part number.

Part numberModuleFlashPSRAMStatus
ESP32-S3-DevKitC-1-N32R16VESP32-S3-WROOM-2-N32R16V32 MB16 MBCurrent
ESP32-S3-DevKitC-1-N16R8ESP32-S3-WROOM-116 MB8 MBCurrent
ESP32-S3-DevKitC-1U-N16R8ESP32-S3-WROOM-1U (external antenna)16 MB8 MBCurrent
ESP32-S3-DevKitC-1-N8ESP32-S3-WROOM-1-N88 MB–End of life
ESP32-S3-DevKitC-1-N8R2ESP32-S3-WROOM-1-N8R28 MB2 MBEnd of life

Which USB port

USB-to-UART port
Power, flashing and serial through the on-board bridge. Espressif's default for getting started.
ESP32-S3 USB port
The chip's own USB on GPIO19 and GPIO20: power, flashing, USB 1.1 communication and JTAG debugging.

To force download mode, hold Boot and press Reset. Some cables only charge and carry no data; if the port does not appear, try another cable.

Pins to keep free

PinsWhy
GPIO0, 3, 45, 46Strapping pins: their level at reset sets the boot mode.
GPIO35, 36, 37Used internally by octal flash or PSRAM on WROOM-1/1U boards with octal memory and on WROOM-2 boards (N16R8, N32R16V).
GPIO19, 20Native USB port.
ADC2 pinsNot usable while Wi-Fi runs; read analog values on ADC1.
GPIO38RGB LED on v1.1 boards (GPIO48 on the first version).

Power

Three ways to power the board, and only one at a time: the USB ports (one or both; the recommended default), the 5V and G pins, or the 3V3 and G pins. A 5 V to 3.3 V LDO feeds the module; the guide does not give its current rating. The ESP32-S3 draws up to 340 mA while transmitting, and Espressif asks for a supply of at least 500 mA.

ESPHome config

ESPHome's default board for the ESP32-S3 is esp32-s3-devkitc-1, which assumes 8 MB flash. Set flash_size to the real size; a value larger than the real flash stops the board from booting. PSRAM on the S3 needs its mode set: octal for 8 MB and 16 MB. This file is for the N16R8 and validates with esphome config on ESPHome 2026.10.2:

esphome:
  name: s3-devkitc-1

esp32:
  board: esp32-s3-devkitc-1
  flash_size: 16MB
  framework:
    type: esp-idf

psram:
  mode: octal
  speed: 80MHz

logger:

api:

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

Let your agent check it

check_project reads your repo or ESPHome file, works out which DevKitC-1 variant it targets and flags pins that fall on strapping, native USB or octal PSRAM pins. Connect the Protoship MCP server once:

claude mcp add --transport http protoship https://mcp.protoship.dev
codex mcp add protoship --url https://mcp.protoship.dev

An agent without MCP calls GET https://protoship.dev/api/check?url=… with the link to your repo or config file.

Questions

Which USB port do I use to flash the ESP32-S3-DevKitC-1?

Either works. The USB-to-UART port is Espressif's default for flashing and the serial monitor; the ESP32-S3 USB port uses the chip's native USB on GPIO19 and GPIO20 and also supports JTAG.

Which pins can I not use on the ESP32-S3 N16R8?

GPIO35, 36 and 37 are used by the octal flash and PSRAM. Also avoid the strapping pins GPIO0, 3, 45 and 46 and the native USB pins GPIO19 and 20 if you use that port.

What ESPHome settings does the ESP32-S3 N16R8 need?

board: esp32-s3-devkitc-1, flash_size: 16MB and psram mode: octal. A flash_size larger than the real flash stops the board from booting.

Why does my RGB LED not light on GPIO48?

On v1.1 boards the RGB LED is on GPIO38. GPIO48 was used on the first version.

Finish my build Let your agent check your project

Sources

Read on 4 November 2026.