Conectas tu Arduino, abres el IDE, vas a Herramientas → Puerto y no hay nada.
O aparece un puerto que al subir el sketch truena con
avrdude: ser_open(): can't open device.
Casi siempre es lo mismo: tu placa no trae el chip original de Arduino para hablar por USB, sino un CH340 (o CH341), y ese chip necesita un driver que tu sistema no trae de fábrica.
No es que la placa esté mal. Es la diferencia entre un Arduino original y uno genérico, y es justo lo que hace que el genérico cueste una tercera parte.
Primero: ¿de verdad es el CH340?
Antes de instalar nada, confirma qué chip tienes. Míralo en la placa: es un
integrado pequeño, cuadrado, junto al conector USB, con CH340G o CH340C
impreso encima.
Si prefieres preguntárselo a la computadora, conecta la placa y corre:
# macOS
system_profiler SPUSBDataType | grep -A 4 -i "ch34\|serial"
# Linux
lsusb | grep -i "1a86"
En Linux, la respuesta que buscas se ve así:
Bus 001 Device 007: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Ese 1a86:7523 es la huella del CH340. Si aparece, ya sabes qué tienes.
Si en vez de eso ves
0403:6001es un FTDI, y si ves2341:...es un Arduino original — en ambos casos el driver ya viene incluido y tu problema es otro. Salta a Si sigue sin aparecer.
En Windows: descargar, instalar, reiniciar
Es el caso más común y el más sencillo. Son tres pasos.
1. Descarga el driver del fabricante
Bájalo del sitio de WCH, que es quien fabrica el chip:
Driver CH341SER para Windows — sitio oficial de WCH
En esa página hay un botón azul que dice Download. El archivo se llama
CH341SER.EXE.
No lo bajes de otro lado. Si buscas «driver CH340» en Google te van a salir primero varios sitios que reempaquetan el driver con publicidad, con versiones viejas, o de plano con programas que no quieres. El del fabricante es gratis y es el mismo archivo.
2. Instálalo como administrador
- Cierra el Arduino IDE si lo tienes abierto
- Clic derecho sobre
CH341SER.EXE→ Ejecutar como administrador - En la ventana que aparece, presiona primero UNINSTALL
- Después presiona INSTALL
Ese orden importa y es el paso que casi nadie hace. Windows suele tener guardada una versión vieja del driver de alguna placa anterior, y si sólo le das Install encima, la vieja sigue ganando. Desinstalar primero deja el terreno limpio.
Si al presionar UNINSTALL te dice que no hay nada instalado, perfecto — sigue con INSTALL.
3. Reinicia y conecta la placa
Reinicia la computadora. Después conecta el Arduino y abre el Administrador de dispositivos (busca «administrador de dispositivos» en el menú de inicio).
Despliega Puertos (COM y LPT). Debe aparecer:
USB-SERIAL CH340 (COM3)
El número cambia según tu equipo — puede ser COM3, COM5, COM12. Ese es el puerto que vas a elegir en el IDE.
Si aparece con un triángulo amarillo
Un signo de admiración amarillo junto al dispositivo significa que Windows lo ve pero el driver no quedó bien. Casi siempre se arregla así:
- Clic derecho sobre el dispositivo → Desinstalar el dispositivo
- Marca la casilla de eliminar el software del controlador si aparece
- Desconecta la placa
- Corre
CH341SER.EXEotra vez como administrador (UNINSTALL, luego INSTALL) - Reinicia y vuelve a conectar
Si aparece como «Dispositivo desconocido» o no aparece nada
Antes de pelearte con el driver, prueba con otro cable. Es la causa número uno y la más frustrante: muchos cables USB son sólo de carga y no llevan los pines de datos, así que la placa enciende pero la computadora nunca la ve.
Usa el cable de un disco duro externo o de un teléfono que sí sincronice archivos.
Si el puerto aparece pero el IDE no puede usarlo
Casi siempre es que otro programa ya tiene abierto ese puerto. El monitor serie del propio Arduino IDE es el culpable más frecuente, pero también pasa con software de impresoras 3D como Cura o Pronterface.
Cierra todo lo que pueda estar hablando con la placa y vuelve a intentar.
En Linux casi nunca hay que instalar nada
Esta es la buena noticia que casi nadie dice: el kernel de Linux trae el
driver del CH340 desde hace años. El módulo se llama ch341 y se carga solo.
Conecta la placa y revisa:
# ¿Se cargó el módulo?
lsmod | grep ch341
# ¿Qué puerto le tocó?
ls /dev/ttyUSB*
Si sale /dev/ttyUSB0, ya está: ese es tu puerto. Si el IDE aún no te deja
usarlo, el problema no es el driver sino los permisos.
El paso que a todos se les olvida en Linux
En la mayoría de las distribuciones los puertos serie pertenecen al grupo
dialout, y tu usuario no está en él. Por eso el puerto existe pero no lo
puedes abrir.
# Agrégate al grupo
sudo usermod -a -G dialout $USER
Cierra la sesión y vuelve a entrar. Un cambio de grupo no aplica a las sesiones ya abiertas; reiniciar la terminal no basta. Después verifica:
groups | grep dialout
Si te urge y no quieres cerrar sesión, esto lo arregla hasta que desconectes la placa:
sudo chmod a+rw /dev/ttyUSB0
Es temporal a propósito: cada vez que reconectes vuelve a su estado. La solución de verdad es el grupo.
Si tu distro trae brltty (Ubuntu 22.04 y posteriores)
Hay una trampa conocida. brltty es un servicio de accesibilidad para pantallas
braille, y reclama el mismo identificador USB que el CH340. Cuando está
activo, tu Arduino aparece un segundo y desaparece.
Compruébalo justo después de conectar la placa:
sudo dmesg | tail -20
Si ves una línea con brltty cerca de la del ch341, esa es la causa:
# Quitar sólo la regla que estorba, conservando el servicio
sudo apt remove brltty
Si usas braille de verdad y no puedes quitarlo, se puede excluir sólo ese
dispositivo en /etc/udev/rules.d/, pero eso ya es harina de otro costal.
En macOS sí hay que instalar el driver
Aquí no viene incluido. Y hay una diferencia que importa según tu Mac.
Macs con Apple Silicon o macOS moderno
Desde Big Sur, el driver correcto es el que usa el sistema de extensiones moderno. No instales los drivers viejos que aparecen primero al buscar: están hechos para kernel extensions que Apple ya no permite cargar, y lo único que consigues es un reinicio en modo recuperación para desactivarlos.
El camino limpio es el driver oficial de WCH, el fabricante del chip:
Driver CH34x para macOS — sitio oficial de WCH
Se descarga un .zip, adentro viene un .pkg y se instala como cualquier
programa.
Después de instalar, reinicia. Sí, de verdad — la extensión no se activa hasta el siguiente arranque.
Autorizar la extensión
macOS bloquea las extensiones de terceros la primera vez. Al reiniciar, ve a:
Ajustes del sistema → Privacidad y seguridad
Busca abajo un mensaje que diga que se bloqueó software del desarrollador WCH y dale Permitir. Vas a tener que reiniciar otra vez.
Si no ves ese mensaje, es porque ya lo autorizaste o porque el instalador no terminó bien.
Verificar que quedó
ls /dev/tty.* | grep -i "usbserial\|wchusbserial"
Deberías ver algo como:
/dev/tty.usbserial-1420
/dev/tty.wchusbserial1420
Ese es el puerto que vas a elegir en el IDE. Si aparecen los dos, usa cualquiera: son el mismo dispositivo por dos rutas.
Elegir el puerto en el IDE
Abre el Arduino IDE después de conectar la placa y de haber reiniciado.
- Herramientas → Placa: elige tu modelo (Arduino Nano, Uno, etc.)
- Herramientas → Puerto: elige el que apareció arriba
- Herramientas → Procesador (sólo en Nano): si el sketch no sube, cambia
entre
ATmega328PyATmega328P (Old Bootloader)
Ese último punto tumba a mucha gente. Los Nano genéricos suelen traer el
bootloader viejo. Si el IDE se queda intentando y termina con
avrdude: stk500_recv(): programmer is not responding, prueba con la otra
opción antes de pensar que la placa está muerta.
Si sigue sin aparecer
En orden, de lo más común a lo menos:
- Cambia el cable. Muchos cables USB son sólo de carga y no llevan los pines de datos. Es la causa número uno y la más frustrante. Prueba con el cable de un disco duro externo o de un teléfono que sí sincronice.
- Cambia de puerto USB. Los concentradores sin alimentación propia a veces no dan corriente suficiente.
- Revisa que la placa encienda. El LED de encendido debe quedarse fijo.
- Prueba en otra computadora. Si tampoco aparece ahí, el problema es la placa o el cable, no tu sistema.
- Cierra lo que pueda tener el puerto ocupado: el monitor serie del IDE, Cura, PuTTY, o cualquier programa que hable con la placa.
Por qué pasa esto
El microcontrolador del Arduino no habla USB. Necesita un traductor entre USB y serie, y ahí es donde las placas se diferencian:
| Placa | Chip USB | Windows | macOS | Linux |
|---|---|---|---|---|
| Arduino Uno original | ATmega16U2 | No hace falta | No hace falta | No hace falta |
| Arduino genérico | CH340 / CH341 | Sí | Sí | Ya viene incluido |
| Placas antiguas y clones | FTDI FT232 | Normalmente no | Normalmente no | Ya viene incluido |
| ESP32 y muchos ESP8266 | CH340 o CP2102 | Sí | Sí | Ya viene incluido |
El CH340 hace exactamente el mismo trabajo por una fracción del costo. Lo único que pide a cambio es este driver.
¿Te quedaste atorado en algún paso? Escríbenos y lo vemos — la mayoría de las veces resulta ser el cable.

