Cambio de permisos en puerto serie

54

Estoy usando el IDE de Arduino en Ubuntu y tengo problemas con el puerto serie. Ha funcionado en el pasado, pero por razones que pueden ser innecesarias, sentí la necesidad de cambiar la propiedad de algunos de los archivos de la propiedad raíz a la propiedad de mis usuarios.

Esto hizo que el IDE funcionara correctamente, pero perdí la capacidad de usar el puerto serie correcto. En la carpeta de desarrollo, el puerto que necesito figura en el permiso 166. Alguien (que ya no está en el área para ayudarme) cambió los permisos al 666, lo que hizo que todo funcionara gloriosamente.

Sin embargo, se revirtió tan pronto como reinicié mi computadora, y si ahora trato de usar el comando:

sudo chmod 666 ttyACM0

no pasa nada. No hay mensajes de error, pero tampoco hay cambio de permiso.

¿Cómo puedo cambiarlo y cómo puedo hacer que cambie de forma permanente?

Pido disculpas si esta pregunta es demasiado simplista o poco clara, soy un novato de ubuntu y no me disgustarían los comentarios.

Terrik
fuente
1
sudo chmod 666 / dev / ttyACM0 Esta fue la única sugerencia en esta página que funcionó en mi entorno en vivo beta 14.04. ¡Gracias!

Respuestas:

76

El problema con los permisos para /dev/ttyACM0se puede resolver de forma permanente agregándose al dialoutgrupo. Tendrá que cerrar sesión y luego volver a iniciarla antes de que se reconozca el cambio de grupo.

Puedes hacer esto con sudo usermod -a -G dialout $USER

Rinzwind
fuente
Me enteré de esto cuando Arduino IDE pidió dar a root para agregarse al "grupo Dailout". Ahora se lo que es.
Ufoguy
Acabo de comprar un adaptador Pulse-Eight USB - CEC para usar con mi nuevo televisor y descubrí que inicialmente no funcionaba con Kodi en Ubuntu. Después de verificar el registro de fallas y buscar en Google el mensaje de error "ERROR: CecLogMessage - error al abrir el puerto serie '/ dev / ttyACM0': Permiso denegado", esta página apareció como resultado. Gracias a usted (y a Don Kirkby, más abajo, eso también funciona), pude rectificar el problema de inmediato.
Rich.T.
Además, la respuesta de "user247020" me dio otra solución: abrir la herramienta GUI "Usuarios y grupos" y convertirse en un "Administrador". Esto lo agregará al grupo "marcado" (es decir, "Usar módems"), entre otros.
Rich.T.
usermod -a -G dialout pi funciona bien, después de sudo chgrp dialout / dev / ttyS0 y funciona bien pero cuando reinicio toda la configuración se pierde. Estoy en
Raspberry Pi
Agregue cualquier comando que necesite rehacer a un script de inicio. Entonces bash o / etc / profile o init.
Rinzwind
20

No pude obtener la sugerencia de Rinzwind para trabajar, porque se quejó de que la cuenta de usuario ya existe. En cambio, utilicé este comando para agregar un usuario existente ( terrik) a un grupo existente ( dialout), como se describe en el Wiki de Ayuda de Ubuntu .

sudo adduser terrik dialout

También es útil este comando para enumerar sus grupos actuales, aunque como dice Rinzwind, debe cerrar sesión e iniciar sesión antes de que el puerto serie comience a permitirle entrar.

groups terrik
Don Kirkby
fuente
10

No pude conseguir que la respuesta de Terrik funcionara, pero podría hacerlo si hiciera este pequeño ajuste en el camino ttyACM0.

sudo chmod 666 /dev/ttyACM0

Publicaría como un comentario, pero todavía no tengo los privilegios para eso ...

gbmhunter
fuente
1
Los permisos parecen restablecer al desenchufar y volver a enchufar de nuevo en Arduino.
user1063287
No funciona. :(
Freddy
funciona bien también. pero requiere la regla de udev para volver a permitir la reconexión
pylover
Lo intenté sudo chmod 666 /dev/ttyACM0y no funciona cuando vuelvo a comenzar. ¿Alguien tiene una solución?
user1063287
Hmm peepz esto funciona ... Agregue el comando a un script de inicio. (/ Dev se recrea en el arranque, por lo que debe rehacer este comando en cada arranque)
Rinzwind
10

Otra posibilidad es hacer un archivo de reglas en el /etc/udev/rules.d/directorio. Tuve un problema similar y he creado un 50-myusb.rulesarchivo en el directorio anterior con este contenido:

KERNEL=="ttyACM[0-9]*",MODE="0666"

Tenga en cuenta que esto le dará a cualquier dispositivo conectado a ttyACM socket permisos de lectura / escritura. Si solo necesita un dispositivo específico para obtener permisos de lectura / escritura, también debe verificar idVendory idProduct. Puede encontrarlos ejecutando el lsusbcomando dos veces, una vez sin su dispositivo conectado y otra vez cuando está conectado, luego observe la línea adicional en la salida. Allí verás algo así Bus 003 Device 005: ID ffff:0005. En este caso idVendor = ffffy idProduct = 0005. El tuyo será diferente. Luego modifica el archivo de reglas para:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

Ahora solo este dispositivo obtiene los permisos. Lea esto para saber más sobre cómo escribir reglas udev.

Modelo no estándar
fuente
2

Intente ir a Sistema / Usuarios y Grupos y marque la casilla de su nombre de usuario en el Grupo TTY.

user247020
fuente
[Errno 13] Permission denied: '/dev/ttyACM0'. Además del ttygrupo, el usuario también está en el dialoutgrupo. Linux Mint 17.1.
user1063287
1
@ user1063287 Probarsudo chmod a+rw /dev/ttyACM0
Vladimir S.