web-dev-qa-db-fra.com

Impossible d'écrire sur une broche GPIO malgré les autorisations de fichier sur / SYS / SYS / GPIO / GPIO18 / Valeur

Ceci est sur un PI de framboise.

Voici la sortie de sudo ls -ll/sys/classe/gpio/gpio18:

-rwxrwx--- 1 root     gpio     4096 Mar  8 10:50 active_low
-rwxrwx--- 1 root     gpio     4096 Mar  8 10:52 direction
-rwxrwx--- 1 cameron  cameron  4096 Mar  8 10:50 Edge
drwxrwx--- 2 root     gpio        0 Mar  8 10:50 power
drwxrwx--- 2 root     gpio        0 Mar  8 10:50 subsystem
-rwxrwx--- 1 root     gpio     4096 Mar  8 10:50 uevent
-rwxrwx--- 1 cameron  cameron  4096 Mar  8 10:50 value

On dirait que je devrais maintenant avoir accès à la valeur, génial. Pourtant:

cameron@raspberrypi~ $ echo 1 > /sys/class/gpio/gpio18/value
-bash: /sys/class/gpio/gpio18/value: Permission denied

Que se passe-t-il? Si je chmod 777 tout, alors ça marche, mais je ne devrais pas avoir à le faire quand je possède le fichier.

6
Cameron Ball

J'ai résolu le problème en ajoutant Cameron au groupe GPIO:

Sudo usermod -aG gpio cameron
gpio export 18 out
echo 1 > /sys/class/gpio/gpio18/value

Maintenant tout fonctionne.

5
Cameron Ball

En tant que LGGeRett mentionne comme un commentaire ci-dessus,

/sys est un système de fichiers pseudo fourni par le noyau, si le noyau exige que l'auteur soit root, il s'agit d'une exigence fixe du noyau et ne peut pas être modifiée par des attributs et des propriétaires.

Ceci est expliqué plus en détail avec cette réponse sur la question: Comment définir les autorisations dans/sys/sys/permanent qui fournit une solution pour accéder à un tel fichier à l'aide de la commande sudo et fournit une recette à modifier /etc/sudoers Pour éviter de devoir taper un mot de passe à chaque fois.

Cela ne serait-il pas logique de renommer aucun de ces fichiers le serait-il?

1
X Tian

Ce fichier est-il un lien symbolique à un autre endroit? Parce que dans ce cas, le fichier d'origine peut avoir une propriété différente que le lien.

Quelles sont les autorisations du répertoire (vérifiez le répertoire LS -L un).

Avez-vous changé la propriété de ce dossier? Parce que sys est un système de fichiers virtuel spécial qui reflète l'état interne du noyau, la plupart de ces variables sont donc immuables par nature, peu importe ce que le système de fichiers dit.

0
orion