ESP32-S3-DevKitC-1 First Blink: Why the Official ESP-IDF Example Says GPIO38 (and When It's 48)

89 views 0 likes 0 comments 14 minutesOriginalTutorials

Build Espressif's official esp-idf blink example on an ESP32-S3-DevKitC-1: the on-board LED is an addressable RGB LED on GPIO38 (v1.1) or GPIO48 (v1.0), plus variant, USB-port and Octal-PSRAM pin pitfalls. Includes an affiliate-disclosed eBay board link.

#ESP32-S3 #ESP-IDF #Espressif #DevKitC-1 #Microcontroller #Embedded #Affiliate
ESP32-S3-DevKitC-1 First Blink: Why the Official ESP-IDF Example Says GPIO38 (and When It's 48)

ESP32-S3-DevKitC-1 First Blink: Why the Official ESP-IDF Example Says GPIO38 (and When It's 48)

The quickest honest test of a new ESP32-S3-DevKitC-1 is the blink example that ships inside Espressif's own SDK, not a random sketch. It is also where most people get their first "my board is dead" scare, because the on-board LED is not a plain LED and its pin changed between board revisions.

Everything below comes from open-source, Espressif-maintained sources:

Disclosure: further down I link one eBay listing for the board. That link is an eBay affiliate link (customid=blog01); if you buy through it I may earn a commission at no extra cost to you. Check the listing yourself before you pay.

The two facts that matter before you flash anything

1. The LED is an addressable RGB LED (WS2812-style), not a GPIO LED. Toggling the pin high and low does nothing visible. The blink example handles this with Espressif's led_strip component (pulled in by main/idf_component.yml as espressif/led_strip: "^3.0.0").

2. The LED pin depends on the board revision. The example's own sdkconfig.defaults.esp32s3 says it plainly:

ini 复制代码
CONFIG_BLINK_LED_STRIP=y
## ESP32-S3-DevKitC v1.1 uses GPIO38 for the on-board LED
## ESP32-S3-DevKitC v1.0 uses GPIO48 for the on-board LED
CONFIG_BLINK_GPIO=38

So on an older v1.0 board, or on many third-party "ESP32-S3 N16R8" clones that copied the v1.0 layout, the default build runs fine, prints Turning the LED ON!, and the LED stays dark. Nothing is broken; you just need GPIO48.

Pick the right variant

The v1.1 user guide lists several part numbers. The ones you will usually see:

Part number Module Flash PSRAM
ESP32-S3-DevKitC-1-N8R8 ESP32-S3-WROOM-1-N8R8 8 MB 8 MB
ESP32-S3-DevKitC-1U-N8R8 ESP32-S3-WROOM-1U-N8R8 (external antenna) 8 MB 8 MB
ESP32-S3-DevKitC-1-N32R16V ESP32-S3-WROOM-2-N32R16V 32 MB 16 MB
ESP32-S3-DevKitC-1-N8 / N8R2 WROOM-1 variants 8 MB none / 2 MB (both marked EOL)

One more note from the same guide: on boards with Octal SPI flash/PSRAM modules (for example the R8 and WROOM-2 variants), GPIO35, GPIO36 and GPIO37 are used internally. Don't wire your own peripherals to them.

The board I'd point you to

If you still need a board, this is the listing I checked while writing: ESP32-S3-DevKitC-1 (N8R8 / N16R8 / N32R16V variants) on eBay (affiliate link).

When I opened it on Oct 31, 2026, the item specifics listed Brand: Espressif, condition was New, it shipped from the United States (Wilmington), returns were accepted for 30 days, and the seller had 99.7% positive feedback. The page showed US $26.97 before shipping. It is a multi-variant listing, so pick the variant you actually want (N8R8 is the safe default for most projects) and check that the price and the photo match it. Shipping cost depends on where you are, so read it on the listing before checkout.

Whichever seller you buy from, check two things on arrival: the module label (it should say ESP32-S3-WROOM-1 or WROOM-2 with the flash/PSRAM code you paid for) and the board revision on the silkscreen, because that decides GPIO38 versus GPIO48 below.

1) Install ESP-IDF

Follow Espressif's Get Started guide for your OS (the installer or install.sh plus export.sh). When it is done, idf.py --version should print a version.

2) Copy the example and set the target

bash 复制代码
cp -r "$IDF_PATH/examples/get-started/blink" ~/s3-blink
cd ~/s3-blink
idf.py set-target esp32s3

set-target is what makes the S3 defaults above apply. Skip it and you are building for the wrong chip.

3) Check the LED settings

bash 复制代码
idf.py menuconfig

Under Example Configuration:

  • Blink LED type: LED strip
  • LED strip backend peripheral: RMT (the S3 has an RMT peripheral; SPI also works)
  • Blink GPIO number: 38 for a v1.1 board, 48 for a v1.0 board or a clone whose LED stays dark

The revision is usually printed on the PCB silkscreen. If you're not sure, try 38 first, then 48.

4) Pick the right USB port, then flash

The DevKitC-1 has two USB ports. Per the user guide, the USB-to-UART port goes through a bridge chip and is the default for flashing and serial logs; the ESP32-S3 USB port is the chip's native USB (OTG, JTAG debugging). Start with USB-to-UART:

bash 复制代码
idf.py -p /dev/ttyUSB0 flash monitor   # macOS: /dev/cu.usbserial-*  Windows: COM3

If flashing won't start, hold Boot, tap Reset, release Boot to force download mode. Use a data cable; charge-only cables are the most common fake "dead board". Exit the monitor with Ctrl-].

Expected output, from the example README:

text 复制代码
I (315) example: Example configured to blink addressable LED!
I (325) example: Turning the LED OFF!
I (1325) example: Turning the LED ON!

Troubleshooting in one table

Symptom Most likely cause Fix
Logs say ON/OFF, LED dark Wrong LED pin for your revision Set Blink GPIO number to 48 (or 38)
LED dark, type is GPIO Addressable LED driven as plain GPIO Switch to LED strip
Wrong colour LED colour order differs by model Adjust led_strip_set_pixel() values, as the README notes
No serial port appears Charge-only cable or wrong port Swap cable; use the USB-to-UART port
Odd crashes after wiring parts Using GPIO35–37 on an Octal module Move to other pins

Takeaway

When a new dev board seems dead, read the vendor's own example config before you blame the hardware. For the ESP32-S3-DevKitC-1, the answer to "why won't it blink" is written in one comment in esp-idf: GPIO38 on v1.1, GPIO48 on v1.0.

Affiliate disclosure: the eBay link above is an affiliate link (customid=blog01). Prices, stock and seller details change; I describe the listing as I saw it on Oct 31, 2026.

Last Updated:2026-11-02 10:08:34

Comments (0)

Post Comment

Loading...
0/500

No comments yet, be the first to comment!