piControl is a kernel module for interfacing with RevPi hardware. It provides a common interface to all RevPi related IOs, which a user can consume via /dev/piControl0
.
NOTE: Building the master branch requires a Linux kernel with support for the pibridge serdev driver (i.e. revpi-6.1). The branch revpi-5.10
does not require support for this and can be built against an earlier kernel version of the RevolutionPi kernel.
All the following steps need to be executed on a RevPi device running the official image. It is also possible to compile the module on another system, but the instructions may vary.
Install kernel headers:
sudo apt update
sudo apt install raspberrypi-kernel-headers
Checkout repository and switch working directory:
git clone https://gitlab.com/revolutionpi/piControl.git
cd piControl/src
Compile module sources for current kernel and architecture:
KDIR=/usr/src/linux-headers-$(uname -r)/ make
Before the newly compiled module can be loaded, the currently loaded module needs to be unloaded:
sudo rmmod piControl
NOTE: If the command fails with an error such as
rmmod: ERROR: Module piControl is in use
, applications that are using the module need to be stopped. The commandsudo lsof /dev/piControl0
will show a list of applications that are using the piControl device.
Load the newly compiled module:
sudo insmod piControl.ko
This will only load the newly compiled module once. On the next reboot, the pre-installed module in /lib/modules/$(uname -r)/extra/piControl.ko
will be loaded again. If the newly compiled module should be used permanently, then it needs to be copied into the modules folder:
sudo cp piControl.ko /lib/modules/$(uname -r)/extra/piControl.ko