raspberry commands bcm linux sudo raspberry-pi gpio

linux - commands - raspberry pi gpio bcm



Accediendo al GPIO(de una frambuesa pi) sin `` sudo`` (1)

Rakesh, acabo de intentar entender exactamente lo mismo, y creo que lo resolví.

No necesitas entender mucho del makefile en absoluto. Las líneas importantes son las siguientes, que se ejecutan en bash cuando ejecuta sudo make install

install: install-files groupadd -f --system gpio chgrp gpio $(DESTDIR)/bin/gpio-admin chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin

groupadd -f --system gpio crea un grupo de sistemas llamado gpio. chgrp gpio $(DESTDIR)/bin/gpio-admin cambia el grupo del binario (en el que se compiló el archivo C gpio-admin.c) a gpio. El propietario del binario sigue siendo root (ya que está ejecutando make as root). chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin hace dos cosas importantes. En primer lugar, permite que un miembro del grupo gpio ejecute gpio-admin. En segundo lugar, establece el bit setuid en gpio-admin.

Cuando se agrega al grupo gpio, puede ejecutar gpio-admin, sin usar sudo, pero gpio admin actuará como si se estuviera ejecutando bajo sudo. Esto le permite escribir en el archivo / sys / class / gpio / export. También le permite cambiar el propietario de los archivos / sys / class / gpio / gpio [número de pin] / dirección, etc. que se crean.

Incluso si cambia el grupo de / sys / class / gpio / export a gpio, y configura los permisos para permitirle escribir en él

sudo chgrp gpio /sys/class/gpio/export /sys/class/gpio/unexport sudo chmod g+rwx /sys/class/gpio/export /sys/class/gpio/unexport

Puedes exportar un pin sin poderes de superusuario.

echo 22 > /sys/class/gpio/export

pero los archivos / sys / class / gpio / gpio22 / direction, etc. se seguirán creando con la raíz como propietario y grupo, y deberá usar sudo para cambiarlos. Además, la propiedad de los archivos exportados y no exportados volverá a la raíz después de cada reinicio.

Esta pregunta podría no ser específica de la frambuesa pi, por supuesto. Además, soy relativamente nuevo en Linux.

Quiero escribir una pequeña biblioteca (en node.js, si eso importa) para acceder al GPIO de la frambuesa pi utilizando el sysfs. Sin embargo, acceder al sistema requiere acceso a sudo, y eso es malo por razones obvias.

Quick2Wire parece tener una solución, pero quiero entenderlo mejor y no solo usarlo a ciegas. Ellos usaron C, por supuesto, pero por lo que entiendo, el código no es complejo, y probablemente se pueda eliminar con solo bash, aunque sea menos elegante. Sin embargo, más que nada, no estoy seguro de por qué funciona.

Cualquier ayuda será genial.

Edit: Gracias por los comentarios. Está claro que necesito reformular la pregunta. Aquí va: ¿Cómo es que una vez instalada (como root), la aplicación no requiere más permisos de root para usar? ¿Cómo ayuda la adición de alguien a un grupo en este caso? /sys/devices/virtual/gpio no es la ubicación donde está disponible gpio sysfs, entonces, ¿cuál es el engaño con eso? Realmente soy un n00b, por lo que estas preguntas pueden ser n00b-ish, así que por favor tengan paciencia conmigo.