[SOLVED] ESP32S3-WROOM-1U-N8 custom board no upload and serial communication

Hello all,

I have built a custom board with ESP32S3-WROOM-1U-N8 module. But I don’t get my code uploaded. For upload I use ESP-PROG board at UART0. My platfomio.ini:

[env:adafruit_feather_esp32s3_nopsram]
platform = espressif32
board = adafruit_feather_esp32s3_nopsram
framework = arduino
monitor_speed = 115200
upload_speed = 921000
upload_protocol = esptool

And this is my Arduino Sketch:

#include <Arduino.h>

#define LED_OK 36
#define LED_NOK 35

void setup() {
  Serial.begin(115200);

  Serial.println("Hello world");
  pinMode(LED_OK, OUTPUT);
  pinMode(LED_NOK, OUTPUT);
}

void loop() {
  digitalWrite(LED_OK, HIGH);
  digitalWrite(LED_NOK,LOW);
  delay(500);
  digitalWrite(LED_OK, LOW);
  digitalWrite(LED_NOK,HIGH);
  delay(500);
  Serial.println("Hello world");
}

If I use the Arduino IDE, the sketch will upload, LEDs blinking as ecpected but I also don’t get serial output?! After pressing RESET at ESP-PROG I get following output at Arduino IDE:

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a68
entry 0x403c98d4

At Platfomio nothing happens, even after a RESET. I believe from hardware side everything is ok since the ArduinoIDE can upload. I have a 2nd PCB with the same negative result

I built recently a custom PCB with ESP32-C3 and it worked out of the box in Platfomio without any big configuration. So there must be something fundamental different for the ESP32-S3.

At Arduino IDE I use “ESP32S3 Dev Module” for which I have linked the JSON config from Github.

Where I can link other boards at Platfomio? I read at other posts, that I might have to set in platfomio.in the serial communication for UART0. Any example file? Thanks!

Hello @thomasgz1973 and welcome to the forum!

For better readability I edited your post and used pre-formatted text for code and log sections.

This board definition has -DARDUINO_USB_CDC_ON_BOOT=1 which is the equivalent to USB CDC On Boot: "Enabled" in the ArduinoIDE

This means that the output of the Serial object is routed to the native (builtin) USB port instead to the UART pins.

In this mode you must use Serial0 object to output your text to UART pins.

Please show a screenshot of your ArduinoIDE settings to find out which platformio settings are suitable for your board.

Hello @sivar2311,

here is the ArduinoIDE screenshot:

0b115439c0b8131b798ae9050d5bfb5

And I included this JSON file at “additional boards URL”

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Board: "ESP32S3 Dev Module" would be in platformio.ini:
board = esp32-s3-devkitc-1

(which doesn’t have -DARDUINO_USB_CDC_ON_BOOT).
So the Serial output with this setting should work.

If you change “USB CDC On Boot” to Disabled in ArduinoIDE you should also see output from your sketch in the Arduino IDE.

This would be upload_protocol = esp-prog as per documentation Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM) — PlatformIO latest documentation)

Ok, thanks so far - with serial0.println I get now outputs with ArduinoIDE

But still problems with Platformio, this is my ini file now:

[env:esp32s3_]
platform = espressif32
board = esp32-s3-devkitc-1
board_build.mcu = esp32s3
framework = arduino
monitor_speed = 115200
upload_speed = 921600
upload_protocol = esp-prog
upload_port = COM6
debug_tool = esp-prog

I get some warnings, this one at terminal during build:

C:/Users/Thomas/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c: In function ‘uartSetPins’:
C:/Users/Thomas/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:153:9: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
C:/Users/Thomas/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:149:6: note: declared here
bool uartSetPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t ctsPin, int8_t rtsPin)

According to a mentioned Github issue, it is obviously a known bug.

Then having this at DEBUG console:

undefinedC:\Users\Thomas.platformio\packages\toolchain-xtensa-esp32s3\bin\xtensa-esp32s3-elf-gdb.exe: warning: Couldn’t determine a path for the index cache directory.
Reading symbols from c:\Users\Thomas\Documents\PlatformIO\Projects\TEST_OLED.pio\build\esp32s3_\firmware.elf…
PlatformIO Unified Debugger → Redirecting...
PlatformIO: debug_tool = esp-prog
PlatformIO: Initializing remote target…
Open On-Chip Debugger v0.11.0-esp32-20220706 (2022-07-06-15:48)
Licensed under GNU GPL v2
For bug reports, read
OpenOCD: Bug Reporting
adapter speed: 20000 kHz
adapter speed: 5000 kHz
Info : tcl server disabled
Info : telnet server disabled
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Error: libusb_open() failed with LIBUSB_ERROR_NOT_FOUND
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6010, description ‘', serial '’ at bus location ‘
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6014, description '
’, serial ‘’ at bus location '
.pioinit:11: Error in sourced command file:
Remote communication error. Target disconnected.: Success.

And finaly a message box:

VSCODE_ERROR

Yes, these warnings are a know bug and will be fixed in the next upcomming Arduino Core version.
But these warnings are ok and have no effect to your issue.

Please remove GDB for now and lets try to fix your upload issue first!
(Do not do everything at once).

What’s the output when you try to upload your code?

Please try a minimal platformio.ini:

platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921000

Ok, problem solved! After starting new project from scratch, minimal platfomio.ini and latest FTDI drivers is everything running now :clap: Thanks for your help!

1 Like