Errores comunes del ESP32 y cómo solucionarlos

No reconoce el puerto, no aparece en Arduino IDE, No serial data received, No sync reply y más: causa y solución paso a paso.

Conectaste tu ESP32, abriste Arduino IDE y algo no funciona: la computadora no la reconoce, no aparece el puerto o sale un error en rojo al subir el código. Son los errores más comunes del ESP32 y casi todos se solucionan en pocos minutos. Aquí tienes cada uno con su causa y los pasos para resolverlo.

🔌No reconoce el puerto
cable, puerto USB o driver
🔘No carga el código
en la mayoría basta el botón BOOT
🧩Sirve para cualquier ESP32
DevKit de 30 o 38 pines

¿Qué error tienes?

Lo que vesPrimero prueba
La computadora no reconoce la placa o no aparece el puerto COMCable de datos, otro puerto USB y el driver
No aparece "ESP32" en la lista de placas de Arduino IDEInstalar el paquete esp32
No serial data receivedMantener presionado BOOT al cargar
Wrong boot mode detectedEntrar al modo de carga a mano
No sync reply, Timed out waiting for packet header o Invalid head of packetBOOT, desconectar pines y bajar la velocidad
Could not open COM3, the port is busy or doesn't existCerrar el programa que usa el puerto
Símbolos raros en el Monitor SerieIgualar los baudios
Lee el mensaje completo. Al final, Arduino IDE suele mostrar algo general como Failed uploading: uploading error: exit status 2. Ese mensaje solo avisa que la carga falló. La causa está unas líneas más arriba, en la línea que empieza con A fatal error occurred:. Busca esa frase en la tabla de arriba.

Las partes de la placa que vas a usar

Para casi todas las soluciones vas a usar dos botones y el conector USB. En la mayoría de placas ESP32 DevKit están al lado del conector USB:

  • BOOT (a veces rotulado IO0): pone la placa en modo de carga, el modo en el que recibe tu código.
  • EN (a veces RST): reinicia la placa. Tu programa vuelve a empezar desde cero.
  • Chip USB: es el que convierte el USB en una conexión serie que entiende el ESP32. Su nombre te dice qué driver necesitas.

Placa ESP32 DevKit con el botón BOOT, el botón EN, el conector USB y el chip USB (CP2102, CH340 o CH9102) señalados.

1 · La computadora no reconoce el ESP32 (no aparece el puerto)

Conectas la placa y en Arduino IDE, en Herramientas > Puerto, no aparece ningún puerto nuevo, o el menú está gris. Sigue estos pasos en orden:

Paso 1: usa un cable de datos

Es la causa más común. Muchos cables USB, sobre todo los de cargadores, son solo de carga: encienden la placa (se prende su LED), pero no tienen los hilos de datos y la computadora no ve nada. Prueba con un cable que sepas que pasa datos, por ejemplo uno con el que hayas pasado fotos del celular a la computadora.

Paso 2: cambia de puerto USB

Conecta la placa directo a la computadora, sin hub, sin extensión y sin el teclado de por medio. Si tienes una laptop, prueba también el puerto del otro lado.

Paso 3: instala el driver del chip USB

Mira el chip pequeño que está cerca del conector USB (ver la imagen de arriba). Si lo necesitas, usa una lupa o la cámara del celular con zoom. Según lo que diga, instala su driver oficial:

Dice en el chipDriverDónde descargarlo
CP2102 o CP2104CP210x de Silicon Labssilabs.com
CH340CH341SER de WCHwch-ic.com (Windows) · Mac
CH9102CH343SER de WCHwch-ic.com (Windows)

Después de instalarlo, desconecta la placa, cierra Arduino IDE y vuelve a abrirlo. Si no se ve, reinicia la computadora.

