[Home]LinuxCNC Supported Hardware

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

LinuxCNC Hardware

Hardware to run the LinuxCNC software

A computer is required to run LinuxCNC itself.

Minimum computer requirements can be found in the LinuxCNC docs: http://LinuxCNC.org/docs/stable/html/getting-started/system-requirements.html

The most common is to use a x86 computer (standard Intel / AMD computer)

ARM computers such as the Raspberry Pi or Orange Pi can be used

Hardware Interface to CNC machine

There are multiple different ways to interface between LinuxCNC controller software, and CNC hardware (such as stepper / servo drivers, limit switches, inputs and outputs etc.)

Interfaces include:

A mix of different interfaces can be used. For example, a combination of EtherCat for servo drives, and parallel port for additional General Purpose Inputs / Outputs (GPIO)

Some of these solutions are usable for all aspects of hardware interfacing, and some have specific roles (e.g. non-realtime GPIO, for an operator inferface).

Parallel Port

Using onboard motherboard parallel port, or a PCI / PCIe parallel port card.

Parallel Port Software Interface

Realtime (time critical) tasks such as step generation are done in software on the LinuxCNC host - this means the parallel port interface is much more sensitive to the LinuxCNC computer's latency.



Parallel Port to FPGA / MCU Communication

Realtime (time critical) tasks such as step generation are done in hardware (not on the computer)

Mesa via Parallel Port

Mesa have Field-programmable gate array (FPGA) cards interfaced via parallel port - e.g. 7i43

Website: http://mesanet.com/ Store: http://store.mesanet.com/

Pico Systems via Parallel Port



Mesa (Ethernet)

Mesa cards with a Field-programmable gate array (FPGA), interfaced to LinuxCNC computer via Ethernet. Time critical (realtime) tasks are performed on the FPGA card.

Multiple ethernet interface FPGA cards are available, with many expansion cards

Website: http://mesanet.com/ Store: http://store.mesanet.com/

Remora (Ethernet)

Realtime requirements are offloaded onto a controller board. Multiple different controller boards are supported - see Remora docs.

Note that some of these controller boards (e.g. NVEM, EC300, EC500) are designed / sold for use with Mach3. Use with LinuxCNC requires flashing new firmware, which has been developed by the LinuxCNC community. The manufacturer does not support LinuxCNC.

Expatria Technologies PicoBOB-DLX was designed for LinuxCNC Remora.

Remora docs: https://remora-docs.readthedocs.io

As of March 2024:
    STM32 based controller boards

        NVEM - an STM32F207 based board with Ethernet PHY chip, originally intended for Mach3. [No longer in production, Legacy Support - no new features]

        EC500 - an STM32F407 based board with Ethernet PHY chip, originally intended for Mach3. [No longer in production, Legacy Support - no new features]

        Expatria Technologies Flexi-HAL with uFlexiNET Ethernet adapter - an STM32F446 based board with W5500 Ethernet SPI adapter designed for Remora

    iMX RT1052 based controller boards

        NVEM, EC300 & EC500 - iMXRT1052 based controller boards with Ethernet PHY chip, originally intended for Mach3. [In active development]

    RP2040 based controller boards

        WIZnet W5500-EVB-Pico - Raspberry Pi RP2040 based development board with on-board W5500 Ethernet SPI adapter

        Expatria Technologies PicoBOB-DLX - Raspberry Pi RP2040 based board with on-board W5500 Ethernet SPI adapter designed for Remora

Litex-CNC (Ethernet)

This project aims to make a generic CNC firmware and driver for FPGA cards which are supported by LiteX?. Configuration of the board and driver is done using json-files. The supported boards are the Colorlight boards 5A-75B and 5A-75E, as these are fully supported with the open source toolchain.

Colorlight 5A-75B and 5A-75E cards are designed as a LED receiver card - it outputs to LED matrix panels. These cards have outputs only - hardware modification is required to enable use for inputs. Soldering required. Output buffers can be replaced with an input buffer.


LinuxCNC-RIO (Ethernet)

RealtimeIO for LinuxCNC based on an FPGA

Ethernet interface can be used with a Ethernet to SPI interface.



