ESP32-S3-Zero (mini) USB COM port errors

I have been using ESP WROOM boards (which the compiler reports as "Chip type: ESP32-D0WD-V3", but recently purchased 3 ESP32-C3, 3 ESP32-S3 and 3 ESP32-S3-Zero boards. Only one of the Zero boards will program with the other two reporting COM port errors:


ESP32-S3-Zero No.15 COM 19 error:

Sketch uses 886185 bytes (67%) of program storage space. Maximum is 1310720 bytes.
Global variables use 45288 bytes (13%) of dynamic memory, leaving 282392 bytes for local variables. Maximum is 327680 bytes.
esptool v5.3.1
Serial port COM19:

A fatal error occurred: Could not open COM19, the port is busy or doesn't exist.
(could not open port 'COM19': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2))

Hint: Check if the port is correct and ESP connected

Failed uploading: uploading error: exit status 2

ESP32-S3-Zero No.13 uses COM 17, error:

Sketch uses 355030 bytes (27%) of program storage space. Maximum is 1310720 bytes.
Global variables use 30656 bytes (9%) of dynamic memory, leaving 297024 bytes for local variables. Maximum is 327680 bytes.
esptool v5.3.1
Serial port COM17:

A fatal error occurred: Could not open COM17, the port is busy or doesn't exist.
(Cannot configure port, something went wrong. Original message: PermissionError(13, 'A device attached to the system is not functioning.', None, 31))

Failed uploading: uploading error: exit status 2

  • ESP32-S3-Zero No.14 uses COM 18 and is OK
  • ESP32-S3 No.12 uses COM 11 and is OK
  • ESP32-S3 No.11 uses COM 10 and is OK
  • ESP32-S3 No.10 uses COM 9 and is OK
  • ESP32-C3 No.9 uses COM 13 and is OK
  • ESP32-C3 No.8 uses COM 12 and is OK
  • ESP32-C3 No.7 uses COM 14 and is OK
  • ESP32-D0 No.3 uses COM 6 and is OK "Chip type: ESP32-D0WD-V3"
  • ESP32-D0 No.5 uses COM 6 and is OK
  • ESP32-D0 No.1 uses COM 6 and is OK

(The numbers were assigned by me to keep track of the MAC addresses of the boards.)

Where the ESP32-D0 boards all start with COM 6, the later boards seem to retain the COM port probably assigned in the order in which I first plugged them in. Here is a picture of the Device Manager status of the COM ports:

Notice all ports above 11 use the Microsoft COM port driver and 12,13,14, and 18 work with the compiler and only 17 and 19 fail. I tried updating the Microsoft driver to CH343, but it does not allow it, saying the best driver is already assigned.

Can anyone suggest a way of fixing this, either by fixing COM17 and COM19 or getting the two boards assigned to some other COM port?

(This is Arduino IDE ver. 2.3.10)

I am a Mac user, so I've never had this issue, but I see two big clues.

The first is that the port is busy or doesn't exist. I know a common error, regardless of platform, is a process already connected to the port you are trying to use. The second issue is a Permission error. You often see that on *nix (other than macOS) systems, and the fix is on this forum.

I don't know if that helps, but it's worth checking that no other process is using the port.

Hi @thedispatcher.

You have the "Show hidden devices" setting enabled in Windows Device Manager. This causes a confusing behavior where Device Manager shows items for every device that has ever been connected to your computer, even if it is not currently connected. The devices that are not connected are indicated by "graying out" their items. In the screenshot you shared, COM19 is grayed out:

This means that there was no COM19 device on your computer at the time you took the screenshot. It is expected that an attempt to program a board with COM19 selected will fail under those conditions.

Did you have "ESP32-S3-Zero No.15" connected to your computer with a USB cable at the time you took that screenshot?

It is true that 19 was not connected when the shot was taken because ESP32-S3-Zero no.13 was plugged in, using port 17, and giving the errors shown.

The only COM ports I ever use on this computer are those created by the USB drivers for communication with the Arduino IDE. No other processes use them.

Individual boards (at least the ESP32-S3's) become associated with a COM port number. Can anyone identify where this occurs? The Arduino IDE obviously stores information about an individual .ino since it "remembers" the board and COM port choice when the program is re-opened. But if you plug in a different device, the port selection menu consistently shows the same port number for that device. Where is that information stored and can it be changed?

I am talking about the Arduino IDE. It's a common error, as you will see when you search the forum. Your case may be different; I only mentioned it because it is trivial to fix.

AFAIK it's done in Windos. The main reason I switched to Apple was to get away from the flaky device manager.

Yes. Just select the desired port from Arduino IDE's Tools > Port menu.