u/Glad-News3666

Recuperar Arduino Nano ESP32 después de quedar en loop de reinicio / “ESP32 Family Device” / No DFU capable USB device

Publico esto por si a alguien más le ha pasado.

Estuve trabajando en un proyecto usando un Arduino Nano ESP32 y honestamente llegué a considerar abandonarlo y cambiarme a otro ESP32 o incluso a otro Arduino.

Nunca pensé que una placa relativamente moderna pudiera convertirse en un dolor de cabeza tan grande, especialmente al inicio.

Uno de los primeros errores que cometí fue jugar con las configuraciones de:

Tools → USB Mode / Debug Mode / Hardware CDC

en Arduino IDE.

Eso terminó dejando la placa en un estado donde:

  1. se reiniciaba constantemente
  2. aparecía como: ESP32 Family Device
  3. desaparecía y aparecía el puerto COM
  4. era imposible subir sketches
  5. Arduino IDE mostraba: No DFU capable USB device available

Después de muchas horas pude recuperarla usando esptool.

Estoy dejando aquí el procedimiento porque casi no encontré información clara sobre esto.

Importante

Antes de empezar conecta:

GPIO0 (B1 en la placa) → GND

ANTES de conectar el USB.

Esto fuerza al ESP32-S3 a entrar en modo ROM y evita que el sketch problemático siga reiniciando la placa.

(Aunque tambien me funcionó sin hacer el puente)

Herramientas usadas

Usé:

Python

esptool

Anaconda Prompt (aunque probablemente funcione en cualquier terminal que tenga Python instalado).

PASO 1 — Verificar comunicación con el chip

python -m esptool --chip esp32s3 --port COM3 chip-id

Si el paso 1 falla

Prueba esto inmediatamente después de conectar la placa:

python -m esptool --chip esp32s3 erase-flash

Esto me ayudó cuando la placa se reiniciaba demasiado rápido y el puerto desaparecía.

Después vuelve a intentar desde el PASO 1.

PASO 2 — Borrar completamente la flash

python -m esptool --chip esp32s3 --port COM3 erase-flash

PASO 3 — Compilar un sketch

En Arduino IDE:

  1. abre tu sketch
  2. presiona solamente: Verify
  3. No uses Upload.
  4. Esto generará los archivos .bin.

PASO 4 — Encontrar carpeta temporal del build

Busca una carpeta llamada:

arduino_build_xxxxxx

en:

C:\Users\TU_USUARIO\AppData\Local\Temp

PASO 5 — Reflashear manualmente

python -m esptool --chip esp32s3 --port COM3 --baud 460800 write-flash 0x0 "C:\Users\TU_USUARIO\AppData\Local\Temp\arduino_build_xxxxxx\TuSketch.ino.bootloader.bin" 0x8000 "C:\Users\TU_USUARIO\AppData\Local\Temp\arduino_build_xxxxxx\TuSketch.ino.partitions.bin" 0x10000 "C:\Users\TU_USUARIO\AppData\Local\Temp\arduino_build_xxxxxx\TuSketch.ino.bin"

Reemplaza:

  1. COM3
  2. arduino_build_xxxxxx
  3. TuSketch

por los tuyos.

PASO 6 — Desconectar la placa

Cuando termine:

  1. desconecta USB
  2. quita el puente GPIO0 ↔ GND
  3. vuelve a conectar USB

PASO 7 — Listo

La placa debería volver a aparecer normalmente como: "Arduino Nano ESP32" y ya permitir subir sketches otra vez.

NOTAS IMPORTANTES

  1. El problema NO era hardware

En mi caso:

  • la placa NO estaba dañada
  • el ESP32-S3 seguía funcionando perfectamente

El problema era solamente:

  • USB mode + DFU + Hardware CDC + reboot loop
  1. NO uses Upload para recuperar la placa

Porque Arduino IDE intenta usar: "dfu-util"

y eso normalmente falla cuando el firmware USB quedó corrupto.

Por eso esptool funciona mucho mejor para recuperar la placa.

Espero que esto le ahorre horas de sufrimiento a alguien más.

reddit.com
u/Glad-News3666 — 7 days ago