:lang: en
:toc:

[[cha:system-requirements]]
= System Requirements(((System Requirements)))

== Minimum Requirements

The minimum system to run LinuxCNC and Debian / Ubuntu may vary depending
on the exact usage. Stepper systems in general require faster threads to
generate step pulses than servo systems. You can use the Live CD to test
the software before committing to a permanent installation on a computer.
Keep in mind that the Latency Test numbers are more important than the
processor speed for software step generation. More information on the
Latency Test is <<sec:latency-test,here>>.
In addition LinuxCNC needs to be run on an operating system that uses a
specially modified kernel,
see <<sec:kernel_and_version_requirements,Kernel and Version Requirements>>.

Additional information is on the LinuxCNC Wiki site:
https://wiki.linuxcnc.org/cgi-bin/wiki.pl?Hardware_Requirements[Hardware Requirements]

LinuxCNC and Debian Linux should run reasonably well on a computer with
the following minimum hardware specification. These numbers are not the
absolute minimum but will give reasonable performance for most stepper
systems.

* 700 MHz x86 processor (1.2 GHz x86 processor recommended) or Raspberry Pi 4 or better.
* LinuxCNC 2.8 or later from the Live CD expects a 64-bit capable system.
* 512 MB of RAM, 4 GB with GUI to avoid surprises
* No hard disk for Live CD, 8 GB or more for permanent installation
* Graphics card capable of at least 1024x768 resolution, which is not using the NVidia or ATI fglrx proprietary drivers.
  Modern onboard graphic chipsets seem to generally be OK.
* Internet connection (not strictly needed, but very useful for updates and for communicating with the LinuxCNC community)

Minimum hardware requirements change as Linux distributions evolve so
check the https://www.debian.org/releases/stable/amd64/ch02.en.html[Debian]
web site for details on the Live CD you're using. Older hardware may
benefit from selecting an older version of the Live CD when available.

If you plan not to rely on the distribution of readily executable programs ("binaries")
but aim at contributing to the source tree of LinuxCNC, then there is a good chance
you want a second computer to perform the compilation. Even though LinuxCNC and
your developments could likely be executed at the same time with respect to disk space,
RAM and even CPU speed, a machine that is busy will have worse latencies, so you are
unlikely to compile your source tree and produce chips at the same time.

[[sec:kernel_and_version_requirements]]
== Kernel and Version requirements

LinuxCNC requires a kernel modified for realtime use to control real machine hardware.
It can, however run on a standard kernel in simulation mode for purposes
such as checking G-code, testing config files and learning the system.
To work with these kernel versions there are two versions of LinuxCNC distributed.
The package names are "linuxcnc" and "linuxcnc-uspace".

The realtime kernel options are preempt-rt, RTAI and Xenomai.

You can discover the kernel version of your system with the command:

----
uname -a
----

If you see (as above) `-rt-` in the kernel name then you are running the
preempt-rt kernel and should install the "uspace" version of LinuxCNC.
You should also install uspace for "sim" configs on non-realtime kernels

If you see `-rtai-` in the kernel name then you are running RTAI
realtime. See below for the LinuxCNC version to install.

=== Preempt-RT with 'linuxcnc-uspace' package

Preempt-RT is the newest of the realtime systems, and is also the version
that is closest to a mainline kernel. Preempt-RT kernels are available
as precompiled packages from the main repositories. The search term
"PREEMPT_RT" will find them, and one can be downloaded and installed
just like any other package.
Preempt-RT will generally have the best driver support and is the only
option for systems using the Mesa ethernet-connected hardware driver
cards. In general preempt-rt has the worst latency of the available
systems, but there are exceptions.

=== RTAI with 'linuxcnc' package

RTAI has been the mainstay of LinuxCNC distributions for many years. It
will generally give the best realtime performance in terms of low
latency, but might have poorer peripheral support and not as many screen
resolutions. An RTAI kernel is available from the LinuxCNC package
repository. If you installed from the Live/Install image then switching
kernel and LinuxCNC flavour is described in [Installing-RTAI].

=== Xenomai with 'linuxcnc-uspace' package

Xenomai is also supported, but you will have to find or build the kernel
and compile LinuxCNC from source to utilise it.

=== RTAI with 'linuxcnc-uspace' package

It is also possible to run LinuxCNC with RTAI in user-space mode.
As with Xenomai you will need to compile from source to do this.

== Problematic Hardware

=== Laptops

Laptops are not generally suited to real time software step generation.
Again a Latency Test run for an extended time will give you the info you need to determine suitability.

=== Video Cards

If your installation pops up with 800 x 600 screen resolution then
most likely Debian does not recognize your video card or monitor. This
can sometimes be worked-around by installing drivers or creating /
editing Xorg.conf files.

// vim: set syntax=asciidoc:
