Arduino nano esp32 board is always identified as adafruit esp32

Hi there,

New to this forum. Stuck at first step. LOL.

RE: Arduino nano esp32 board

Initially, it always causes error 74 of "No DFU capable USB device available“ when i uploaded sketch.

Later, I realized it was identified as "adafruit qt py esp32-c3 board" ???. Then, Manually changed it to Arduino nano esp32. still cannot load sketch, same error 74.

Did a bit search, it pointed to bootloader issue. First, I noticed that even i pressed twice of RST, RGB LED did not go into flashing mode? So looked like bootloader itself has issue.

Found this article about Reset the Arduino bootloader on the Nano ESP32

follow the steps to short GND and B1, RGB turned to green, then reset, config all then flash the firmware, it showed last step "Leaving... Hard resetting via RTS pin..." so i believe it was successful, as below

esptool.py v4.5.1
Serial port COM3
Connecting...
Chip is ESP32-S3 (revision v0.2)
Features: WiFi, BLE
Crystal is 40MHz

Kill IDE and restart it again. still recognized the board as adafruit qt py esp32-c3 board, manually change it to nano esp32, still cannot upload sketch with error 74.

Updated:
I check the Get board info in IDE, it show below one, i believe the data store in
BN: Adafruit qt py esp32-c3
VID: 0x303A
PID: 0x1001
SN: null

Appreciate for anyone share your idea about this issue.

Cheers,
Ray

Hi @raysunkai. I'm going to ask you to provide some additional information that might help us to identify the problem.


:exclamation: This procedure is not intended to solve the problem. The purpose is to gather more information.


Please do this:

  1. Select Tools > Board > Arduino ESP32 Boards > Arduino Nano ESP32 from the Arduino IDE menus.
  2. Open the IDE's Tools > USB Mode menu.

Now please add a reply here on this forum thread to tell us which of the menu items is selected (e.g., preceded by a check mark).

Maybe also look here: Why Arduino IDE is brignging wrong board name for ESP32 S3 - Arduino Stack Exchange

Read both answers to the end before trying anything suggested.

The situation is a bit different for random ESP32-S3-based boards like the one in that Stack Exchange question.

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.

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 ESP32 boards platform developers 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.

Arduino configured the definition of the ESP32-S3-based Nano ESP32 board so that, by default, the sketch generates a serial port with the unique VID/PID pair 2341:0070 that is owned by Arduino due to them having purchased the 2341 vendor ID from USB-IF. However, the Nano ESP32 board can still produce a port that uses the default 303a:1001 VID/PID pair under certain conditions. For example, any of the following will cause this:

  • The board is in boot mode due to the B1 pin having been grounded at startup.
  • The board is running a firmware that doesn't have the code to produce the CDC serial port with the custom VID/PID pair (as is the case with the MicroPython firmware).
  • A board other than Nano ESP32 was selected in Arduino IDE when the sketch was uploaded.
  • "Debug mode (Hardware CDC)" was selected from the IDE's Tools > USB Mode menu when the sketch was uploaded.

Many thanks for that explanation. I have added a link to it in a comment on the first answer in that Stack Exchange question.

The situation is a bit of a mess. I suppose the only thing to do is have a list of the known duplicated VID/PID pairs and then, instead of randomly picking a label, force the label to be something like "ESP32 device" , "generic FTDI device" or something instead of the following which is incorrect in this case:


(picture taken from Stack Exchange)


Thanks for your detailed explaination.

Today When I initially connect nano esp32, it recognized as Lolin c3 mini. when i manually change it to nano esp32. I can see the USB mode is TinyUSB, I never change it to CDC before.

I also give comments based on four posible reasons in your explanation:

1 The board is in boot mode due to the B1 pin having been grounded at startup.
No. I when connect nano esp32 board, it was not in boot mode with green light, while it recogized the mode type.

2 The board is running a firmware that doesn't have the code to produce the CDC serial port with the custom VID/PID pair (as is the case with the MicroPython firmware 1).
No, I did not update the board to MicroPython firmware before.

3 A board other than Nano ESP32 was selected in Arduino IDE when the sketch was uploaded.
When I intially use IDE, I used Arduino Cloud to connect this board, it was recogized the board and I did upthe load sketch "blink" to it successfully. But at that time, I did not pay attention which board type it was identified. However, after i did it. The board was not connected to cloud Arduino say the type was not supported IOT, then I started using IDE locally to passby the cloud IOT issue.

4 "Debug mode (Hardware CDC)" was selected from the IDE's Tools > USB Mode menu when the sketch was uploaded.
as above, it was not CDC mode but TinyUSB.

