It's getting complicated to decide how to install LinuxCNC! With the upcoming 2.8 release, you will have your choice of support for three realtime kernels (and generic/vanilla kernels for simulator mode):

  1. RTAI
  2. PREEMPT-RT
  3. Xenomai

Like LinuxCNC 2.7, there are two package flavors:

  1. linuxcnc (kernel-module-based)
  2. linuxcnc-uspace (userspace-based)

And here's a matrix of kernel support vs package flavor that we hope to have in 2.8:

Kernel flavor
LinuxCNC PackageRTAIPREEMPT-RTXenomaiGeneric
linuxcncYES¹NoNoNo
linuxcnc-uspaceYES²YESYESYES

.. there are two main caveats to that list:

  1. Running kernel version must exactly match what LinuxCNC was compiled for (one of the biggest hassles with RTAI using the kernel module model)
  2. linuxcnc-uspace Packages from buildbot don't actually have RTAI support now, but self-built packages will, as long as the package with lxrt development files is installed (rtai-modules-*)

As you can see, linuxcnc-uspace is better (at least on paper) than the old rtai-kernel-based approach, it's more versatile in terms of RTOS support, and it's never tied to a specific kernel version.

One thing we don't know yet is: how much additional latency or jitter is introduced by using LXRT ABI instead of kernel module ABI? I hope it's little enough that we can consider dropping the kernel module realtime model altogether for LinuxCNC 2.9 or so.

So I propose the following steps for deciding which flavor of LinuxCNC to use, if you're building our master branch:

  1. Choose linuxcnc-uspace with the realtime kernel of your choice
but if you experience that linuxcnc-uspace + RTAI gives substantially worse performance than linuxcnc kernel-mode + RTAI, please drop us a note about it before we go dropping that functionality.