ESP32-S3 bootloader broken (?)
Hi! I somehow seem to have broken my Nano ESP32-S3 bootloader.
Symptoms:
- While the sketch runs (which works), dfu-util -l sees a device.
- When I build with -t upload using dfu with platformio, I get a LIBUSB_ERROR_PIPE and the device resets.
- After pressing the reset button just a single time, the LED turns and stays faint purple, which I think is what the reset guide calls firmware download mode. In this state, dfu-util -l doesn't see any devices. Repeated presses don't change this.
- When starting the serial monitor in this mode, I get a repeated message:
- At 0x1000, I see binary... Wait, bootloader starts at 0x0, where did I get 0x1000... does have some strings at the start, looks like a bootloader.
- Partition table looks as intended:
I tried zeroing otadata but it didn't change anything. I had also previously tried with a factory partition and without an otadata, same effect.
I had previously reflashed the partition table manually a couple of times because neither esptool nor dfu seem to actually write it for some reason (esptool does write the spiffs partition itself, though), but dfu conveniently builds it with -t upload so I used that bin file.
Flashing the sketch with esptool still works but it's much less convenient than dfu, so I'd like to restore the original behavior.
Bootloader attached for reference.
Can someone explain the behavior to me? What's going on internally, and how did I break things? Thanks!
5 Replies
Please ask in #esp-help , this channel is for official Arduino products.
The Nano ESP32 is not an Arduino product?
Fixed in #esp-help - my primary intent was getting an explanation, but switching to
and uploading with esptool once fixed it. So probably something toolchain-related that's not worth really digging into.