LinuxCNC Hardware 2024: Welche PCs können verwendet werden?
![LinuxCNC Logo](/static/270af92c8a5af6c2388e960a0c8568d3/22d22/linuxcnclogo.png)
Auch wenn LinuxCNC an sich keine hohen Systemanforderungen benötigt, eignet sich nicht jeder PC als Steuerung für eine Maschine. Was es außer der Prozessorgeschwindigkeit noch zu beachten gibt und welche PCs sich nicht eignen erklärt dieser Artikel.
Systemanforderungen
Die recht geringen Systemanforderungen lauten nach dem Wiki wie folgt:
- 700 MHz x86 Prozessor (1.2 GHz x86 Prozessor empfohlen) oder Raspberry Pi 4 bzw. 5.
- Mindestens 512 MB Arbeitsspeicher, für komplexere GUIs wird mindestens 4 GB empfohlen
- 8 GB freier Festplattenspeicher
- Grafikkarte mit mindestens 1024x768 möglicher Auflösung oder onboard Grafik Treiber
- Internetverbindung (nicht unbedingt benötigt aber sehr empfehlenswert)
Verarbeitungsgeschwindigkeit - Latency & Jitter
Schaut man sich Forenbeiträge zu geeigneten PCs an, fallen häufig die beiden Begriffe Latency & Jitter.
Latency
Damit das System stabil läuft, müssen immer wiederkehrende Aufgaben erledigt werden, unter anderem die Generierung von Schritten für den Motortreiber. Diese Aufgaben sind zeitlich kritisch, denn wenn bspw. die Schrittgenerierung zu lange stoppt, bekommt der Motortreiber keine Signale mehr und die Maschine verfährt nicht wie gewünscht. Dies kann zu Fehlern und sogar zu einem Crash der Maschine führen.
Damit diese Aufgaben regelmäßig ausgeführt werden, gibt es in LinuxCNC zwei Hauptfunktionen, auch Threads genannt.
Der servo-thread, welcher üblicherweise jede Millisekunde läuft, ist hauptverantwortlich für die Generierung von Schritten, der base-thread übernimmt alle anderen weniger zeitkritischen Aufgaben. Der base-thread wird üblicherweise nur alle 25 Millisekunden gestartet.
Da ein CPU-Kern immer nur eine Aufgabe zeitgleich ausführen kann, muss zum starten der Threads häufig ein anderer Prozess unterbrochen werden, was Zeit kostet. Daher kommt es vor, das Threads später als geplant gestartet werden. Diese Verzögerung nennt man Latency.
Wenn ein Thread zu spät gestartet wird und der folgende planmäßig, ist die Periodendauer zwischen den Threads kürzer als erwartet. Daher kann die Latency auch negative Werte annehmen.
Die Latency berechnet sich also mit
Jitter
Kritischer als lange Verzögerungszeiten sind inkonsistente Verzögerungen. Das bedeutet, dass der thread teilweise planmäßig gestartet wird und teilweise mit hoher Verzögerung.
Die maximale Abweichung von der geplanten Periodendauer wird Jitter genannt. Sie entspricht also dem Absolutwert der maximal aufgetretenen Verzögerungen.
Beispiel: ein PC hat eine gemessene Latency von und , dann entspricht der Jitter 20ms.
Wie viel Jitter ist akzeptabel für LinuxCNC?
Mit wie viel Jitter eine Maschine noch zuverlässig läuft, ist abhängig von der verwendeten Technologie. Früher wurden viele Motortreiber direkt über den Parallelport angesteuert und die Schritte wurden mit LinuxCNC generiert. Diese Methode wird Soft-Stepping genannt.
Heutzutage gibt es viele Schnittstellenkarten, welche die Generierung der Schritte mithilfe eines FPGA durchführen. Dazu gehören unter anderem auch die häufig genutzten Mesa-Karten. Außerdem können Mototreiber teilweise direkt über ein Bussystem wie zum Beispiel EtherCat angesteuert werden. Dann ist keine Schrittgenerierung notwendig.
Wird Soft-Stepping genutzt, ist eine konsistente Ausführung von großer Bedeutung. Um Schritte zuverlässig zu generieren, sollte der Jitter unter 30-50ms liegen. Je geringer der Wert desto besser.
Falls auf Soft-Stepping verzichtet wird, ist das System deutlich weniger zeitkritisch. Der Jitter sollte hier unter 100ms liegen, damit das System ordnungsgemäß funktioniert.
Wie kann der Jitter getestet werden?
Um den Jitter auf einem PC zu testen, kann das "Latency Test Tool" verwendet werden, welches automatisch mit LinuxCNC installiert wird.
Das Tool wird mit folgendem Befehl über die Kommandozeile gestartet:
latency-test <servo_period_us> <base_period_us>
Wobei statt <servo_period_us>
und <base_period_us>
die gewünschten Zeiten in Mikrosekunden angegeben werden. Diese Parameter können auch weggelassen werden, dann startet das Tool mit den Standardzeiten von 1ms für den servo-thread bzw. 25ms für den base-thread.
![Latency Test Tool](/static/ce20312b513ad571526b2a77372950e9/77a9e/latencytest.png)
Das Tool sollte dann für einige Minuten oder Stunden laufen. Um die besten Ergebnisse zu erhalten sollte der PC dabei belastet werden, man sollte also verschiedene Fenster öffnen, Videos schauen etc. LinuxCNC sollte dabei jedoch nicht geöffnet werden.
Wie kann der Jitter verbessert werden?
Falls der Test ungenügende Ergebnisse liefert, gibt es einige Möglichkeiten, welche ausprobiert werden können.
- BIOS Einstellungen: Im BIOS des PCs sollten sämtliche Energiespar-Optionen deaktiviert werden, genau so wie ungenutzte Hardware oder andere Einstellungen, welche die Leistung des Systems beeinflussen
- Grafikkarte: Wird ein interner Grafikchip verwendet, kann eine Grafikkarte Abhilfe schaffen
- Andere Linux Distribution: Verschiedene Kernel und Distributionen liefern unterschiedliche Ergebnisse. Ein Wechsel kann dem Problem also möglicherweise Abhilfe schaffen.
Liste mit getesteten PCs
Da PC-Hersteller ihre Produkte natürlich nicht für LinuxCNC testen, muss auf die Tests von anderen Nutzern zurückgegriffen werden. Diese finden sich im LinuxCNC-Forum und sind hier einmal tabellarisch aufgelistet.
Reference ist dabei die Nummer des Posts mit dem Test, man gelangt somit mit der URL
https://forum.linuxcnc.org/18-computer/39371-results-of-latency-test-list-of-computers-tested-for-use-with-linuxcnc#REFERENCE
direkt dorthin, wenn man REFERENCE durch die entsprechende Nummer ersetzt.
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 |