Establecer permisos GPIO limpiamente

Establecer permisos GPIO limpiamente

¿Se pueden establecer los permisos predeterminados y la propiedad de los archivos /sys/class/gpio/, por ejemplo, configurando udev? El objetivo sería tener un gid real para los procesos que pueden acceder a los pines GPIO en una placa.

La mayoría de las "soluciones" incluyen envoltorios suid,guiones con chowny binarios de intermediarios confiables. Aparecen búsquedas en la webintentos fallidos de escribir reglas udev.

(relacionado:Q1)

(recursos:avrfreaks,Linux,udev)

Respuesta1

Agregué /etc/udev/rules.d/99-gpio.rules para configurar todos los permisos de forma correcta y limpia:

SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", RUN+="/bin/sh -c 'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", RUN+="/bin/chown root:gpio /sys%p/active_low /sys%p/edge /sys%p/direction /sys%p/value", RUN+="/bin/chmod 660 /sys%p/active_low /sys%p/edge /sys%p/direction /sys%p/value"

Respuesta2

Para ejecutar Ubuntu.

sudo apt install rpi.gpio-common

Respuesta3

Yo uso esto (suponiendo que el grupo gpio ya esté creado):

/etc/udev/rules.d/99-gpio.rules

SUBSISTEMA=="gpio", KERNEL=="gpiochip*", GRUPO:="gpio", MODO:="0660"

Respuesta4

La interfaz GPIO parece estar diseñada para uso exclusivo del sistema (uid root) y no tiene las características que tendría una interfaz /dev para procesos de usuario. Esto incluye permisos de creación.

Para permitir el acceso a los procesos de usuario (incluidos demonios y otros servicios del sistema), los permisos deben ser otorgados por un proceso raíz en algún momento. Podría ser un script de inicio, un intermediario o un comando manual (sudo).

información relacionada