# 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. ## Libcamera Setup The upstream libcamera package in Arch Linux ARM (as of August 2025) has compatibility issues with the Raspberry Pi kernel, preventing detection of official camera modules. Until this is resolved upstream, you'll need to build the Raspberry Pi Foundation's supported version: ```console user@alarm$ sudo pacman -S boost cmake gcc git libdrm libexif libjpeg libpng libtiff meson pkgconf python-jinja python-ply python-yaml user@alarm$ git clone https://github.com/raspberrypi/libcamera user@alarm$ cd libcamera user@alarm$ meson setup build -Dprefix=/usr user@alarm$ ninja -C build user@alarm$ sudo ninja -C build install ``` References: - [RPi Kernel Issue #6983](https://github.com/raspberrypi/linux/issues/6983) - [Libcamera Installation Guide](https://blog.jirkabalhar.cz/2024/02/raspberry-camera-on-archlinux-arm-in-2024/) ## 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 `make` to compile the libraries and executables > Note: You may need to install system dependencies on your host first (e.g., > `libgpiod`, `libcamera`, etc.)