Beckhoff EtherCat(TM) and compatible systems can be made to work with LinuxCNC using the open source etherlab software.

EtherCat is the open real-time Ethernet network originally developed by Beckhoff.
The EtherCat master (LinuxCNC computer) uses a standard ethernet (network) interface - no special hardware is needed on the master. The slaves use special hardware.
There are many EtherCat slave devices available including servo drives, stepper drives, input, output interfaces, VFDs, and others.




Mesa PCI / PCIe cards with a Field-programmable gate array (FPGA). Time critical (realtime) tasks are performed on the FPGA card.

Multiple daughter / expansion cards are available

Website: http://mesanet.com/ Store: http://store.mesanet.com/


SPI = Serial Peripheral Interface. SPI interfaces can be found on single board computers like Raspberry Pi, or Orange Pi. SPI interface is not generally present on standard computers (AMD/Intel?).

Remora (SPI)

Realtime requirements are offloaded onto a controller board. https://remora-docs.readthedocs.io


RealtimeIO for LinuxCNC based on an FPGA


Mesa (SPI)

Mesa cards with a Field-programmable gate array (FPGA), interfaced to LinuxCNC computer via SPI. Time critical (realtime) tasks are performed on the FPGA card.

Example: 7C80 for Raspberry Pi

Website: http://mesanet.com/ Store: http://store.mesanet.com/


USB devices cannot be used to control motors or perform other "real time" tasks.

USB to Parallel port converters are NOT usable / suitable for CNC use.


This Project enables you to connect an Arduino to LinuxCNC and provides as many IO's as you could ever wish for. This Software is used as IO Expansion for LinuxCNC.
It is NOT intended for timing and security relevant IO's. Don't use it for Emergency Stops or Endstop switches!

Site: https://github.com/AlexmagToast/LinuxCNC_ArduinoConnector


Supported Hardware

The purpose of this page is to describe the electronics that interfaces your PC to your CNC machine. For information on selecting a PC to run LinuxCNC, please see Hardware Requirements. Not a definitive list, by far.
HardwareDesign - general notes on the hardware interface designs that work well with LinuxCNC

Commercial PCI/ISA cards

General Mechatronics: http://www.generalmechatronics.com/en/LinuxCNC
DIN-rail mounted modular system
Servo-To-Go ISA: http://www.servotogo.com/
$888 for 8 axis model II card (8 encoder inputs, 8 DAC outputs, 32 bit I/O, 8 analog inputs)
Vital Systems Motenc-Lite Servo PCI 4-Axis Card and I/O Boards: http://www.vitalsystem.com/
7541: $595 includes 8 DAC outputs, 8 analog Inputs, 4 encoder inputs, 32 digital inputs, 16 digital outputs
7544: $495 includes 8 DAC outputs, 4 encoder inputs, 32 digital inputs, 16 digital outputs
Mesa Electronics Anything I/O boards (plus all the Servo & Stepper Daughter Boards, etc) http://www.mesanet.com/
The Anything I/O boards are all based on FPGAs, so they can be loaded with different firmware when LinuxCNC starts.
Firmware defines the number of encoders, PWMs, stepgens and General Purpose IO.
5i20, PCI, 200K gates, 72 I/O pins, $200
5i22, PCI, 1.0M or 1.5M gates, 96 I/O pins, $370-$430
5i23, PCI, 400K gates, 72 I/O pins, $230
5i25, PCI (low-profile) 2x25 IO pins on a DB25, expanding to 96 or more with daughter cards.
4i65, PC-104/Plus?, 200K gates, 72 I/O pins, $200
4i68, PC-104/Plus?, 200K or 400K gates, 72 I/O pins, $230 (for the 400K gate version)
3x20, PCI-Express, 1.0M or 1.5M or 2.0M gates, 144 I/O pins
look here for more info: mesa cards

Axiom Measurement & Control AX5214H 48 Channel Digital I/O Board (ISA): http://www.axiomtek.com/
$ price ?
Siemens EVOREG Motion Control Board?
$ price ?
Vigilant Products PCI-ENCDAC 4 Axis Controller and EXPDIG I/O boards: http://www.vigproducts.com
$1000 for 4 Axis Controller
Opto22 PCI AC5 adapter card- 48 points of I/O usually used with their relay racks.
$475 new, Ebay -a lot less! Details here:OptoPciAc5
Advantech ISA card
PCL-720 [1] You would be unlikely to choose this for a new build but this driver can make some retrofits easier.

