Modification des autorisations sur le port série

54

J'utilise l'IDE Arduino sous Ubuntu et j'ai des problèmes avec le port série. Cela a fonctionné dans le passé, mais pour des raisons qui peuvent paraître inutiles, j’ai ressenti le besoin de changer la propriété de certains fichiers, de la propriété racine à la propriété de mes utilisateurs.

Cela a permis à l'EDI de fonctionner correctement, mais j'ai perdu la possibilité d'utiliser le bon port série. Dans le dossier dev, le port dont j'ai besoin est répertorié comme autorisation 166. Quelqu'un (qui n'est plus dans la région pour m'aider) a échangé les autorisations en 666, ce qui a permis à tout cela de fonctionner à merveille.

Cependant, il est revenu dès que j'ai redémarré mon ordinateur, et si j'essaie maintenant d'utiliser la commande:

sudo chmod 666 ttyACM0

Rien ne se passe. Aucun message d'erreur, mais aucune autorisation ne change non plus.

Comment puis-je le changer, et comment puis-je le faire pour changer de façon permanente.

Je m'excuse si cette question est trop simpliste ou peu claire, je suis un noob ubuntu, et je ne voudrais pas me plaindre de vos commentaires!

Terrik
la source
1
sudo chmod 666 / dev / ttyACM0 C’est la seule suggestion de cette page qui a fonctionné dans mon environnement 14.04 beta2 live. Merci!

Réponses:

77

Le problème avec les autorisations pour /dev/ttyACM0peut être résolu en permanence en vous ajoutant au dialoutgroupe. Vous devrez vous déconnecter puis vous reconnecter avant que le changement de groupe ne soit reconnu.

Vous pouvez le faire avec sudo usermod -a -G dialout $USER

Rinzwind
la source
J'ai appris à ce sujet quand Arduino IDE a demandé à donner à root de s'ajouter lui-même au "groupe de Dailout". Maintenant je sais ce que c'est.
Ufoguy
Je viens d’acheter un adaptateur Pulse-Eight USB - CEC à utiliser avec mon nouveau téléviseur et j’ai constaté qu’il ne fonctionnait pas initialement avec Kodi sous Ubuntu. Après avoir vérifié le journal des incidents et recherché le message d'erreur "ERREUR: CecLogMessage - erreur lors de l'ouverture du port série '/ dev / ttyACM0': Autorisation refusée", cette page a été affichée. Grâce à vous (et à Don Kirkby, ci-dessous - cela fonctionne aussi), j'ai pu rectifier le problème immédiatement.
Rich.T.
De plus, la réponse de "user247020" m'a donné une autre solution: ouvrez l'outil graphique "Utilisateurs et groupes" et faites-vous un "administrateur". Cela vous ajoutera au groupe "dialout" (c'est-à-dire "Use Modems"), entre autres.
Rich.T.
usermod -a -G dialout pi fonctionne correctement, après que sudo chgrp dialout / dev / ttyS0 fonctionne bien, mais lorsque je redémarre, toute la configuration est perdue. Je suis sur framboise pi 3
J261
Ajoutez n'importe quelle commande à refaire à un script de démarrage. Donc bash ou / etc / profile ou init.
Rinzwind
20

Je ne pouvais pas obtenir la suggestion de Rinzwind de fonctionner, car elle se plaignait que le compte d'utilisateur existe déjà. Au lieu de cela, j'ai utilisé cette commande pour ajouter un utilisateur existant ( terrik) à un groupe existant ( dialout), comme décrit dans le wiki de l'aide Ubuntu .

sudo adduser terrik dialout

Cette commande est également utile pour répertorier vos groupes actuels, bien que, comme le dit Rinzwind, vous devez vous déconnecter et vous connecter avant que le port série ne commence à vous laisser entrer.

groups terrik
Don Kirkby
la source
11

Une autre possibilité consiste à créer un fichier de règles dans un /etc/udev/rules.d/répertoire. J'ai eu un problème similaire et j'ai créé un 50-myusb.rulesfichier dans le répertoire ci-dessus avec ce contenu:

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

Notez que cela donnera à tout périphérique connecté aux autorisations de lecture / écriture du socket ttyACM. Si vous n'avez besoin que d'un périphérique spécifique pour obtenir des autorisations de lecture / écriture, vous devez également vérifier idVendoret idProduct. Vous pouvez les trouver en exécutant la lsusbcommande deux fois, une fois sans connecter votre appareil et une fois quand il est connecté, puis observez la ligne supplémentaire dans la sortie. Là, vous verrez quelque chose comme Bus 003 Device 005: ID ffff:0005. Dans ce cas idVendor = ffffet idProduct = 0005. Le vôtre sera différent. Alors vous modifiez le fichier de règles pour:

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

Désormais, seul ce périphérique obtient les autorisations. Lisez ceci pour en savoir plus sur l'écriture de règles udev.

Modèle non standard
la source
10

Je ne pouvais pas obtenir la réponse de Terrik , mais je le pourrais si je faisais ce léger ajustement à la trajectoire ttyACM0.

sudo chmod 666 /dev/ttyACM0

Publierait comme commentaire mais je n'ai pas encore les privilèges pour ça ...

gbmhunter
la source
1
Les autorisations semblent se réinitialiser lors du débranchement et du rebranchage d’Arduino.
utilisateur1063287
ne marche pas. :(
Freddy
cela fonctionne, ainsi. mais exige que la règle udev l'autorise à nouveau pour le réenlèvement
pylover
J'ai essayé sudo chmod 666 /dev/ttyACM0et ça ne marche pas quand on recommence. Quelqu'un a-t-il une solution?
user1063287
Hmm peepz cela fonctionne .... Ajoutez la commande à un script de démarrage. (/ Dev est recréé au démarrage, vous devez donc refaire cette commande à chaque démarrage)
Rinzwind
2

Essayez d’entrer dans Système / Utilisateurs et groupes et cochez la case correspondant à votre nom d’utilisateur dans le groupe TTY.

utilisateur247020
la source
[Errno 13] Permission denied: '/dev/ttyACM0'. En plus du ttygroupe, l'utilisateur est également dans le dialoutgroupe. Linux Mint 17.1.
user1063287
1
@ user1063287 Essayezsudo chmod a+rw /dev/ttyACM0
Vladimir S.