diff options
author | Paul Oliver <contact@pauloliver.dev> | 2025-01-24 21:43:56 +0000 |
---|---|---|
committer | Paul Oliver <contact@pauloliver.dev> | 2025-01-24 16:36:25 -0800 |
commit | 9310ba7e17f97c4570dce33552b3605155ca5c0c (patch) | |
tree | 5d2172f1a75711803dcb9cf70c823aa5fdffa90d | |
parent | 560ae6f309a6e18f34245769a348c0786fa97642 (diff) |
Adds UDEV rules for root-less GPIO and PWM access
-rw-r--r-- | README.md | 17 | ||||
-rw-r--r-- | udev/98-gpiod.rules | 2 | ||||
-rw-r--r-- | udev/99-pwm.rules | 10 |
3 files changed, 19 insertions, 10 deletions
@@ -26,11 +26,7 @@ $> stack exec dummy-receiver 2025-01-12 21:27:02 INFO receiver/client: Initializing ZMQ client 2025-01-12 21:27:16 INFO receiver/receiver: Received pulse #1 2025-01-12 21:27:17 INFO receiver/receiver: Received pulse #2 -2025-01-12 21:27:18 INFO receiver/receiver: Received pulse #3 -2025-01-12 21:27:19 INFO receiver/receiver: Received pulse #4 -2025-01-12 21:27:20 INFO receiver/receiver: Received pulse #5 -2025-01-12 21:27:21 INFO receiver/receiver: Received pulse #6 -2025-01-12 21:27:22 INFO receiver/receiver: Received pulse #7 +[...] 2025-01-12 21:27:23 INFO receiver/receiver: Received pulse #8 2025-01-12 21:27:24 INFO receiver/receiver: Received pulse #9 ``` @@ -40,13 +36,14 @@ $> stack exec dummy-pulser 2025-01-12 21:27:15 INFO pulser/server: Initializing ZMQ server 2025-01-12 21:27:16 INFO pulser/fsm/run: Sending pulse #1 2025-01-12 21:27:17 INFO pulser/fsm/run: Sending pulse #2 -2025-01-12 21:27:18 INFO pulser/fsm/run: Sending pulse #3 -2025-01-12 21:27:19 INFO pulser/fsm/run: Sending pulse #4 -2025-01-12 21:27:20 INFO pulser/fsm/run: Sending pulse #5 -2025-01-12 21:27:21 INFO pulser/fsm/run: Sending pulse #6 -2025-01-12 21:27:22 INFO pulser/fsm/run: Sending pulse #7 +[...] 2025-01-12 21:27:23 INFO pulser/fsm/run: Sending pulse #8 2025-01-12 21:27:24 INFO pulser/fsm/run: Sending pulse #9 2025-01-12 21:27:25 ATTENTION pulser/fsm/run: Reached 10 pulses 2025-01-12 21:27:25 ATTENTION pulser/fsm: No state returned, exiting FSM ``` + +## GPIO and PWM without root +On the Pi 5, copy files in `./udev` into `/etc/udev/rules.d`. These rules +allow the `gpio` and `pwm` user groups to interface with GPIO and PWM +subsystems respectively. diff --git a/udev/98-gpiod.rules b/udev/98-gpiod.rules new file mode 100644 index 0000000..4961d33 --- /dev/null +++ b/udev/98-gpiod.rules @@ -0,0 +1,2 @@ +# Grants GPIO access to the gpio group. +SUBSYSTEM=="gpio", KERNEL=="gpiochip*", GROUP="gpiod", MODE="0660" diff --git a/udev/99-pwm.rules b/udev/99-pwm.rules new file mode 100644 index 0000000..2b95f14 --- /dev/null +++ b/udev/99-pwm.rules @@ -0,0 +1,10 @@ +# Grants PWM access to the pwm group. Because UDEV is async, there might be a +# slight delay between changes to the directory tree (e.g., a new PWM channel +# being added) and changes to permissions taking effect. The command +# `udevadm settle` can be used to wait for the rule to finish execution. +SUBSYSTEM=="pwm*", PROGRAM="/bin/sh -c ' \ + chown -R root:pwm /sys/class/pwm ; \ + chmod -R 770 /sys/class/pwm ; \ + chown -R root:pwm /sys/devices/platform/axi/1000120000.pcie/*.pwm/pwm/pwmchip* ; \ + chmod -R 770 /sys/devices/platform/axi/1000120000.pcie/*.pwm/pwm/pwmchip* ; \ +'" |