domingo, 14 de enero de 2024

Soluciona error "Permission denied" al subir código a Arduino en Linux

USB Arduino permission error

Muy buenas a todos Arduineros y Arduineras!!!

Hace poco reinstale el sistema operativo Ubuntu en el portátil y como es el que uso normalmente para programar los Arduinos, instale el IDE Arduino.

Me pongo en faena y subo el sketch, el programa compila bien y cuando toca el momento de subir el programa al microcontrolador, me aprece el siguiente error en pantalla:


avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied
Failed uploading: uploading error: exit status 1


USB Arduino permission error
/dev/ttyUSB0: Permission denied



El error "can't open device "/dev/ttyUSB0": Permission denied"

Esto es un error frecuente en instalaciones nuevas, Y es un tema de seguridad. Los usuarios normales no suelen utilizar el puerto USB para realizar conexiones serial.
En este caso es una distribución Ubuntu (Debian) y es muy fácil de solucionar.

El error básicamente nos viene a decir que no tenemos permisos de escritura o lectura para usar el puerto USB0 (USB1, AMC0, etc).

Para solucionar el error avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied tenemos dos opciones, una temporal y otra permanente y son las siguientes:

Solución temporal:


sudo chmod 777 /dev/ttyUSB0

Con esto conseguimos permisos de lectura, escritura y ejecución, pero cada vez que reiniciemos el puerto, tendremos que volver a ejecutar el mismo comando.


Solución permanente para los permisos del puerto USB:

Esta es la solución que recomiendo si usas Arduino o ESP o cualquier microcontrolador de manera habitual:

Primero tenemos que saber a que grupo pertenece /dev/ttyUSB0. Esto lo podemos averiguar fácilmente utilizando en el terminal el comando:


ls -l /dev/ttyUSB0

Y en su respuesta nos dirá a que grupo pertenece, generalmente al grupo dialout:

crw-rw---- 1 root dialout 188, 0 ene 14 08:57 /dev/ttyUSB0

Una vez que confirmamos que es dialout podemos añadir nuestro usuario al grupo dialout con el comando usermod:


sudo usermod -a -G dialout nombre_usuario

Con los pasos anteriores terminados, reiniciamos el ordenador y ya no tendremos problemas con los permisos a la hora de escribir o leer de los puertos USB para poder usar con total normalidad con Arduino IDE.

Además es valido para cualquier puerto ya que generalmente todos se crean en el mismo grupo. Es decir, si tenemos 2 Arduinos conectados esto es valido tanto para /dev/ttyUSB0 como para /dev/ttyUSB1.

Espero que esta información les sirva de ayuda, Saludos!!!

También te puede interesar:

No hay comentarios :