Serial Monitor not working

Hello, I was using ESP32C3 and was wondering why the files I uploaded don't seem to be functioning. I have installed the libraries to use this board, but the Serial Monitor doesn't show any output. I own an Arduino Uno R3 and I can upload to it just fine.
I'm wondering if there is something wrong with the port. In Tools, the poor shows as ESP32S3 instead of ESP32C3.


I am also concerned about the text at the bottom of Arduino IDE where it shows that the COM is disabled.

Hi @77veegnamo77.

When I'm having trouble with serial output, I like to do a quick check with the most simple possible sketch. If this works, then I know the problem has something to do with my real sketch. If it doesn't work, then I know the problem is not related to my sketch code. It seems maybe a little silly, but it allows me to be sure I'm focusing my troubleshooting efforts in the right direction.

Try uploading this sketch to your Arduino board:

  1. Copy and paste this code as a new sketch in Arduino IDE:

    void setup() {
      Serial.begin(9600);
    }
    
    void loop() {
      Serial.println("hello");
      delay(1000);
    }
    
  2. Upload the sketch to your Arduino board.

  3. Select Tools > Serial Monitor from the Arduino IDE menus.

Do you now see the word "hello" being printed in the Serial Monitor's output field once a second?

Are you having a problem with uploading to your ESP32-C3 board? Or does the upload complete successfully?

Don't worry about that.

The author of an Arduino boards platform can associate a board definition with identifying information from the port. If a port on the user's computer has identification properties that match with a board definition from an Arduino platform, the port will be labeled with that board name in some parts of the Arduino IDE user interface:

  • The Tools > Port menu
  • The "BN" (board name) field of the "Board Info" dialog
  • The board selector menu on the toolbar (under certain conditions)

This identification system is very convenient in the common situation where there are multiple ports on the computer because it helps the user to easily select the correct port for their board.

Although any arbitrary identification properties are supported by the Arduino boards platform framework, most platforms use the USB VID/PID identifier pair. This is a good choice when the manufacturer of a board has dedicated a unique VID/PID pair to a specific board model, as Arduino has done with most of the boards they manufacture.

The USB interface of the ESP32-C3 and ESP32-S3 microcontrollers have a default VID/PID of 303a:1001, which is provided by the manufacturer of those microcontrollers, Espressif. This means that, unless the board manufacturer has set a custom unique VID/PID pair via the firmware, all of the many different board models based on those microcontrollers have the same VID/PID. Even in the case where the board manufacturer has set a custom unique VID/PID pair for their board (as Arduino did with the ESP32-S3-based Nano ESP32), the board can still temporarily change to using the default 303a:1001 under certain conditions.

Typically in the case where a port property is not uniquely identifying, the platform author would not associate it with the board. For example, the classic Nano uses the FTDI FT232R USB chip, which has the 0403:6001 VID/PID pair provided by the chip manufacturer by default on all FT232R chips. For this reason, Arduino does not associate the 0403:6001 VID/PID pair with the Nano's board definition because this would cause the ports of other boards using the FT232R to be incorrectly identified in Arduino IDE as a Nano.

Although the assumption is made that only uniquely identifying properties will be used in board definitions, there is nothing in the Arduino boards platform framework to enforce that. The developers of the "esp32" boards platform associated many different board definitions with the non-uniquely identifying VID/PID pair 303a:1001. For example:

... and so on.

This results in incorrect or confusing port identifications for these boards by Arduino IDE. It labels the port as one of the multiple board definitions associated with 303a:1001. The choice of which board definition is nondeterministic, so you might even notice different board names used in the port label over time.

The ESP32 developers have actually already fixed this misconfiguration of their platform:

However, that was done after the time of the latest release so the misidentification of ports will continue for a while longer.

This is only indicating that you have the default "Disabled" option selected from the Tools > Erase All Flash Before Sketch Upload menu in Arduino IDE.

That shouldn't cause any problems so please don't worry about that "Disabled" you see on the status bar.

Thank you for your reply.

To my surprise, it did show up. However, the serial monitor stopped working again when I tried a simple increment.

int c = 0;

void setup() {
 Serial.begin(115200);
 Serial.print("Hello");
}

void loop() {
 Serial.print("Count Value: ");
 Serial.println(c++);
 delay(1000);
}

After my code failed, I tried inputting the code you gave me but the serial monitor won't respond again.

Trivial, but did you change baud rate back to 115200?

I tried both 9600 and 115200.

I upgraded from Arduino IDE 1.x to Arduino IDE 2.x which solved my problem.

1 Like