Terminal de puerto serie> No se puede abrir / dev / ttyS0: permiso denegado

19

Tenía Windows XP en este cuadro y falló. Pensando que era un sistema operativo dañado, intenté reinstalarlo y falló. Pero luego intenté instalar Ubuntu, y no pude ejecutarlo desde el USB o desde el HD.

Hice la prueba de memoria y descubrí que uno de mis 512 MB de memoria (había 2) falló. Eliminé el malo y pude instalar Ubuntu, pero fue lento.

Estaba tratando de configurar rápidamente mi radio de paquete para el huracán Sandy. Descargué el terminal del puerto serie y pude usarlo un poco, pero el sistema siguió bloqueándose. Así que instalé Xubuntu junto a él, planeando quedarse sin el día siguiente para obtener RAM para la caja. Ponga Xubuntu y ahora recibo el siguiente error con la terminal del puerto serie:

Cannot open /dev/ttyS0: Permission denied

Me gustaría poder usar el terminal de puerto serie, o equivalente con Xubuntu para poder usar mi terminal de paquete kpc3, conectarme al puerto com en la parte posterior de mi computadora.

¿Algunas ideas?

Joe Reynolds
fuente

Respuestas:

39

Los dispositivos tty pertenecen al grupo "dialout", sospecho que no es miembro de este grupo y, por lo tanto, se le niega el acceso a / dev / ttyS0, por lo que debe agregarse a ese grupo.

Primero verifique si es miembro de ese grupo:

groups ${USER}

..estará una lista de todos los grupos a los que pertenece. Si no pertenece al grupo de acceso telefónico, agréguelo, por ejemplo:

sudo gpasswd --add ${USER} dialout

Luego debe cerrar la sesión y volver a iniciarla para que sea efectiva. Luego vea si soluciona su problema.

Colin Ian King
fuente
Incluso estar en el grupo de marcado de usuario con id 1000 no puede abrir el puerto serie para leer. Después de reiniciar. Pero, cuando uso sudo para el mismo ejecutable, entonces se puede abrir /dev/ttyS0. ¿Cuál es la posible razón?
Tomilov Anatoliy
2
@Orient Tuve el mismo problema y fue porque el grupo dialoutno estaba definido. Correr newgrp dialoutsolucionó el problema.
TheGr8_Nik
@ TheGr8_Nik Gracias. Su solución funcionó en Ubuntu 16.04. No hay reinicio involucrado. Por defecto, este sistema no tenía el nombre del grupo dialout; comprobado mediante groupscomando. Incluso después de agregar el nombre de usuario al dialoutgrupo a través del comando sudo usermod -a username -G dialout. Después de usar newgrp dialout, este comando esptool.py -p /dev/ttyUSB0 flash_idfuncionó.
Sun Bear
11

La única solución que funciona para mí es: (cada vez que arranque la máquina)

sudo chmod 666 /dev/ttys0

Realmente necesita ser reparado al momento de la instalación. Estoy en 15.10 y he probado 16.04 LTS, sigue siendo el mismo allí. Parece una solución tan simple.

Las versiones anteriores 10.04LTS no tenían este problema.

DRJ101
fuente
2
esto funciona con raspberry pi 3 pero cuando reinicio perdí los permisos.
J261
1
Agregar permisos a mi nombre de usuario para el marcado funcionó bien, una solución bastante simple.
DRJ101
6

Puedes usar este comando:

sudo adduser $USER dialout

Esto agregará al usuario actual al grupo de marcado. Inicie sesión y salga para que surta efecto.

Bonnom
fuente
4

En Ubuntu 18.04, arreglé este problema con los siguientes comandos:

sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER

Y después de esto, reiniciar.

Si aún tiene problemas, intente depurar con:

strace -ff <COMMAND> > strace.txt 2>&1

Y busque "negado" en la recta.

Tseho
fuente
3

Eché un vistazo a varios foros y parece ser un error relacionado con los permisos. Así es como solucioné el problema (versión larga). Necesitará AMBOS cuy setserialpaquetes instalados.

En tres pestañas de terminal, salida monitoreada de # tail -f /var/log/messages Así es como sabemos si tenemos /dev/ttyUSB0o no.

En la segunda pestaña, simplemente ejecutó un bucle en ls -leste dispositivo para ver sus permisos y su ID de grupo es 'marcado'. ESTE es el bit crítico. Por alguna razón, su usuario DEBE usar este GID para hacer esto cu, así que ...

