GPIO 권한을 깔끔하게 설정

GPIO 권한을 깔끔하게 설정

예를 들어 udev를 구성하여 /sys/class/gpio/ 파일의 기본 권한과 소유권을 설정할 수 있습니까? 요점은 보드의 GPIO 핀에 액세스할 수 있는 프로세스에 대한 실제 GID를 갖는 것입니다.

대부분의 "솔루션"에는 suid 래퍼가 포함됩니다.chown을 사용한 스크립트신뢰할 수 있는 중개자 바이너리. 웹 검색이 뜹니다udev 규칙을 작성하려는 시도가 실패했습니다..

(관련된:1분기)

(자원:avrfreaks,리눅스,udev)

답변1

모든 권한을 정확하고 깔끔하게 설정하기 위해 /etc/udev/rules.d/99-gpio.rules를 추가했습니다.

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"

답변2

우분투 실행의 경우.

sudo apt install rpi.gpio-common

답변3

나는 이것을 사용합니다 (gpio 그룹이 이미 생성되었다고 가정):

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

SUBSYSTEM=="gpio", KERNEL=="gpiochip*", 그룹:="gpio", 모드:="0660"

답변4

GPIO 인터페이스는 시스템(uid 루트) 전용으로 구축된 것으로 보이며 사용자 프로세스에 대한 /dev 인터페이스의 기능이 없습니다. 여기에는 생성 권한이 포함됩니다.

사용자 프로세스(데몬 및 기타 시스템 서비스 포함) 액세스를 허용하려면 특정 시점에 루트 프로세스에서 권한을 부여해야 합니다. 초기화 스크립트, 중개자 또는 수동(sudo) 명령일 수 있습니다.

관련 정보