Seems like i cant upload because force reset does not seem to work?

Hi, I cant seem to upload to my esp32-s3. It does work when I force it into boot mode by holding and pressing the boot and reset buttons on the board.
Log:

*  Executing task: platformio run --target upload 

Processing adafruit_feather_esp32s3_nopsram (platform: espressif32; board: adafruit_feather_esp32s3_nopsram; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/adafruit_feather_esp32s3_nopsram.html
PLATFORM: Espressif 32 (6.9.0) > Adafruit Feather ESP32-S3 No PSRAM
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20017.0 (2.0.17) 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - tool-mkfatfs @ 2.0.1 
 - tool-mklittlefs @ 1.203.210628 (2.3) 
 - tool-mkspiffs @ 2.230.0 (2.30) 
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
Warning! An extra UF2 bootloader image is already added!
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/adafruit_feather_esp32s3_nopsram/src/main.cpp.o
Linking .pio/build/adafruit_feather_esp32s3_nopsram/firmware.elf
Retrieving maximum program size .pio/build/adafruit_feather_esp32s3_nopsram/firmware.elf
Checking size .pio/build/adafruit_feather_esp32s3_nopsram/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]   9.3% (used 30580 bytes from 327680 bytes)
Flash: [=         ]  13.8% (used 290117 bytes from 2097152 bytes)
Building .pio/build/adafruit_feather_esp32s3_nopsram/firmware.bin
esptool.py v4.5.1
Creating esp32s3 image...
Merged 2 ELF sections
Successfully created esp32s3 image.
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: /dev/ttyACM0
Forcing reset using 1200bps open/close on port /dev/ttyACM0
Waiting for the new upload port...
Uploading .pio/build/adafruit_feather_esp32s3_nopsram/firmware.bin
esptool.py v4.5.1
Serial port /dev/ttyACM0
Connecting...
Traceback (most recent call last):
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool.py", line 34, in <module>
    esptool._main()
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 1032, in _main
    main()
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 674, in main
    esp = esp or get_default_connected_device(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 921, in get_default_connected_device
    _esp.connect(before, connect_attempts)
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool/loader.py", line 640, in connect
    last_error = self._connect_attempt(reset_strategy, mode)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool/loader.py", line 525, in _connect_attempt
    reset_strategy()  # Reset the chip to bootloader (download mode)
    ^^^^^^^^^^^^^^^^
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool/reset.py", line 83, in __call__
    self._setDTRandRTS(False, False)
  File "/home/vinzroosen/.platformio/packages/tool-esptoolpy/esptool/reset.py", line 58, in _setDTRandRTS
    fcntl.ioctl(self.port.fileno(), TIOCMSET, struct.pack("I", status))
OSError: [Errno 71] Protocol error
*** [upload] Error 1
======================================================================== [FAILED] Took 12.07 seconds ========================================================================

 *  The terminal process "platformio 'run', '--target', 'upload'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it.

It is a known bug. There is a workaround solution in latest esptool.py which is not available from Platformio. You can switch to the pioarduino fork.

1 Like

This is what helped me

  1. Hold BOOT button on your FeatherS3
  2. Press and release RESET button (while holding BOOT)
  3. Release BOOT button
  4. Immediately run upload in PlatformIO