Failed to connect to ESP32-S3: No serial data received

I'm a total newbie. Using Windows 10.
The title - I am aware that this is a very common problem but none of the solutions I found on the internet worked for me and I searched for hours.

This is my board - LilyGo T-Beam Supreme ESP32-S3. Circled in red are the 3 buttons, from left to right: RST, POWER, LORA (we'll call it LORA even if it's not a "LoRa button" because it doesn't have a label).

The error occurs when I try to upload code to the board, even something simple like:
void setup() {Serial.println("Hello World");}

Full error:

Sketch uses 328898 bytes (10%) of program storage space. Maximum is 3145728 bytes.
Global variables use 21156 bytes (6%) of dynamic memory, leaving 306524 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.8.1
Serial port COM3
Connecting......................................

A fatal error occurred: Failed to connect to ESP32-S3: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Failed uploading: uploading error: exit status 2

It's probably not a USB port/cable issue because meshtastic is able to recognize the board (and I'm able to change region/display settings through it) and the cable manages to transfer data from/to other devices (e.g. my phone).

What I tried:

  1. Booting into download mode by holding the POWER button, pressing the RST button and then releasing the POWER button. The board resets but there seems to be no visual indication if it's in download mode. I also tried this action with different pairs of buttons - same result.
  2. Holding the POWER button when Connecting... is starting to show in the Arduino console. I also tried this with the other 2 buttons. By the way doing this with the RST button gives a different error ("serial exception error"), probably because the board "shuts down" mid operation.
  3. Messing around with some of the parameters in Tools (e.g. changing "USB CDC On Boot" from disabled to enabled) and retrying 1 and 2.

I'm attaching a screenshot of the process which might give more information.

Please help!

Please, post the text inside the OUTPUT monitor here, inside a "code block"

Uhh I already did, it's in the post..

oops. sry.

This might be an issue with the ESP32 version 3.0. The solution is to fall-back to version 2.0.

Verify before proceeding... (because hardware can fail). I am looking for supporting information.

Still doesn't work after downgrading ESP32 to version 2.0.17 (the latest 2.*). Also just to be sure, the correct one is the bottom one right?

Try rolling back the ESP32 version 3.x to version 2.x

I am curious as to why you are selecting the 'ESP32-Devkit-1 rather than 'T-Beam'?

The board has a CH9102 UART (could also have a CP2102). Has the CH9102 (or CP2102) driver been installed? Given that Meshtasic recognizes it, I guess that's a yes, but thought it worth confirming.

An FAQ for the board can be found here:

`GitHub - Xinyuan-LilyGO/LilyGo-LoRa-Series: LILYGO LoRa Series examples

It includes this question which may be relevant:

Can’t upload sketches?
Click to view detailed

*  Connect the board USB to the computer
*  Press the BOOT button and hold (If there is no BOOT button, you need to keep GPIO0 connected to GND.)
*  Press the RST button
*  Release the RST button
*  Finally release the BOOT button(If there is no BOOT button, you need to disconnect GPIO0 from GND.)
*  Click to upload the program

Note: the RST and BOOT buttons are the ones to use, not POWER. Your board appears to look like this one:

`LILYGO® TTGO T-Beam Devices | Meshtastic

Of the three switches from the image it can be seen that RESET is the left-most button and BOOT is the right-most. These, then, would seem to be the relevant ones for switching to upload mode. There is a bit of a knack to the timing (if my S2 board is anything to go by) but you should hit it after a handful of attempts.

For what its worth, on my S2 board , I hold down BOOT for a count of two, then do a quick but positive press on RESET and release both. Perhaps the same will apply on the S3.

1 Like

Thank you so much!
I'll write in detail how I got it to work to help future strugglers who may end up here.

First, I downloaded the CH9102 driver like you recommended (it downloaded a .zip file, I ran the setup.exe inside of it).

I followed the instructions in the 2nd link you sent, which I didn't know existed and which shows exactly how to do this for my device. You were right about the buttons, by the way.

Apparently, in order to get the T-Beam Supreme ESP32-S3 to download mode you need to:

  1. Unplug the device.
  2. Press and hold the BOOT button.
  3. Plug device in.
  4. After 2-3 seconds, release the BOOT button.

In the link they say you can get it into download mode also through the Web Flasher, which I also didn't know about and is an incredible tool, but I like the manual method I mentioned more.

By the way, the T-Beam Supreme ESP32-S3 doesn't show any visual feedback when it's in download mode - the little screen is black and the led is turned off, yet the device is successfully detected by Windows and Arduino IDE (and the Web Flasher).

After getting my device to download mode I uploaded the sketch below via Arduino IDE - I didn't need to press on any button on the device in order for the upload to complete successfully. I then set "Tools > USB CDC On Boot" to Enabled so that prints will be shown in the Serial Monitor, opened that monitor via "Tools > Serial Monitor", pressed the RST button on the device to exit download mode and reboot and it worked.

void setup() {
Serial.begin(9600);
while (!Serial);
}

void loop() {
Serial.println("Hello");
delay(1000); 
}
2 Likes

Glad that the provided information was helpful. Thank you also for taking the time to post the details of the final solution as this might be helpful to anyone else that might be facing the same problem.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.