Supported Platforms

Raspberry Pi

The rpi-kernel packages for all Raspberry Pi variants are built from the Raspberry Pi Foundation's kernel tree, which should enable all special functionality that isn't available with mainline kernels. The RPi kernel packages also have their own header packages, rpi-kernel-headers. These packages should be installed if you want to use any DKMS packages. Void ships rpi-base meta-packages that install the relevant rpi-kernel and rpi-firmware packages. Together, these packages enable Wi-Fi and Bluetooth functionality.

The command line parameters passed to the kernel are in the /boot/cmdline.txt file. Some of the relevant parameters are documented in the official documentation.

Supported Models

ModelArchitecture
1 A, 1 B, 1 A+, 1 B+, Zero, Zero W, Zero WHarmv6l
2 Barmv7l
3 B, 3 A+, 3 B+, Zero 2W, 4 B, 400, CM4, 5aarch64

It is possible to run the armv7l images on an RPi 3, as the RPi 3's CPU supports both the Armv8 and Armv7 instruction sets. The difference between these images is that the armv7l image provides a 32-bit system while the aarch64 image provides a 64-bit system.

Raspberry Pi 5 Kernel

The rpi5-kernel and rpi5-kernel-headers packages provide a kernel and headers optimized for the Raspberry Pi 5 with 16KB pages. To switch from the generic rpi-kernel, install rpi5-kernel. This will remove rpi-kernel and replace it with rpi5-kernel.

Note: not all software is compatible with kernels that have larger page-sizes. View any known issues and report any compatibility problems found in the tracking issue.

Enabling hardware RNG device

By default, the HWRNG device is not used by the system, which may result in the random devices taking long to seed on boot. This can be annoying if you want to start sshd and expect to be able to connect immediately.

In order to fix this, install the rng-tools package and enable the rngd service, which uses the /dev/hwrng device to seed /dev/random.

Graphical session

The mesa-dri package contains drivers for all the Raspberry Pi variants, and can be used with the modesetting Xorg driver or Wayland.

Hardware

More configuration information can be found in the Raspberry Pi Foundation's official documentation. The raspi-config utility isn't available for Void Linux, so editing the /boot/config.txt file is usually required.

Audio

To enable the soundchip, add dtparam=audio=on to /boot/config.txt.

Serial

To enable serial console logins, enable the agetty-ttyAMA0 service. See securetty(5) for interfaces that allow root login. For configuration of the serial port at startup, refer to the kernel command line in /boot/cmdline.txt - in particular, the console=ttyAMA0,115200 parameter.

I2C

To enable I2C, add device_tree_param=i2c_arm=on to /boot/config.txt, and bcm2708.vc_i2c_override=1 to /boot/cmdline.txt. Then create a modules-load(8) .conf file with the following content:

i2c-dev

Finally, install the i2c-tools package and use i2cdetect(8) to verify your configuration. It should show:

$ i2cdetect -l
i2c-1i2c          bcm2835 I2C adapter                 I2C adapter

Memory cgroup

The kernel from the rpi-kernel package disables the memory cgroup by default.

This breaks workloads which use containers. Therefore, if you want to use containers on your Raspberry Pi, you need to enable memory cgroups by adding cgroup_enable=memory to /boot/cmdline.txt.