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:
- Parallel Port
- Ethernet
- EtherCat
- PCI / PCIe
- SPI (where the computer has a native SPI interface, such as Raspberry Pi)
- USB (not realtime interface)
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.
Advantages:
- Low cost
- Simple configuration
Disadvantages:
- Sensitive to the LinuxCNC computer's latency
- Limited inputs / outputs
- Some PCI / PCIe parallel port cards do not work well or do not properly support the required EPP mode
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
- http://pico-systems.com/univstep.html
Ethernet
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.
- https://litex-cnc.readthedocs.io
LinuxCNC-RIO (Ethernet)
- RealtimeIO for LinuxCNC based on an FPGA
- Ethernet interface can be used with a Ethernet to SPI interface.
- https://github.com/multigcs/LinuxCNC-RIO
EtherCat
- 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.
- https://github.com/LinuxCNC-EtherCat/LinuxCNC-EtherCat
PCI / PCIe
Mesa
- 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
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
LinuxCNC-RIO (SPI)
- RealtimeIO for LinuxCNC based on an FPGA
- https://github.com/multigcs/LinuxCNC-RIO
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
USB devices cannot be used to control motors or perform other "real time" tasks.
LinuxCNC_ArduinoConnector
- 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
OLD INFO
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.
- [HobbyCNC]
- $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
- [Xylotex]
- $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.
- [PMDX-150]
- 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]
- [www.rutex.com]
- 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.
https://github.com/rene-dev/stmbl
- [Semis Co.]
- Manufactures up to 12kW peak power analogue and STEP/DIR servo-drives.
- [mechapro.de]
- 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
- [PoLabs]
- 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.
- PCI EPP Cards
- Startech (Sunix/SUN1888)
- SIIG
- 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
- PCI SPP Cards
- 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.
- SKR V2 STM32F407VGT6
Breakout Boards, Power Supplies etc.
- [CNC4PC]
- $41.60 C1G - Parallel Port Interface Card (For Geckos)
- [PMDX]
- 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
VFD's
- 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
- ModIO
DIY hardware known to work with LinuxCNC
- [LiniStepper]
- 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
- ARM
- 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.
- FPGA (and CPLD)
- 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
- [rt-8p8c]: an ethernet based interface for LinuxCNC. Probably still under development.
- [picnc]: a Raspberry Pi PIC32 expansion board. Probably still under development.
Hardware that doesn't work
- USB devices cannot be used to control motors or perform other "real time" tasks. Some USB devices which appear as keyboards, joysticks, and mice can be used for user interface tasks through the hal_input driver.
- See HardwareDesign for details of USB, RS232, and Ethernet interfaces.
What about the machines?
If you want to see pictures of big iron, check out the
Case Studies page