/ sys / class / gpio默认只能以root用户身份访问.所以我喜欢一个新组gpio可以使用/ sys / class / gpio下的文件和目录.为了实现这一点,我将以下行添加到/etc/rc.local(我在Debian上):
- sudo chown root:gpio /sys/class/gpio/unexport /sys/class/gpio/export
- sudo chmod 220 /sys/class/gpio/unexport /sys/class/gpio/export
因此,这为所有gpio组成员提供了写权限.所以他们现在可以导出和取消导销.
问题是它们在导出后无法读取/写入特定的pin文件(e.x./sys/class/gpio/gpio17),因为它们又归root:root所有.
如何更改它们默认为root创建它们:gpio呢?我的意思是每次导出引脚时我都可以手动执行此操作.但那有点不舒服.
UPDATE
根据larsks的回答,我创建了缺少的规则文件.现在它部分有效:
- -rwxrwx--- 1 root gpio 4096 Jun 19 16:48 export
- lrwxrwxrwx 1 root gpio 0 Jun 19 16:51 gpio17 -> ../../devices/soc/3f200000.gpio/gpio/gpio17
- lrwxrwxrwx 1 root gpio 0 Jun 19 16:45 gpiochip0 -> ../../devices/soc/3f200000.gpio/gpio/gpiochip0
- -rwxrwx--- 1 root gpio 4096 Jun 19 16:45 unexport
但对于./gpio17/我仍然得到root:root:
- -rw-r--r-- 1 root root 4096 Jun 19 16:52 active_low
- lrwxrwxrwx 1 root root 0 Jun 19 16:52 device -> ../../../3f200000.gpio
- -rw-r--r-- 1 root root 4096 Jun 19 16:52 direction
- -rw-r--r-- 1 root root 4096 Jun 19 16:52 edge
- drwxr-xr-x 2 root root 0 Jun 19 16:52 power
- lrwxrwxrwx 1 root root 0 Jun 19 16:52 subsystem -> ../../../../../class/gpio
- -rw-r--r-- 1 root root 4096 Jun 19 16:52 uevent
- -rw-r--r-- 1 root root 4096 Jun 19 16:52 value
更新2
好的,我解决了这个问题.因为我在RaspbianInstaller上安装了Raspbian,所以我从未使用过raspi-config工具.这似乎是一个问题.因为我也缺少/ sys / device / virtual / gpio /文件夹.
我在这里遵循了这个指南:http://www.element14.com/community/message/139528/l/re-piface-digital-2–setup-and-use#139528
您可以使用udev规则执行此操作,该规则可以定义在内核实例化新设备时要执行的操作. Raspberry Pi设备的当前版本的
Raspbian发行版在/etc/udev/rules.d/99-com.rules中包含以下内容:
- SUBSYSTEM=="gpio*",PROGRAM="/bin/sh -c 'chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio; chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio'"
这可确保/ sys / class / gpio下的条目始终可供gpio组的成员使用:
- # ls -lL /sys/class/gpio/
- total 0
- -rwxrwx--- 1 root gpio 4096 May 6 23:36 export
- drwxrwx--- 2 root gpio 0 Jan 1 1970 gpiochip0
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 unexport
- # echo 11 > /sys/class/gpio/export
- # ls -lL /sys/class/gpio/
- total 0
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 export
- drwxrwx--- 2 root gpio 0 May 6 23:37 gpio11
- drwxrwx--- 2 root gpio 0 Jan 1 1970 gpiochip0
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 unexport
更新
各个引脚的权限也是正确的:
- # ls -Ll /sys/class/gpio/gpio11/
- total 0
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 active_low
- drwxr-xr-x 3 root root 0 May 6 23:36 device
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 direction
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 edge
- drwxrwx--- 2 root gpio 0 May 6 23:37 subsystem
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 uevent
- -rwxrwx--- 1 root gpio 4096 May 6 23:37 value