Terminal de port série> Impossible d'ouvrir / dev / ttyS0: autorisation refusée


19

J'avais Windows XP sur cette boîte et cela a échoué. Pensant qu'il s'agissait d'un système d'exploitation corrompu, j'ai essayé de réinstaller, et il a échoué. Mais ensuite j'ai essayé d'installer Ubuntu, et je n'ai pas pu l'exécuter à partir de l'USB ou du HD.

Le test mem a- t- il révélé que l'une de mes clés 512 Mo (en avait 2) avait échoué. J'ai supprimé le mauvais et j'ai pu installer Ubuntu mais c'était lent.

J'essayais de configurer rapidement ma radio par paquets pour l'ouragan Sandy. Téléchargé le terminal de port série et a pu obtenir une certaine utilisation mais le système a continué à se verrouiller. Nous avons donc installé Xubuntu à côté, prévoyant de manquer le lendemain pour obtenir de la RAM pour la boîte. Mettez Xubuntu et maintenant j'obtiens l'erreur suivante avec le terminal du port série:

Cannot open /dev/ttyS0: Permission denied

Je voudrais pouvoir utiliser un terminal de port série, ou équivalent avec Xubuntu pour pouvoir utiliser mon terminal de paquets kpc3, me connecter au port com à l'arrière de mon ordinateur.

Des idées?

Réponses:


39

Les périphériques tty appartiennent au groupe "dialout", je soupçonne que vous n'êtes pas membre de ce groupe et que l'accès à / dev / ttyS0 vous est donc refusé, vous devez donc vous ajouter à ce groupe.

Vérifiez d'abord si vous êtes membre de ce groupe:

groups ${USER}

..cette liste de tous les groupes auxquels vous appartenez. Si vous n'appartenez pas au groupe de numérotation, ajoutez-vous-y, par exemple:

sudo gpasswd --add ${USER} dialout

Vous devez ensuite vous déconnecter et vous reconnecter pour que cela soit efficace. Vérifiez ensuite si cela résout votre problème.


Même en étant dans un groupe de numérotation, l'utilisateur avec l'identifiant 1000 ne peut pas ouvrir le port série pour lire. Après le redémarrage. Mais, lorsque j'utilise sudo pour le même exécutable, il peut s'ouvrir /dev/ttyS0. Quelle est la raison possible?
Tomilov Anatoliy

2
@Orient J'ai eu le même problème et c'est parce que le groupe dialoutn'était pas défini. L'exécution a newgrp dialoutrésolu le problème.
TheGr8_Nik

@ TheGr8_Nik Merci. Votre solution a fonctionné sur Ubuntu 16.04. Aucun redémarrage impliqué. Par défaut, ce système n'avait pas le nom du groupe dialout; vérifié via la groupscommande. Même après avoir ajouté le nom d'utilisateur au dialoutgroupe via la commande sudo usermod -a username -G dialout. Après utilisation newgrp dialout, cette commande a esptool.py -p /dev/ttyUSB0 flash_idfonctionné.
Sun Bear

11

La seule solution qui fonctionne pour moi est de: (chaque fois que je démarre la machine)

sudo chmod 666 /dev/ttys0

Il doit vraiment être corrigé au moment de l'installation. Je suis à 15h10 et j'ai essayé 16,04 LTS, toujours le même là-bas. On dirait une solution aussi simple.

Les anciennes versions 10.04LTS n'avaient pas ce problème.


2
ce travail avec raspberry pi 3 mais quand je redémarre perdu les autorisations.
J261

1
L'ajout d'autorisations à mon nom d'utilisateur pour la numérotation a bien fonctionné, une solution assez simple.
DRJ101

6

Vous pouvez simplement utiliser cette commande:

sudo adduser $USER dialout

Cela ajoutera l'utilisateur actuel au groupe de numérotation. Connectez-vous et déconnectez-le pour prendre effet.


4

Sur Ubuntu 18.04, j'ai résolu ce problème avec les commandes suivantes:

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

Et après cela, redémarrez.

Si vous rencontrez toujours des problèmes, essayez de déboguer avec:

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

Et recherchez "nié" dans la séquence.


3

J'ai jeté un œil à divers forums et il semble que ce soit un bug lié aux autorisations. Voici comment j'ai résolu le problème (version longue). Vous aurez besoin des DEUX cuet des setserialpackages installés.