It is quite mysterious. I am going to ask you to provide the full verbose output that is produced when you perform step (8) of the "Reset the Arduino bootloader on the Nano ESP32" procedure. Hopefully that might contain some clue to explain what is causing the problem.

Please do this:

  1. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Uncheck the box next to Show verbose output during: compilation in the "Preferences" dialog.
  3. Check the box next to Show verbose output during: ☐ upload.
  4. Click the "OK" button.
    The "Preferences" dialog will close.
  5. Perform the "Reset the Arduino bootloader on the Nano ESP32" procedure, just as you did before:
    https://support.arduino.cc/hc/en-us/articles/9810414060188-Reset-the-Arduino-bootloader-on-the-Nano-ESP32
  6. Right click on the black "Output" panel at the bottom of the Arduino IDE window.
    A context menu will open.
  7. From the context menu, click Copy All.
  8. Open a forum reply here by clicking the "Reply" button.
  9. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
    Code block icon on toolbar
  10. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the upload output into the code block.
  11. Move the cursor outside of the code block markup before you add any additional text to your reply.
  12. Click the "Reply" button to post the output.
Sketch uses 285749 bytes (9%) of program storage space. Maximum is 3145728 bytes.
Global variables use 30732 bytes (9%) of dynamic memory, leaving 296948 bytes for local variables. Maximum is 327680 bytes.
"C:\Users\raysu\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\4.5.1/esptool.exe" --chip esp32s3 --port "COM3" --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 16MB 0x0 "C:\Users\raysu\AppData\Local\Temp\arduino\sketches\CD49EB4B41A70F90C9B24A898B4BD87A/sketch_apr3a.ino.bootloader.bin" 0x8000 "C:\Users\raysu\AppData\Local\Temp\arduino\sketches\CD49EB4B41A70F90C9B24A898B4BD87A/sketch_apr3a.ino.partitions.bin" 0xe000 "C:\Users\raysu\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.13/tools/partitions/boot_app0.bin" 0xf70000 "C:\Users\raysu\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.13\variants\arduino_nano_nora/extra/nora_recovery/nora_recovery.ino.bin" 0x10000 "C:\Users\raysu\AppData\Local\Temp\arduino\sketches\CD49EB4B41A70F90C9B24A898B4BD87A/sketch_apr3a.ino.bin"
esptool.py v4.5.1
Serial port COM3
Connecting...
Chip is ESP32-S3 (revision v0.2)
Features: WiFi, BLE
Crystal is 40MHz
MAC: ec:da:3b:60:a3:c4
Uploading stub...
Running stub...
Stub running...
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 0x00f70000 to 0x00fb5fff...
Flash will be erased from 0x00010000 to 0x00055fff...
Compressed 15088 bytes to 10374...
Writing at 0x00000000... (100 %)
Wrote 15088 bytes (10374 compressed) at 0x00000000 in 0.2 seconds (effective 587.0 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 158...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (158 compressed) at 0x00008000 in 0.0 seconds (effective 641.7 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 942.6 kbit/s)...
Hash of data verified.
Compressed 286544 bytes to 164238...
Writing at 0x00f70000... (9 %)
Writing at 0x00f7c345... (18 %)
Writing at 0x00f846ce... (27 %)
Writing at 0x00f89c7f... (36 %)
Writing at 0x00f8f0c1... (45 %)
Writing at 0x00f94428... (54 %)
Writing at 0x00f99a8a... (63 %)
Writing at 0x00fa2f29... (72 %)
Writing at 0x00faa52e... (81 %)
Writing at 0x00fafd85... (90 %)
Writing at 0x00fb5d66... (100 %)
Wrote 286544 bytes (164238 compressed) at 0x00f70000 in 1.9 seconds (effective 1190.5 kbit/s)...
Hash of data verified.
Compressed 286112 bytes to 163941...
Writing at 0x00010000... (9 %)
Writing at 0x0001c37c... (18 %)
Writing at 0x000246fc... (27 %)
Writing at 0x00029c8e... (36 %)
Writing at 0x0002f0da... (45 %)
Writing at 0x00034421... (54 %)
Writing at 0x00039b9c... (63 %)
Writing at 0x000430ca... (72 %)
Writing at 0x0004a4d3... (81 %)
Writing at 0x0004fd8a... (90 %)
Writing at 0x00055d24... (100 %)
Wrote 286112 bytes (163941 compressed) at 0x00010000 in 2.0 seconds (effective 1128.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

A post was split to a new topic: Upload to ESP32-S3 board fails: "Packet content transfer stopped"

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