aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md17
-rw-r--r--udev/98-gpiod.rules2
-rw-r--r--udev/99-pwm.rules10
3 files changed, 19 insertions, 10 deletions
diff --git a/README.md b/README.md
index c1bbe25..58d4bbf 100644
--- a/README.md
+++ b/README.md
@@ -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* ; \
+'"