Dans trois onglets de terminal, la sortie surveillée de # tail -f /var/log/messages Voilà comment nous savons si nous avons un/dev/ttyUSB0 ou non.

Dans le deuxième onglet, il vous suffit d'exécuter une boucle sur ls -lcet appareil pour voir ses autorisations et son ID de groupe est «dialout». C'EST le bit critique. Pour une raison quelconque, votre utilisateur DOIT utiliser ce GID pour faire le cu, alors ...

Dans le troisième onglet, en tant que root, a fait # newgrp dialout(pour correspondre au GID de la numérotation). Testé avec # touch /tmp/anything... faire ls -lsur ce fichier montre qu'il est créé par root avec un groupe de numérotation, donc nous sommes prêts à ... # cu -l /dev/ttyUSB0 Dans mon cas, je devais appuyer à nouveau sur retour pour voir l'invite attendue, dans d'autres cas, la vitesse peut être nécessaire à préciser.


Ce fut la pièce réelle qui m'a aidé: Pour une raison quelconque, votre utilisateur doit utiliser ce GID pour faire le cu, donc ... . Mille mercis.
ΤΖΩΤΖΙΟΥ

1

Voici la solution:

Je venais de mettre à jour mon système d'exploitation vers Ubuntu 18. Normalement, j'installerais Arduino IDE via la vue Web Arduino parce que celui fourni via le portail du logiciel Ubuntu était toujours une version plus ancienne, et je voulais les dernières fonctionnalités et le support de la carte. Cependant, puisque je viens d'installer le dernier système d'exploitation, je me suis dit que le centre logiciel officiel d'ubuntu aurait la dernière version de l'IDE répertoriée, et c'est ce qu'il a fait.

Passons maintenant à la partie juteuse! Mon ordinateur portable et mon ordinateur de bureau ont tous deux eu les mêmes problèmes d'accès aux ports série. j'avais fait la partie utilisateur make du groupe d'accès à distance, et défini les autorisations pour le port série, mais je devais toujours me déconnecter puis me reconnecter, tout recommencer à chaque redémarrage! PAS DRÔLE!.

Cette fois, cela n'a pas fonctionné. Même dans le centre logiciel, l'option des autorisations pour le logiciel affiche le port série "déconnecté". aucune option pour autoriser l'autorisation sur le port même après que toutes les autorisations ont été accordées manuellement via la fenêtre du terminal à l'aide de sudo.

J'ai décidé de désinstaller l'Arduino IDE du centre logiciel et de l'installer à partir du site Web, alors je l'ai fait. Cette fois, j'ai lu les fichiers d'installation, juste pour voir s'il mentionne ou non des autorisations pour le port série, ***** bien sûr! ****** tous les ports sont définis avec des autorisations d'accès complet, un accès utilisateur à tous les niveaux. Il s'avère que c'était la réponse. après avoir exécuté le fichier arduino-linux-setup.sh fourni par arduino, tous les problèmes de port série ont été résolus. ce qui suit est un extrait du arduino-linux-setup.shdossier;

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

}

vous voyez donc que même le KERNEL est effectué. Ma suggestion:

installer à partir du site Web d'arduino ide. ignorez le centre logiciel à ce stade, jusqu'à ce qu'il soit réparé. Oui, le SOFTWARE CENTER n'autorise pas les autorisations sur le port série pendant l'installation, et pour toujours après.

Problème résolu!


0

Dans mon cas, le problème existe toujours, même lorsque j'ajoute mon utilisateur au groupe en utilisant:

Donc quand j'utilise:

sudo gpasswd --add ${USER} dialout

et quand je tape: groupsj'ai obtenu ce résultat:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Mais quand je tape id -Gn ilyahoole putput c'est:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Je sais qu'il y a un problème que je ne connais pas vraiment.

Pour obtenir une solution, je viens de taper

newgrp ilyahoo

et le problème a été résolu.


Bienvenue ilyahoo à askubuntu! Veuillez essayer de formater le message selon notre guide. Essayez de formater la sortie d'une manière plus lisible. Merci
abu_bua

1
@abu_bua veuillez utiliser la mise en forme du code pour la sortie de la commande, pas la mise en forme des citations.
muru

0

La réponse est simple. Vous devez ajouter votre utilisateur à deux groupes pour avoir accès aux ports USB. Ces groupes sont dialoutet tty:

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

Remplacez <user>par le nom d'utilisateur réel dans ces commandes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.