Commercial Systems using the Parallel port as a data bus.

Pico Systems Universal Stepper Controller: http://pico-systems.com/univstep.html
$250 includes 4 step/dir outputs, 4 encoder inputs/counters, 16 digital inputs, 8 SSR sockets
$50 option adds a spindle speed DAC
an encoder input can be used for spindle-synchronized threading
Pico Systems PWM Controller: http://pico-systems.com/univpwm.html
$250 includes 4 pwm outputs, 4 encoder inputs, 16 digital inputs, 8 SSR sockets
$50 option adds a spindle speed DAC
an encoder input can be used for spindle-synchronized threading
Pico Systems PPMC Board Set: http://pico-systems.com/PPMC.html
$780 includes 4 16-bit dac outputs for +/- 10 V analog servo amplifiers, 4 differential or single-ended encoder inputs, 17 digital inputs, 8 SSR sockets
all-in-one package for analog servo retrofits
an encoder input can be used for spindle-synchronized threading
Using a NetMos parport card
Mesa Electronics 7i43: http://www.mesanet.com
$80. The 7i43 is an FPGA-based "Anything I/O" board. It has a Spartan3 FPGA (200K or 400K gates) and 48 I/O pins. LinuxCNC supports this board with the HostMot2 firmware, which is available in many different configurations providing encoders, PWM generators, step/dir generators, and general purpose digital I/O pins.
look here for more info: mesa cards

Ethernet based BUS Systems

Beckhoff EtherCat(TM) and compartible systems can be made to work with LinuxCNC using the open source etherlab software. see etherlab for details

AB&T EpoCAT FR1000: http://www.bausano.net/en/hardware/EtherCat/epocat-fr-1000.html
5 axes slave module EtherCat(TM) compatible.
$550 includes 5 1MHz step/dir outputs,1 auxiliary analog output, 2 analog inputs, 12 digital inputs, 8 digital outputs, 1 probe input.

Mesa Electronics 7i76E, 7i96, 7i92 and 7i80

CAN based BUS Systems

currently there is no known driver for LinuxCNC to connect to CAN based bus systems

Step & Direction Drives

Note: any Stepper-motor or servo-motor drive that accepts step/direction signals could be used with LinuxCNC. These are just some examples of inexpensive stepper/servo drives.
$54 ([3-axis EZ board] only) to $240 ([4-axis PRO board], parallel cable & 4 motors).
Step & direction signals on 25 pin D, selectable microstepping, 3A/phase.
Requires no break-out board, simplified installation. Board sold as a kit, assembly required (basic soldering skills needed)
Updated 6/24/16 - BrianV?, HobbyCNC.com
$155 (3-axis board only) to $525 (4-axis board, motors, and power supply).
Buffered step & direction signals, selectable microstepping, 2.5A/phase.
Gene Heskett says:
I'm using a 3 axis board myself, and have been since (the early) days, using a radio shack breakout board to remap the signals. Now particularly since hal now has mappable i/o pins, the pinout diffs between the Xylotex boards and other driver boards is a total non-issue & the rs232 breakout box isn't needed anymore. LinuxCNC even comes with a halfile made for the xylotex boards.
1 axis, 3A, bipolar, 1x/2x/4x/8x microstepping, idle current reduction, etc. Requires separate breakout board. $73/axis
[Gecko Drive]
Stepper drives and Servo drives.
$147 G203V Stepper Drive 7A 80V Short-circuit, Reversed-polarity, Over-temperature, Over-voltage protection.
2.5V, 3.3V and 5V logic compatible inputs, 350 kHz maximum Step pulse frequency.
[Motion Control Products MSD542].
1 axis, RMS 3A, microstepping drive. Looks identical to the Keling KL- 5042 (I think they are both Leadshine drives).
[Granite Devices]
Up to 160V 40A servo-drive cards for DC, AC, BLDC and linear servo motors.
For brush-DC servo motors, one drive can control two motors yielding cost around 100 euros/axis.
[stepperworld.com sp3]
3 axis stepper drive - sp3 from stepperworld.com. [pin setup]
Servo drives, both brush and brushless.
STMBL open-source 2kW brushless servo drive, connects directly as a Mesa smart-serial device but also can be controlled by step.dir, analog etc signal.
[Semis Co.]
Manufactures up to 12kW peak power analogue and STEP/DIR servo-drives.
stepper drives, breakout boards with relays, motors and more.
e.g. micro-steping 1 axis 2A 39 Euro, 4A 76euro, 3axis 2A 98 Euro nice quality (some items are kits, others are ready to use). Bigger drivers up to 10A/90V.
might be a good option if you live in Europe
Postep25-32, 1 axis, 2.5A, 1x, 2x, 4x, 8x, 16x, 32x microsteping, 17,00 EUR per axis, very good thermal design
Postep60-256, 1 axis, 6A, 1x- 256x microsteping, 54,90 EUR per axis, very good thermal design

