root以外のユーザーのためのBeaglebone PWM

root以外のユーザーのためのBeaglebone PWM

4.9.78-ti-r94 ディストリビューションには 81-pwm-nonroot.rules が付属しています。

# /etc/udev/rules.d/81-pwm-noroot.rules
#
# Corrects sys PWM permissions on the BB so non-root users in the gpio group can manipulate bits
#
SUBSYSTEM=="pwm", ACTION=="add", PROGRAM="/bin/sh -c '/bin/chown -R root:pwm /sys/class/pwm/"
SUBSYSTEM=="pwm", ACTION=="add", PROGRAM="/bin/sh -c    '/bin/chmod -R ug+rw /sys/class/pwm/"

SUBSYSTEM=="pwm", ACTION=="add", PROGRAM="/bin/sh -c '/bin/chown -R root:pwm /sys/class/pwm/pwmchip*/'"
SUBSYSTEM=="pwm", ACTION=="add", PROGRAM="/bin/sh -c    '/bin/chmod -R ug+rw /sys/class/pwm/pwmchip*/'"

とにかく動作しないようです。 rwxr-xr-x 3 root root 0 10月11日03:17 pwm1 IS ROOT:ROOT

lrwxrwxrwx 1 root pwm    0 Oct 11 02:32 device -> ../../../48304200.pwm
-rw-rw---- 1 root pwm 4096 Oct 11 03:14 export
-rw-rw-r-- 1 root pwm 4096 Oct 11 02:31 npwm
drwxrwxr-x 2 root pwm    0 Oct 11 02:31 power
lrwxrwxrwx 1 root pwm    0 Oct 11 02:32 subsystem -> ../../../../../../../class/pwm
-rw-rw-r-- 1 root pwm 4096 Oct 11 02:31 uevent
-rw-rw---- 1 root pwm 4096 Oct 11 03:17 unexport

root@s2w10l:/sys/class/pwm/pwmchip6# echo 1 > export 

total 0
lrwxrwxrwx 1 root pwm     0 Oct 11 02:32 device -> ../../../48304200.pwm
-rw-rw---- 1 root pwm  4096 Oct 11 03:17 export
-rw-rw-r-- 1 root pwm  4096 Oct 11 02:31 npwm
drwxrwxr-x 2 root pwm     0 Oct 11 02:31 power
drwxr-xr-x 3 root root    0 Oct 11 03:17 pwm1<<<  IS ROOT  ROOT <<<<<<<<<?!?!?!?!?!
lrwxrwxrwx 1 root pwm     0 Oct 11 02:32 subsystem -> ../../../../../../../class/pwm
-rw-rw-r-- 1 root pwm  4096 Oct 11 02:31 uevent
-rw-rw---- 1 root pwm  4096 Oct 11 03:17 unexport

ベストアンサー1

90のルールを追加する必要があります。

SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;'"
SUBSYSTEM=="pwm*", PROGRAM="/bin/sh -c 'chown -R root:pwm /sys/class/pwm/* && chmod -R 770 /sys/class/pwm/*;'"

そしてudevはGPIOのエクスポートを知っているので、GPIOの問題を解決します。

# on a second temrinal monitor the udev
udevadm monitor
...
KERNEL - the kernel uevent

KERNEL[46318.324637] add      /devices/platform/ocp/44e07000.gpio/gpiochip0/gpio/gpio24 (gpio)
UDEV  [46318.648582] add      /devices/platform/ocp/44e07000.gpio/gpiochip0/gpio/gpio24 (gpio)

しかし、PWMの場合はそうではありません。

echo 0 > /sys/class/pwm/pwmchip6/export

# on the second terminal 
udevadm monitor  # remains silent

どんな助けでも大変感謝します。ありがとう

おすすめ記事