LinuxCNC Hardware 2024: Which PCs can be used?
Even if LinuxCNC has pretty low system requirements, not every PC is suitable for controlling a machine. This article explains what else needs to be considered apart from the processor speed and which PCs are not suitable.
System requirements
The fairly low system requirements are as follows according to the Wiki:
- 700 MHz x86 processor (1.2 GHz x86 processor recommended) or Raspberry Pi 4 or 5.
- At least 512 MB RAM, for more complex GUIs at least 4 GB is recommended
- 8 GB free hard disk space
- Graphics card with at least 1024x768 possible resolution or onboard graphics driver
- Internet connection (not absolutely required but highly recommended)
Processing speed - latency & jitter
If you look at forum posts about suitable PCs, the two terms latency and jitter are often mentioned.
Latency
In order for the system to run reliable, recurring tasks must be performed, for example the generation of steps for the motor driver. These tasks are time-critical because if, for example, the step generation stops for too long, the motor driver no longer receives any signals and the machine does not move as desired. This can lead to errors and even cause the machine to crash.
To ensure that these tasks are executed regularly, LinuxCNC has two main functions, also known as threads.
The servo-thread, which usually runs every millisecond, is mainly responsible for generating steps for motor controllers, the base-thread takes over all other less time-critical tasks. The base thread is usually only started every 25 milliseconds.
As a CPU core can only execute one task at a time, another process often has to be interrupted to start the threads, which costs time. This means that threads are sometimes started later than planned. This delay is called latency.
If one thread is started too late and the following one is started on schedule, the period between the threads is shorter than expected. The latency can therefore also become negative.
The latency is calculated as
Jitter
Inconsistent delays are even more critical than long delay times. This means that the thread might sometimes be started on schedule and sometimes with a long delay.
The maximum deviation from the planned period duration is called jitter. It therefore corresponds to the absolute value of the maximum delays that have occurred.
Example: a PC has a measured latency of and , then the jitter corresponds to 20ms.
How much jitter is acceptable for LinuxCNC?
How much jitter a machine can still run reliably depends on the technology used. In the past, many motor drivers were controlled directly via the parallel port and the steps were generated with LinuxCNC. This method is called soft stepping.
Nowadays, there are many interface cards that generate the steps using an FPGA. These include the frequently used Mesa-Cards. In addition, motor drivers can sometimes be controlled directly via a bus system such as EtherCat. In this case, no step generation is necessary.
If soft stepping is used, consistent execution is of great importance. In order to generate steps reliably, the jitter should be below 30-50ms. The lower the value, the better.
If soft stepping is not used, the system is significantly less time-critical. The jitter should be less than 100ms for the system to function properly.
How can the jitter be tested?
To test the jitter on a PC, the "Latency Test Tool" can be used, which is automatically installed with LinuxCNC.
The tool is started with the following command via the command line:
latency-test <servo_period_us> <base_period_us>
Where instead of <servo_period_us>
and <base_period_us>
the desired times are specified in microseconds. These parameters can also be omitted, in which case the tool starts with the standard times of 1ms for the servo-thread and 25ms for the base-thread.
The tool should then run for a few minutes or hours. To get the best results, the PC should be under load, i.e. you should open various windows, watch videos, etc. LinuxCNC should not be opened during the test however.
How can the jitter be improved?
If the test delivers unsatisfactory results, there are several options that can be tried out.
- BIOS settings: In the BIOS of the PC, all energy-saving options should be deactivated, as well as unused hardware or other settings that affect the performance of the system
- Graphics card: If an internal graphics chip is used, a graphics card might help
- Different Linux distribution: Different kernels and distributions deliver different results. A change may solve the problem.
List of tested PCs
As PC manufacturers obviously do not test their products for LinuxCNC, the tests of other users must be used. These can be found in the LinuxCNC forum and are listed here in tabular form.
Reference is the number of the post with the test, so you can reach it with the URL
https://forum.linuxcnc.org/18-computer/39371-results-of-latency-test-list-of-computers-tested-for-use-with-linuxcnc#REFERENCE
directly if you replace REFERENCE with the corresponding number.
Reference | System | Servo Max [uS] | Servo Min [uS] | Servo Jitter [uS] | Base Max [uS] | Base Min [uS] | Base Jitter [uS] | OS | CPU | cores | GPU |
---|---|---|---|---|---|---|---|---|---|---|
252004 | ThinkCentre M910Q | -48,3 | 45 | 48,3 | 0 | Debian GNU/Linux bookworm/sid | Core(TM) i5-6500T | 4 c | HD Graphics 530 | ||
207941 | Acer , Aspire 5740 {laptop} | -44,4 | 44,3 | 44,4 | 0 | Linux Mi 19.3 | Core(TM) i3 CPU M 330 | 2c | Park [Mobility Radeon HD 5430/5450/5470] | ||
191209 | ASRock, To Be Filled By O.E.M. | -21,8 | 21,8 | 21,8 | -25 | 25,6 | 25,6 | Debian GNU/Linux 10 (buster) | Iel(R) Celeron(R) CPU J3355 | UD {probably chipset gpu?} |
248143 | ASRock, To Be Filled By O.E.M. | -5,4 | 5,4 | 5,4 | -6 | 6,6 | 6,6 | Debian GNU/Linux 10 (buster) | Iel(R) Celeron(R) CPU J3355 | 2 c | |
172788 | ASUS AT5MNI | -93,7 | 121 | 121 | -57,2 | 59,6 | 59,6 | Debian GNU/Linux 10 (buster) | Atom(TM) CPU D510 | 2c | Atom Processor D4xx/D5xx/N4xx/N5xx |
236824 | ASUSTeK COMPUTER INC., All Series | -30,4 | 30,3 | 30,4 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i7-4790K CPU | 4 c | Xeon E3-1200 v3/4th Gen | ||
238144 | ASUSTeK Computer INC., Maximus Extreme | -6,1 | 6,2 | 6,2 | 0 | Debian GNU/Linux 10 (buster) | Core(TM)2 Quad CPU Q9550 | 4 c | RV710 [Radeon HD 4350/4550] | ||
287524 | ASUSTeK COMPUTER INC., PRIME J4005I-C | -88,8 | 92 | 92 | 0 | Debian GNU/Linux 12 (bookworm) | Celeron(R) J4005 | 2 c | GeminiLake [UHD Graphics 600] | ||
240319 | ASUSTeK Computer INC., System Product Name | -13,4 | 13,6 | 13,6 | -18,1 | 18,7 | 18,7 | Debian GNU/Linux 10 (buster) | Quad-Core AMD Opteron(tm) Processor 1354 | RS780C [Radeon 3100] |
272535 | AWOW, PC BOX | -986,5 | 915,1 | 986,5 | 0 | Debian GNU/Linux 12 (bookworm) | Celeron(R) CPU J3455 | 4c | HD Graphics 500 | ||
240334 | BIOSTAR Group, A870U3 | -5 | 5 | 5 | -5,4 | 5,9 | 5,9 | Debian GNU/Linux 10 (buster) | AMD Phenom(tm) II X6 1035T 6c | RV710 [Radeon HD 4350/4550] |
197489 | Dell Inc., OptiPlex 7010 | 18,6 | 20,2 | 20,2 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i5-3470 | 1c {multicore disabled in bios} | Xeon E3-1200 v2/3rd Gen | ||
212460 | Dell Inc., OptiPlex 790 | -71 | 83,6 | 83,6 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i5-2400 | 2nd Generation Core Processor Family Iegrated Graphics Coroller | ||
193389 | Dell Inc., OptiPlex 9010 | -75,7 | 74,3 | 75,7 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i5-3570 | 4c | Xeon E3-1200 v2/3rd Gen | ||
193787 | Dell Inc., OptiPlex 9020 | -38,2 | 43,5 | 43,5 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i5-4670 | 4c | Xeon E3-1200 v3/4th Gen | ||
193787 | Dell Inc., OptiPlex 9020 | -45,2 | 49,3 | 49,3 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i5-4670 | 4c | Oland [Radeon HD 8570 / R7 240/340 OEM] | ||
211211 | Dell Inc., OptiPlex 9020M {micro} | -44,5 | 42 | 44,5 | 0 | Linux Mi 19.3 | Core(TM) i5-4590T | 4c | Xeon E3-1200 v3/4th Gen | ||
211401 | Dell Inc., OptiPlex 980 | -6,9 | 6,9 | 6,9 | -9,4 | 9,3 | 9,4 | Debian GNU/Linux 10 (buster) | Core(TM) i5 CPU 650 | Core Processor Iegrated Graphics Coroller |
236739 | Dell Inc., OptiPlex 980 | -10,1 | 10,2 | 10,2 | -14,6 | 21,8 | 21,8 | Debian GNU/Linux 10 (buster) | Core(TM) i5 CPU 650 | 2 c | Core Processor Iegrated Graphics Coroller |
180536 | Dell Inc., Precision WorkStation T3500 | -21,1 | 20,7 | 21,1 | -20 | 20,3 | 20,3 | Linux Mi 20 | Xeon(R) CPU W3565 | GF106GL [Quadro 2000] |
179989 | ECS, BAT-I | -57,7 | 64,3 | 64,3 | 0 | Linux Mi 20 | Celeron(R) CPU J1800 | Atom Processor Z36xxx/Z37xxx | ||
184089 | ECS, BAT-I | -64,2 | 82,8 | 82,8 | 0 | Linux Mi 20 | Celeron(R) CPU J1800 | 2c | Atom Processor Z36xxx/Z37xxx | ||
172802 | FUJITSU, ESPRIMO Q920 | -34,7 | 37,3 | 37,3 | 0 | Debian GNU/Linux 10 (buster) | i7-4765T | 4c | Xeon E3-1200 v3/4th Gen | ||
180684 | FUJITSU, ESPRIMO_D956 | -450,8 | 448,6 | 450,8 | 0 | Debian GNU/Linux 10 (buster) | I7-6700 | 1c {?????} | HD Graphics 530 | ||
222359 | FUJITSU, FUTRO S720 | -178,4 | 214,4 | 214,4 | 0 | Debian GNU/Linux 10 (buster) | AMD GX-217GA SOC with Radeon(tm) HD Graphics | Kabini [Radeon HD 8280E] | ||
186419 | Gigabyte Technology Co., Ltd., B460MD3H | -10,6 | 12,5 | 12,5 | 0 | Debian GNU/Linux 10 (buster) | Peium(R) Gold G6400 | Advanced Micro Devices, Inc. [AMD/ATI] | ||
172496 | Gigabyte Technology Co., Ltd., P35-DS4 | -23,6 | 23,3 | 23,6 | -24,6 | 104 | 104 | Debian GNU/Linux 9 (stretch) | Core(TM)2 Quad | 4c | Cypress PRO [Radeon HD 5850] |
190567 | Gigabyte Technology Co., Ltd., X570 AORUS ELITE | -17,6 | 15,9 | 17,6 | 0 | Linux Mi 20 | Ryzen 5 3500X 6-Core | Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] | ||
274288 | HARDKERNEL, ODROID-H2 | -89,5 | 89,9 | 89,9 | 0 | Debian GNU/Linux 12 (bookworm) | Celeron(R) CPU J3455 | 4c | GeminiLake [UHD Graphics 600] | ||
186230 | Hewlett-Packard, HP Elite x2 1011 G1 Tablet | -235,2 | 260,9 | 260,9 | 0 | Linux Mi 19.3 | Core(TM) M-5Y10c | HD Graphics 5300 | ||
172695 | HP Compaq Elite 8300 SFF | -18 | 18,7 | 18,7 | -47,2 | 49 | 49 | Debian GNU/Linux 10 (buster) | I5-3570 | 4c | Xeon E3-1200 v2/3rd |
179589 | HP Compaq Elite 8300 USDT | -93,1 | 105,7 | 105,7 | 0 | Linux Mi 20 | i5-3470S | 4c | Xeon E3-1200 v2/3rd Gen | ||
193142 | HP Compaq Pro 6300 SFF | -37,3 | 24,5 | 37,3 | 0 | Linux Mi 20 | Core(TM) i7-3770 CPU @ 3.40GHz | 1c {?} | Xeon E3-1200 v2/3rd Gen | ||
206998 | HP t610 WW Thin Clie | -34,3 | 34,8 | 34,8 | 0 | Linux Mi 19.3 | AMD G-T56N Processor | 2c | Wrestler [Radeon HD 6320] | ||
233799 | Iel Corporation, NUC7i5BNH | -83,7 | 86,4 | 86,4 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i5-7260U | 1 c | Iel Corporation | ||
179602 | Itautec S.A., Infoway | -39,8 | 52,1 | 52,1 | -24,9 | 74,6 | 74,6 | Linux Mi 19.3 | Core(TM)2 Duo CPU E7500 | 1c | ? |
179847 | Itautec S.A., Infoway | -24,8 | 51,7 | 51,7 | -22,3 | 22,8 | 22,8 | Linux Mi 19.3 | Core(TM)2 Duo CPU E7500 | 1c | ? |
224630 | ITX-ASRock880GXH | -15,6 | 16,2 | 16,2 | -23,5 | 24,3 | 24,3 | Linux Mi 20.2 | Celeron(R) J4005 | 2 c | UHD Graphics 605 |
181151 | K4-I5-4200U Aliexpress | -60,3 | 68,4 | 68,4 | 0 | Debian GNU/Linux 10 (buster) | i5-4200U | Haswell-ULT | ||
184367 | Lenovo 20EGS01900 Thinkpad W541 | -56 | 54,5 | 56 | 0 | Debian GNU/Linux 10 (buster) | i7-4810MQ | 4c | GK106GLM [Quadro K2100M] 4th Gen Core Processor Iegrated Graphics | ||
180798 | LENOVO, 0674GEG {z61p} | -878,5 | 878,8 | 878,8 | 0 | Linux Mi 19.3 | Core(TM)2 CPU T7200 | ? | ||
172205 | LENOVO, 10A8S1BX0N | -74 | 85 | 85 | 0 | Linux Mi 19.3 | I5-4570 | 4c | Xeon E3-1200 v3/4th Gen | ||
198736 | LENOVO, 10AAS3VA00 M93p | -45,7 | 47,6 | 47,6 | 0 | Debian GNU/Linux 10 (buster) | Core(TM) i5-4590T | 4c | Xeon E3-1200 v3/4th Gen | ||
248552 | LENOVO, 10MQS36600 {M710q} | -113,9 | 106 | 113,9 | 0 | Debian GNU/Linux 11 (bullseye) | Core(TM) i5-6400T | 4 c | HD Graphics 530 | ||
233326 | LENOVO, 10MR00xxxx {Thinkcere M710q Tiny i3-7100T} | -117,3 | 116,9 | 117,3 | 0 | Debian GNU/Linux 11 (bullseye) | Core(TM) i3-7100T | 2c | HD Graphics 630 | ||
185724 | LENOVO, 20AV006BMZ {L540 laptop} | -65,4 | 61,5 | 65,4 | -45,2 | 46,1 | 46,1 | Debian GNU/Linux 10 (buster) | i5-4210M | 2c | 4th Gen Core Processor Iegrated Graphics |
183735 | LENOVO, 2241BM7 {T500 laptop} | -431,1 | 428,8 | 431,1 | 0 | Debian GNU/Linux 10 (buster) | Core(TM)2 Duo CPU P8600 | 2c | Mobile 4 Series Chipset Iegrated Graphics Coroller | ||
185849 | LENOVO, 2758MKG {W700DS Laptop} | -408 | 408,5 | 408,5 | 0 | Debian GNU/Linux 10 (buster) | Core(TM)2 Quad CPU Q9000 | G92GLM [Quadro FX 3700M] | ||
185688 | LENOVO, 2774AP3 {x301 laptop} | -523 | 518,1 | 523 | 0 | Debian GNU/Linux 10 (buster) | Core(TM)2 Duo CPU U9400 | 2c | Mobile 4 Series Chipset Iegrated Graphics Coroller | ||
185033 | LENOVO, 3254CTO {Edge 340 Laptop} | -55,4 | 55,1 | 55,4 | 0 | Debian GNU/Linux 10 (buster) | i5-3210M | 1c {Multi core off?} | 3rd Gen Core processor Graphics Coroller | ||
184117 | LENOVO, 4157CTO {T530 laptop} | -11,9 | 13,6 | 13,6 | 0 | Linux Mi 19.2 | Xeon(R) CPU W3550 | 4c | GF106GL [Quadro 2000] | ||
189570 | LENOVO, H215, Idea ceer | -66,1 | 67 | 67 | 0 | Debian GNU/Linux 10 (buster) | AMD Athlon(tm) II X2 250 | RS780L [Radeon 3000] | ||
187851 | OptiPlex 7010 | -82,9 | 69,6 | 82,9 | 0 | Debian GNU/Linux 10 (buster) | I5-3570 | 4c | Xeon E3-1200 v2/3rd Gen | ||
190397 | OptiPlex 7010 USFF | -41,3 | 41,5 | 41,5 | 0 | Linux Mi 20 | i5-3470S | 4c | Xeon E3-1200 v2/3rd Gen | ||
191033 | OptiPlex 780 | -37,8 | 35,5 | 37,8 | -31,8 | 32,8 | 32,8 | Linux Mi 19.3 | Core(TM)2 Duo CPU E8400 | 1c | 4 Series Chipset Iegrated Graphics Coroller |
172308 | OptiPlex 980 | -19,3 | 17,8 | 19,3 | -19,9 | 17,6 | 19,9 | Debian GNU/Linux 10 (buster) | i5 CPU 650 | 2c | Ierated |
182603 | OptiPlex 980 | -11,9 | 14,2 | 14,2 | -18,4 | 19,4 | 19,4 | Debian GNU/Linux 10 (buster) | I5 750 | 4c | RV710 [Radeon HD 4550] |
184500 | OptiPlex 980 | -11,9 | 11,7 | 11,9 | -16,1 | 16 | 16,1 | Debian GNU/Linux 10 (buster) | i7 CPU 870 | 4c | RV710 [Radeon HD 4550] |
184283 | OptiPlex FX160 | -396,4 | 400,8 | 400,8 | 0 | Debian GNU/Linux 10 (buster) | Atom(TM) CPU 330 | 771/671 PCIE VGA | ||
184048 | RPi4 4GB | -126,9 | 146,9 | 146,9 | 0 | Raspbian GNU/Linux 10 (buster) | ARMv7 Processor rev 3 | |||
236754 | SAMSUNG ELECTRONICS CO., LTD., QX310/QX410/QX510/SF310/SF410/SF510 | -23,2 | 24 | 24 | -24,6 | 56 | 56 | Linux Mi 18.1 | Core(TM) i5 CPU M 480 | 2 c | GT218M [GeForce 310M] | Core Processor Iegrated Graphics Coroller |
185271 | Supermicro, Super Server | -80,2 | 82,6 | 82,6 | 0 | Debian GNU/Linux 10 (buster) | Peium(R) Gold G5420 | Intel Corporation |