Note: we attempted to install this in Spring 2025, but still had problems running it. We are currently running FR3/SERL in a regular kernel. SERL provides configuration guidance on how to do this.
In order to control your robot using libfranka, the controller program on the workstation PC must run with real-time priority under a PREEMPT_RT kernel. This section describes the procedure of patching a kernel to support PREEMPT_RT and creating an installation package.
sudo apt-get install build-essential bc curl ca-certificates gnupg2 libssl-dev lsb-release libelf-dev bison flex dwarves zstd libncurses-dev
Then, you have to decide which kernel version to use. To find the one you are using currently, use uname -r. Real-time patches are only available for select kernel versions, see https://www.kernel.org/pub/linux/kernel/projects/rt/. We recommend choosing the version closest to the one you currently use. If you choose a different version, simply substitute the numbers. Having decided on a version, use curl to download the source files
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.125.tar.xz>
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.125.tar.sign>
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.15/older/patch-5.15.125-rt66.patch.xz>
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.15/older/patch-5.15.125-rt66.patch.sign>
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.160.tar.xz>
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.160.tar.sign>
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.15/patch-5.15.160-rt77.patch.xz>
#curl -SLO <https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.15/patch-5.15.160-rt77.patch.sign>
# Confirmed Version ------------------------------------------------------------------
curl -SLO <https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz>
curl -SLO <https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.sign>
curl -SLO <https://www.kernel.org/pub/linux/kernel/projects/rt/5.9/patch-5.9.1-rt20.patch.xz>
curl -SLO <https://www.kernel.org/pub/linux/kernel/projects/rt/5.9/patch-5.9.1-rt20.patch.sign>
And decompress them with:
xz -d *.xz
Verifying file integrity
The .sign files can be used to verify that the downloaded files were not corrupted or tampered with. The steps shown here are adapted from the Linux Kernel Archive , see the linked page for more details about the process.
You can use gpg2 to verify the .tar archives:
gpg2 --verify linux-*.tar.sign
gpg2 --verify patch-*.patch.sign
You have to first download the public key of the person who signed the above file. As you can see from the above output, it has the ID [ID_CODE]. You can obtain it from the key server:
gpg2 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys [$ID_CODE]
gpg2 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys [$ID_CODE]
Note that keys for other kernel version might have different IDs, you will have to adapt accordingly.
Having downloaded the keys, you can now verify the sources. Here is an example of an output:
