以非root用户身份访问beaglebone上的GPIO?

时间:2017-01-11 08:41:28

标签: python linux beagleboneblack beagleboard udev

我问了四周,我试过的任何udev规则都没有用。

我需要的是能够像root一样使用gpio引脚。

例如,从Adafruit执行python脚本,它应该从传感器读取温度,我得到了这个:

<collection_expression>

我尝试了许多不同的技巧来解决这个问题,但只有当我以root用户身份使用它时才有效 我试过这个:Decision Trees - Machine Learninghttps://gist.github.com/metasoarous/a7308779837f9dcba662

还有一些其他的udev / rules.d但到目前为止没有任何工作......

知道如何改变这个吗?

1 个答案:

答案 0 :(得分:0)

我尝试了以下基于this的说明并工作:

  1. 运行nano /etc/udev/rules.d/80-gpio-permissions.rules

  2. KERNEL=="gpio*", SUBSYSTEM=="gpio", ACTION=="add", PROGRAM="/usr/local/bin/udev-gpio-permissions.sh"
    
  3. 运行nano /usr/local/bin/udev-gpio-permissions.sh

  4. 复制

    #!/bin/bash
    
    # Result: chown debian:root /sys/class/gpio
    
    chown -R debian:root /sys/devices/gpio
    chown -R debian:root /sys/class/gpio
    chown -R debian:root /sys/devices/platform/ocp
    chown -R debian:root /sys/class/pwm
    
    #GPIO ( active_low device direction edge power subsystem uevent value )
    find /sys/class/gpio -type d -exec chmod 2770 {} \;
    find /sys/class/gpio -name "direction" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "edge" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "value" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "active_low" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "device" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "power" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "subsystem" -exec chmod 0660 {} \;
    
    chmod 0220 /sys/class/gpio/export
    chmod 0220 /sys/class/gpio/unexport
    
    find /sys/class/gpio -name "uevent" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "autosuspend_delay_ms" -exec chmod 0660 {} \;
    find /sys/class/gpio -name "control" -exec chmod 0660 {} \;
    
  5. 运行 chmod +x /usr/local/bin/udev-gpio-permissions.sh

  6. 运行 udevadm control --reload-rules

  7. 重启