En la tercera pestaña, como root, sí # newgrp dialout(para corresponder con el GID del dialout). Probado con # touch /tmp/anything... hacer ls -len este archivo muestra que es creado por root con un grupo de marcado, por lo que estamos listos para ... # cu -l /dev/ttyUSB0 En mi caso, necesitaba presionar volver nuevamente para ver el aviso esperado, en otros casos, la velocidad puede necesitar a especificar

linhelhelpie
fuente
Esta fue la pieza real que me ayudó: Por alguna razón, el usuario debe usar este GID para hacer el Cu, así que ... . Un millón de gracias.
ΤΖΩΤΖΙΟΥ
1

Aquí está la solución:

Acababa de actualizar mi sistema operativo a Ubuntu 18. normalmente instalaba arduino IDE a través de la vista web de Arduino porque el que se proporcionaba a través del portal de software de Ubuntu siempre era una versión anterior, y quería las funciones más nuevas y el soporte de la placa. Sin embargo, dado que acabo de instalar el sistema operativo más nuevo, pensé que el centro de software oficial de ubuntu tendría la versión más reciente del IDE en la lista, y lo hizo.

Ahora a la parte jugosa! Tanto mi computadora portátil como mi computadora de escritorio tuvieron los mismos problemas para acceder a los puertos seriales. Había hecho que el usuario formara parte del grupo de acceso telefónico, y establecí permisos para el puerto serie, pero siempre tenía que cerrar sesión y volver a iniciarla, ¡hacerlo todo de nuevo cada vez que reiniciaba! ¡NO ES DIVERTIDO!.

Esta vez, no funcionó. Incluso en el centro de software, la opción de permisos para el software muestra el puerto serie "desconectado". ninguna opción para permitir el permiso para el puerto incluso después de que todos los permisos se otorgaron manualmente a través de la ventana de terminal usando sudo.

Decidí desinstalar Arduino IDE del centro de software e instalarlo desde la vista de la web, así que lo hice. Esta vez leí los archivos de instalación, solo para ver si menciona permisos para el puerto serie o no, ¡por supuesto que sí! ****** todos los puertos están configurados con permisos de acceso total, acceso de usuario en todos los ámbitos. Resulta que esta fue la respuesta. después de ejecutar el archivo arduino-linux-setup.sh proporcionado por arduino, se resolvieron todos los problemas del puerto serie. Lo siguiente es un extracto del arduino-linux-setup.sharchivo;

echo ""
echo "******* Add User to dialout,tty, uucp, plugdev groups *******"
echo ""

sudo usermod -a -G tty $1
sudo usermod -a -G dialout $1
sudo usermod -a -G uucp $1
sudo groupadd plugdev
sudo usermod -a -G plugdev $1


acmrules () {

    echo ""
    echo "# Setting serial port rules"
    echo ""

    cat <<EOF
    "KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   "KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   EOF

}

así que ves que incluso el KERNEL está afectado. Mi sugerencia:

instalar desde el sitio web arduino ide. ignore el centro de software en este momento, hasta que se repare. Sí, el CENTRO DE SOFTWARE no permite permisos al puerto serie durante la instalación y para siempre.

¡Problema resuelto!

Joseph Wimsatt
fuente
0

En mi caso, el problema aún existe, incluso cuando agrego mi usuario al grupo usando:

Entonces cuando uso:

sudo gpasswd --add ${USER} dialout

y cuando escribo: groupsobtuve este resultado:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Pero cuando id -Gn ilyahooescribo el putput es:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Sé que hay un problema que no sé qué es sinceramente.

Para obtener una solución, simplemente escribí

newgrp ilyahoo

y se solucionó el problema.

ilyahoo
fuente
Bienvenido ilyahoo a askubuntu! Intenta formatear la publicación de acuerdo con nuestra línea de guía. Intente formatear la salida de una manera más legible. Gracias
abu_bua
1
@abu_bua, utilice el formato de código para la salida del comando, no el formato de comillas.
muru
0

La respuesta es simple. Debe agregar su usuario a dos grupos para tener acceso a los puertos usb. Estos grupos sondialout y tty:

sudo usermod -a -G dialout <user>
sudo usermod -a -G tty <user>

Reemplazar <user> con el nombre de usuario real en esos comandos.

soham shailesh ranade
fuente