Paso 4: comprueba que la computadora la ve

  • Windows: abre el Administrador de dispositivos (clic derecho en el botón Inicio). Con el driver instalado, la placa aparece en Puertos (COM y LPT) con un nombre como Silicon Labs CP210x USB to UART Bridge (COM3) o USB-SERIAL CH340 (COM5). Ese número COM es el que eliges en Arduino IDE. Si en cambio aparece en Otros dispositivos con un triángulo amarillo, falta el driver (paso 3). Si al conectar no aparece nada nuevo, vuelve a los pasos 1 y 2.
  • Mac: el puerto aparece con un nombre como /dev/cu.usbserial-…, /dev/cu.SLAB_USBtoUART o /dev/cu.wchusbserial….
  • Linux: el puerto suele ser /dev/ttyUSB0. Si aparece, pero Arduino IDE no puede abrirlo, dale permiso a tu usuario con sudo usermod -a -G dialout $USER y cierra sesión para que se aplique.

2 · No aparece "ESP32" en la lista de placas

Arduino IDE viene listo para las placas Arduino, pero no siempre trae las ESP32. Hay que instalar el paquete oficial de Espressif, el fabricante del chip:

  1. Abre Archivo > Preferencias.
  2. En URLs adicionales de gestor de placas (Additional boards manager URLs) pega esta dirección:
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
    Si ya tenías otra dirección, separa las dos con una coma.
  3. Abre el Gestor de placas (Herramientas > Placa > Gestor de placas, o el ícono de placa en la barra izquierda), busca esp32 e instala esp32 by Espressif Systems. Tarda unos minutos.
  4. En Herramientas > Placa > esp32 elige ESP32 Dev Module. Sirve para las placas DevKit de 30 y de 38 pines.

Si todavía no tienes Arduino IDE, mira primero cómo descargar e instalar Arduino IDE.

3 · "Failed to connect to ESP32: No serial data received"

Connecting......................................

A fatal error occurred: Failed to connect to ESP32: No serial data received.

Qué significa: la computadora sí ve el puerto, pero el ESP32 no contestó. Normalmente la placa entra sola al modo de carga cuando subes el código. Si no lo hace, se queda esperando y sale este error.

Solución: presiona BOOT mientras carga. En la mayoría de casos con esto basta:

  1. Revisa que en Herramientas > Puerto esté elegido el puerto de tu placa.
  2. Presiona Subir (la flecha).
  3. Cuando en la parte de abajo aparezca Connecting...., mantén presionado el botón BOOT.
  4. Suéltalo apenas empiecen a salir los porcentajes (Writing at 0x… (14 %)).
  5. Al terminar, si tu programa no arranca solo, presiona EN una vez.

Cuándo presionar BOOT en el ESP32: mantenerlo presionado desde que aparece Connecting hasta que empiezan los porcentajes de carga, y luego presionar EN.

Algunas placas cargan solas y otras necesitan este paso, según su circuito de carga automática. En las dos, el código se sube igual.

Si con BOOT sigue saliendo el error, prueba también los pasos 1 y 2 del error 1 (cable y puerto USB) y lo de la sección 5.

4 · "Wrong boot mode detected"

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)!
The chip needs to be in download mode.

Qué significa: el ESP32 sí responde, pero arrancó en modo normal (ejecutando tu programa) en vez de en modo de carga. El número entre paréntesis puede variar.

Solución: primero prueba el método de BOOT del error 3. Si no funciona, pon la placa en modo de carga antes de subir el código:

  1. Mantén presionado BOOT.
  2. Sin soltar BOOT, presiona y suelta EN.
  3. Suelta BOOT. La placa queda esperando el código.
  4. Ahora presiona Subir en Arduino IDE.
  5. Al terminar, presiona EN para que arranque tu programa.

5 · "No sync reply", "Timed out waiting for packet header" o "Invalid head of packet"

A fatal error occurred: Failed to connect to ESP32: Download mode successfully detected,
but getting no sync reply: The serial TX path seems to be down.

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

A fatal error occurred: Invalid head of packet (0x…): Possible serial noise or corruption.