PCI and PCIe Parallel Port Cards

Parallel port cards allow the addition of parallel ports beyond the built-in port on PC motherboards. These may be used for realtime functions such as software PWM and step/dir, or for user functions such as controlling coolant, tool changers, relays, etcetera. Nearly any card will work with pin changing functions (hal_parport), but very few cards are compatible with EPP, which is used with parallel port connected FPGA signal generators and controllers. Several LPT cards and their test results are listed here.

Startech (Sunix/SUN1888)
PCIe EPP Cards
Dual port Vantec [https://forum.LinuxCNC.org/38-general-LinuxCNC-questions/46705-vantec-2-port-parallel-pcie-card-ugt-pce20pl UGT-PCE20PL]
Parallel port cards that use the ASIX MCS9901
NetMos - Most parallel port cards use one of the NetMos chips

SPI BUS Boards

Boards that use [Remora] firmware to connect Rpi's and similar to a microcontroller board over SPI bus.

Breakout Boards, Power Supplies etc.

$41.60 C1G - Parallel Port Interface Card (For Geckos)
Breakout Boards and other accessories for step and direction controls
[http://www.ijohnsen.com/blog/LinuxCNC-mach3-breakout-board/ LinuxCNC Breakout Board]
Parallel Port Breakout Board found on ebay and aliexpress for under $10


Variable Frequency Drives are generally used to drive three phase spindle motors. Variable-frequency drives are also known as adjustable-frequency drives (AFD), variable-speed drives (VSD), AC drives, microdrives or inverter drives. Since the voltage is varied along with frequency, these are sometimes also called VVVF (variable voltage variable frequency) drives. Since the spindle motor is often the only truly three phase component of a CNC machine, a VFD may be used to convert a machine to single phase by either using an overrated three phase input drive or a drive designed as a single phase input drive. Voltage conversion is also a common feature that can allow one to use, for instance, a 460 Volt motor from 240 Volt mains. See: http://en.wikipedia.org/wiki/Variable-frequency_drive

Common I/O are; the front panel,or digital inputs such as start, stop, forward, reverse, etcetera, along with analog speed as +/- 5 or 10 Volts, or Modbus RTU and Modbus Ethernet. For use with LinuxCNC, the digital, analog, and Modbus I/O are the most interesting.

VFD Digital/Analog Interface
VFD Modbus

Encoder & Resolver Interfaces

Pico Systems has a line of products to connect proprietary position feedback devices to LinuxCNC systems and others CNC controls.
[Fanuc Converter]
The original Fanuc "Red Cap" motors had quadrature encoders, but the commutation information was proprietary. They call these "Pulse Coders." We have a converter that converts these signals to standard "Hall" signals that can be used with Pico Systems brushless drives or other makes.
[Fanuc Serial Converter]
Fanuc Serial Pulse Coders give a serial data stream when interrogated. We have a converter that converts this data to quadrature with index, plus standard commutation signals.
[Resolver to Quadrature Converter]
Resolver to quadrature converter converts a brushless resolver to a quadrature resolution of 4096 counts/rev, with index.
[Panasonic Converter]
Panasonic converter for MUMS-series motors. Again, they have proprietary commutation info, this converts it to industry-compatible "Hall" signals.

Human Interface


DIY hardware known to work with LinuxCNC

The open-source [LiniStepper motor driver] is known to work with LinuxCNC: [video of a Linisteppers driving a Sherline 2000], [configuration settings] It is Microchip PIC based and supports full, half (at full power), as well as 6th and 18th microstepping with linear smoothing, for small to medium sized Unipolar motors. The [source], [circuit], and several [user contributed board layouts] are available as well as [full kits] with pre-programmed PIC chips. It uses [PMinMO connector] so you can mix and match with the drivers and BOB's from [PMinMO] including those listed below.
L297/L298 stepper driver
A single-sided board based on the L297/L298 chipset. up to 46V supply, 2A/motor, constant-current chopper. For bipolar motors. Half- or full-stepping with step and direction inputs. PDF format for DIY pcb. Thru-hole components. [PMinMO.com L297-8]
A three axis driver based on the L297/L298 chipset. Available as a kit (THT) or PCB only (double-sided board, industrial quality). Up to 43V supply, 2A/motor, constant-current chopper. For bipolar motors. Half- or full-stepping with step and direction inputs.[mechapro 3D-Step]
[http://LinuxCNC.org/docs/2.1/html/hal/pluto_servo.html Pluto-P Servo]
An FPGA board with open-source firmware and LinuxCNC driver. 4x20kHz PWM, 4x8MHz quadrature, 10+ digital outputs, 8+ digital inputs. Uses EPP parallel port. Needs compatible servo amplifiers (up/down or pwm+direction input), such as L298 servo driver (below)
L298 servo driver
A single sided board based on the L298 H-bridge. Up to 46V supply, 2A/motor. For DC servo motors with TTL-level encoder outputs. Driven by PWM input. PNG images of schematic. So far this has only run cradek's lathe experimentally, but the results are good and with the new parallel port "x mode" (8 outputs, 9 inputs, supported on some but not all parallel ports) it may be possible to run a 3 or 4 axis machine with this scheme. http://emergent.unpythonic.net/projects/01142347802
A diagram of the hal connections in the etch-servo hal example distributed with LinuxCNC is available upload:EtchHalDiagram.pdf .
Medium Current Quadrature Drive Servo System
This is a full servo board up to 7amp +-24v. Its on board DSPic processor reads quadrature position signals from LinuxCNC stepgen type 2 and uses an onboard PID loop driving a current amplifier to keep the actual position close to the commanded position. Drive setup is through a serial port. It is best suited for 12 to 25 volt dc/servo motors with TTL encoders. Pic source code is GPL. PCB eagle project provided as well as milling and drilling G code files for machining the board with LinuxCNC. http://members.shaw.ca/swstuff/dspic-servo.html
AVR (in very early development)
Parallel port to AVR fast hardware signal generator and counter
Might be used for a parallel port interface similar to the AVR above, but faster. May also be fast enough to run Linux, RTAI and/or LinuxCNC by itself, such as on a Beagle Board.
May be the ultimate in LinuxCNC peripheral speed. Popular for PCI and parallel port I/O interface cards. This page explores this technology to see if it might be useful to the beginning developer, integrator or DIY'er.
Bridges - Half, Full, Three Phase
Power drivers for switched and PWM control of motors or other high voltage or high current loads

Toy designs

Low-current stepper driver
A single-sided board based on the ULN2803 darlington chip. Simple, but very low current, <500mA/motor. Not recommended for anything but a toy. Half- or full-stepping with 4 winding activation signals per axis. PNG images of schematic and board. This design could be adapted to drive 3-axes, because there are 12 available outputs. http://axis.unpythonic.net/etchcnc

RC Servo Test
I can't think of any CNC application, but LinuxCNC's PWM and pyVCP can be used to test RC servos.

other hardware we've heard about, but we don't know if it will work or not

Hardware that doesn't work

What about the machines?

If you want to see pictures of big iron, check out the Case Studies page

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions
Last edited April 25, 2024 3:32 am by Pippin88 (diff)
Published under a Creative Commons License