aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: c2c0385de634ec08879f869ee4f5df4b4cff0008 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# HsMouse
Experimental control software for robotics, tested on Raspberry Pi 5.

## System Configuration:
To configure the system, the files in the `sysconf` directory must be
installed:

1. Copy the UDEV `*.rule` files into `/etc/udev/rules.d`
2. Copy `config.txt` to `/boot`
3. Reboot the Raspberry Pi for the changes to take effect

## Low Power Consumption When Powered Off:
By default, the Raspberry Pi 5 keeps the SoC powered on (in a shutdown state)
even after the system is shut down. As a result, it continues to consume
1.2-1.6W of power, even with nothing plugged in except for power. For more
details, see:
[Reducing Raspberry Pi 5's Power Consumption](https://www.jeffgeerling.com/blog/2023/reducing-raspberry-pi-5s-power-consumption-140x)

This can be easily fixed by editing the EEPROM configuration with the
following command:
```console
user@alarm$ sudo rpi-eeprom-config -e
```
Ensure that `POWER_OFF_ON_HALT=1` is set, while leaving the other variables
unchanged:
```config
[all]
BOOT_UART=[...]
POWER_OFF_ON_HALT=1
BOOT_ORDER=[...]
```

To run `rpi-eeprom-config` on Arch Linux, you’ll need to install the
`rpi5-eeprom` package from the `PKGBUILDs` repository. Run the following
commands to do so:
```console
user@alarm$ git clone https://github.com/archlinuxarm/PKGBUILDs
user@alarm$ cd PKGBUILDs/alarm/rpi-eeprom
user@alarm$ makepkg -s
user@alarm$ sudo pacman -U rpi5-eeprom-*.pkg.tar.xz
```

## GPIO and PWM Access Without Root:
To enable GPIO and PWM access without root privileges on the Raspberry Pi 5,
follow these steps:

1. Create two new user groups: `gpiod` and `pwm`
2. Add your user to both groups
3. The UDEV rules installed previously will grant the `gpiod` and `pwm` user
   groups permission to access the respective subsystems.

This configuration ensures that GPIO and PWM operations can be performed
without needing root access.

## Build Instructions:
1. Install [`stack`](https://docs.haskellstack.org/en/stable/). It’s
   recommended to use [`ghcup`](https://www.haskell.org/ghcup/) for
   installation.
2. Run `stack build` to compile the libraries and executables

> Note: You may need to install system dependencies on your host first (e.g.,
> `libgpiod`, etc.)