Estoy intentando comunicarme con un Arduino desde Ubuntu 12.04. Al conectar el cable USB, el puerto serie del arduino aparece como /dev/ttyUSB0. Cuando intento conectarme usandomoserial, aparece el error "No se pudo abrir el dispositivo /dev/ttyUSB0", pero no cuando iniciomoserialusandosudo. ¿Qué tengo que configurar para que el dispositivo serie sea accesible como usuario normal no root?
Respuesta1
Tienes varias opciones:
Asignación automática de ACL
Lo más probable es que tenga systemd-logind o ConsoleKit ejecutándose en Ubuntu, que pueden configurar automáticamente las ACL en los nodos del dispositivo según la cuenta de usuario que haya iniciado sesión actualmente en la consola. Estas ACL otorgan acceso adicional a los permisos habituales y se pueden ver usando getfacl
.
Para usar esto, agregue lo siguiente a /etc/udev/rules.d/60-extra-acl.rules
1 :
KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess"
( 1 Sí, cree el archivo. No existe de forma predeterminada; todo el directorio es para personalizaciones del administrador).
Acceso basado en grupos
Los dispositivos tty generalmente son legibles/escribibles por un usuario específico.grupocomo "dialout" o "uucp". Agréguese a ese grupo para obtener acceso atodopuertos seriales:
# gpasswd -a YourUsername dialout
No olvide cerrar sesión e iniciar sesión nuevamente para que se apliquen los cambios del grupo.
Cambios de permiso o propiedad
Las reglas de udev similares a las anteriores también se pueden usar para configurar el propietario y el grupo "principal", así como los permisos (que es como se configuró el grupo predeterminado en primer lugar). Por ejemplo:
KERNEL=="ttyUSB[0-9]*", OWNER="YourUsername"
or: KERNEL=="ttyUSB[0-9]*", GROUP="users", MODE="0660"
or: KERNEL=="ttyUSB[0-9]*", MODE="0666"
Puede asignar parámetros de PROPIETARIO, GRUPO y MODO.
Cambio manual temporal
Para hacer ununa vezcambie, simplemente use chmod
y/o chown
como lo haría normalmente.
# chown YourUsername /dev/ttyUSB0
or: # chmod a+rw /dev/ttyUSB0