New ESP32-S3 N16R8


I’ve been working with esp32 and 8266 for a year now, but recently I ordered some esp32 S3 on aliexpress.

I can make it work but it’s quite painful, this board comes with 2 usb port one labeled USB the other COM.

I tried to follow different tutorial, I’ve added the board from platformio/esp32 N18R8v.json.

So I can upload on Com but monitor only on USB. I can upload on usb but I have to do the boot -reset manipulation which is really painfull.

This is the board we are talking about: link

I tried to connect to wifi and do some OTA upload, no luck.

Also I can’t get to work with any internal leds :'(. Tried 2/47/48…

If you can provide any help, as to:

1- How to upload and monitor on One port without manipulation?
2 - Can I connect both input to my PC?
3 - Setting ESP OTA?
3 - Leds ?How?

Have had nearly the same problems as you, but most of them could be solved .

ad 1) + 2) - I am using one port (that one labeled COM) for both uploading and monitoring

ssif ESP32-S3-DevKitC-1-N16R8V (16 MB QD, 8MB PSRAM)
HARDWARE: ESP32S3 240MHz, 320KB RAM, 16MB Flash
DEBUG: Current (esp-builtin) On-board (esp-builtin) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
 - framework-arduinoespressif32 @ 3.20016.0 (2.0.16) 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - tool-mkfatfs @ 2.0.1 
 - tool-mklittlefs @ 1.203.210628 (2.3) 
 - tool-mkspiffs @ 2.230.0 (2.30) 
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder ->
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 35 compatible libraries
Scanning dependencies...
Dependency Graph
|-- googletest @ 1.12.1
|-- Adafruit NeoPixel @ 1.12.2
Building in debug mode
Retrieving maximum program size .pio/build/esp32S3/firmware.elf
Checking size .pio/build/esp32S3/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]   5.8% (used 19100 bytes from 327680 bytes)
Flash: [          ]   4.3% (used 283221 bytes from 6553600 bytes)
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Using manually specified: /dev/ttyACM0
Uploading .pio/build/esp32S3/firmware.bin v4.5.1
Serial port /dev/ttyACM0
Chip is ESP32-S3 (revision v0.2)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 24:58:7c:cd:a6:48
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00055fff...
Compressed 15104 bytes to 10429...
Writing at 0x00000000... (100 %)
Wrote 15104 bytes (10429 compressed) at 0x00000000 in 0.3 seconds (effective 358.7 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds (effective 443.8 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 592.3 kbit/s)...
Hash of data verified.
Compressed 283584 bytes to 159754...
Writing at 0x00010000... (10 %)
Writing at 0x0001c001... (20 %)
Writing at 0x00024b29... (30 %)
Writing at 0x0002a419... (40 %)
Writing at 0x0002f8a6... (50 %)
Writing at 0x00034e6d... (60 %)
Writing at 0x0003caea... (70 %)
Writing at 0x000457d1... (80 %)
Writing at 0x0004b45c... (90 %)
Writing at 0x00050b8c... (100 %)
Wrote 283584 bytes (159754 compressed) at 0x00010000 in 2.4 seconds (effective 964.5 kbit/s)...
Hash of data verified.

Hard resetting via RTS pin...
================================================================================ [SUCCESS] Took 7.53 seconds ================================================================================

Environment    Status    Duration
-------------  --------  ------------
esp32S3        SUCCESS   00:00:07.534
================================================================================ 1 succeeded in 00:00:07.534 ================================================================================
pio run  -t monitor -e esp32S3
Processing esp32S3 (platform: espressif32; board: esp32-s3-devkitc-1-n16r8v; framework: arduino)
--- Terminal on /dev/ttyACM0 | 921600 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
kurz ^
lang ^
lang ^
lang ^
kurz ^
kurz ^
kurz ^

using this platformio.ini

default_envs = 

framework = arduino
platform = espressif32
board = esp32-s3-devkitc-1-n16r8v
upload_port = /dev/ttyACM0
test_port = /dev/ttyACM0
monitor_port = /dev/ttyACM0
lib_deps =
    adafruit/Adafruit NeoPixel@^1.12.2
build_flags = 
    -D SPEED=921600
    -D ESP32S3
debug_tool = esp-builtin
debug_init_break = break setup
build_type = debug  

The other port is needed when you want to debug and yes you can (or must :wink:) connect both, but (at least under linux) you should be aware to connect them in the order COM and then USB - otherwise the device names would be reversed.

ad 3) To use the on board LED, I had first to solder a little bit as mentioned here and had to add lib Adafruit NeoPixel, but then …

I guess I could solder this.

For monitoring through COM I still can’t…

platform = espressif32
board = esp32-s3-devkitc-1-n16r8v
framework = arduino
upload_port = COM13
test_port = COM13
monitor_port = COM13
debug_port= COM13

build_flags =
-D SPEED=921600
-D ESP32S3
debug_tool = esp-builtin
debug_init_break = break setup
build_type = debug


lib_deps =
GitHub - adafruit/Adafruit_NeoPixel: Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.)

Obviously you’re using M$-Windows - not my favorite OS :wink: - so it’s a little bit hard for me to give you really good advices - the only one I have. IMHO you should alter / or remove the debug_port from your platformio.ini - may be this setting is interfering, because these ports are definitely different - no matter which OS you’re using

This file has


DARDUINO_USB_CDC_ON_BOOT=1 will route the output of the Serial object to the native USB port labeled “USB” on your board.

See detailed description here: ESP32-S3 native USB interface and Serial Monitor missing first messages - #10 by sivar2311

There are several solutions for this:

  1. Edit the board.json and remove those two lines
  2. Leave the boards.json as is and add the following lines to your platformio.ini:
build_unflags = 
  1. Use a different boards.json like mine: platformio_boards/boards/esp32-s3-devkitc1-n16r8.json at main · sivar2311/platformio_boards · GitHub
  2. Use the default esp32-s3-devkitc-1 and adjust the settings in platformio.ini
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
board_build.arduino.memory_type = qio_opi
board_build.flash_mode = qio
board_build.prsam_type = opi
board_upload.flash_size = 16MB
board_upload.maximum_size = 16777216
board_build.extra_flags = 

Is this issue about WIFI or OTA?

Unfortunately there are a lot of boards on aliexpress available which does not have a genuine ESP32-S3 module. These boards have wifi issues. See this thread Unable to connect to WiFi, ESP32S3 goes in loop (IDFGH-7755) · Issue #9296 · espressif/esp-idf · GitHub

In general, both ports COM and USB can be used for uploading and monitoring!

I suggest to fix one issue after the other and keep this for later.

The default GPIO for the LED is 48 - See

You can simply use

  • digitalWrite(LED_BUILTIN, HIGH);
  • neopixelWrite(RGB_BUILTIN, r, g, b);

But maybe your board is using another GPIO.

A good ESP32-S3 board on aliexpress is “Tzt ESP32-S3-DevKitC-1 ESP32-S3” labled with “YD-ESP32-S3 2022-VI.3” on the bottom. This one comes with a genuine ESP32-S3 module and GPIO 48 is used for the LED. There is also a github repository for this board GitHub - vcc-gnd/YD-ESP32-S3: YD-ESP32-S3 Micropython VCC-GND Studio