Qué significa: la comunicación entre la computadora y el ESP32 se corta o llega con errores. Las causas más comunes son algo conectado en los pines que usa la carga, el cable o una velocidad de carga muy alta. Prueba en este orden:

  1. Usa el método de BOOT del error 3.
  2. Desconecta lo que tengas en los pines TX0 y RX0 (GPIO 1 y 3). Son los mismos por los que se carga el código.
  3. Desconecta también lo que esté en los GPIO 2, 12 y 15. Estos pines deciden cómo arranca el ESP32, y un sensor o módulo conectado ahí puede impedir que entre al modo de carga. En la placa de 38 pines, deja libre también el GPIO 0.
  4. Prueba la placa sola, solo con el cable USB: fuera del protoboard, del shield y sin cables. Si así carga, el problema está en algo de lo que tenías conectado. Vuelve a conectar las cosas de a una.
  5. Baja la velocidad de carga: en Herramientas > Upload Speed cambia 921600 por 115200. Tarda un poco más, pero es más estable con cables largos o de baja calidad.
  6. Cambia el cable y el puerto USB (pasos 1 y 2 del error 1).

Pines del ESP32 DevKit de 30 pines que pueden impedir la carga: TX0 y RX0 en rojo, GPIO 2, 12 y 15 en naranja.

6 · "The port is busy or doesn't exist" (puerto ocupado)

A fatal error occurred: Could not open COM3, the port is busy or doesn't exist.

Qué significa: otro programa está usando el puerto, o la placa se desconectó. En Windows también puede salir como Acceso denegado (Access is denied). En Linux, como Permission denied o Device or resource busy.

  • Cierra el Monitor Serie o el Serial Plotter si los tienes abiertos en otra ventana de Arduino IDE.
  • Cierra otros programas que usen el puerto: otra ventana de Arduino IDE, PuTTY, Thonny, el monitor de otro editor, etc.
  • Desconecta y vuelve a conectar la placa, y elige otra vez el puerto en Herramientas > Puerto. A veces el número COM cambia.
  • En Linux, si dice Permission denied, falta el permiso dialout (paso 4 del error 1).

7 · Salen símbolos raros en el Monitor Serie

⸮⸮⸮x⸮⸮@⸮⸮⸮⸮⸮⸮

Qué significa: el código se cargó bien, pero el Monitor Serie está escuchando a otra velocidad que la de tu programa.

Solución: busca en tu código la línea Serial.begin(115200); y, en la esquina del Monitor Serie, elige el mismo número (por ejemplo, 115200 baud). Si tu código usa otro valor, como 9600, elige ese. Luego presiona EN para ver el programa desde el inicio.

Preguntas frecuentes

¿Tengo que presionar BOOT cada vez que cargo un código?

Depende de la placa: muchas entran solas al modo de carga y otras necesitan que presiones BOOT. Si a la tuya le funciona con BOOT, puedes seguir cargando así sin problema. Solo es un paso más.

Cargó bien, pero mi programa no hace nada. ¿Qué pasa?

Si cargaste con BOOT presionado, la placa puede quedarse en modo de carga. Presiona EN una vez para que arranque tu programa.

¿Sirve el cable de mi celular?

Sí, si es un cable de datos y tiene el conector correcto (micro-USB o tipo C, según tu placa). Si con ese cable la computadora no detecta nada, prueba con otro: puede ser solo de carga.

¿Estas soluciones sirven para el ESP32 de 30 y de 38 pines?

Sí. Las dos usan el mismo chip y se cargan igual desde Arduino IDE. Si quieres conocer sus diferencias, mira ESP32 de 30 pines vs 38 pines.

¿Qué placa elijo en Arduino IDE?

Para las ESP32 DevKit (de 30 y de 38 pines), ESP32 Dev Module. Está en Herramientas > Placa > esp32 después de instalar el paquete de Espressif (error 2).

¿Ya cargó tu código? Sigue con tu proyecto con WiFi y Bluetooth.

Ver todo ESP32 ESP32 de 30 vs 38 pines
Errores comunes del ESP32 y cómo solucionarlos
Nanoparuro 14 de octubre de 2026
Compartir
Etiquetas
Identificarse dejar un comentario