CNC Controllers & Firmware
Motion controllers and firmware for hobby and prosumer CNC — GRBL, FluidNC, LinuxCNC, Mach3/4, Klipper for CNC, PathPilot, Centroid Acorn, Buildbotics.
The firmware on the box that talks to the steppers/servos is the most consequential software choice on a CNC machine — it determines sender compatibility, probe macro flexibility, and how much money you'll spend on Windows licenses. The hobby world is split into a FOSS axis (GRBL → FluidNC → LinuxCNC) and a paid-Windows axis (Mach3/4, PathPilot, Centroid). For laser-specific firmware see Laser Firmware & Controllers; for Klipper on a CNC see below.
GRBL family — hobby router default
- ★ GRBL — open source (GPLv3); Arduino-era 8-bit firmware that became the lingua franca of hobby CNC. Runs on every Shapeoko, OneFinity (older), Sienci, Genmitsu, FoxAlien, X-Carve, BobsCNC. 3 axes, no closed-loop, decent for routers. v1.1+ adds laser mode.
- ★ grblHAL — open source (GPLv3); modern 32-bit fork with hardware abstraction layer. Runs on Teensy 4.x, RP2040, STM32, ESP32, iMXRT. Adds 5+ axes, networking, real probing, faster step rates. The contemporary upgrade path for serious GRBL users who don't want to jump to LinuxCNC.
- ★ FluidNC — open source (GPLv3); ESP32-based GRBL successor. YAML config (no recompile), built-in WiFi web UI, multi-axis, laser/spindle support. Default on many 6-pack and Bart Dring boards, and increasingly on hobby retrofits.
- GRBL-Mega-5X — open source; 5-axis Mega2560 fork. Older; new 5-axis builds prefer grblHAL or FluidNC.
- GRBL_ESP32 — superseded by FluidNC; use FluidNC.
LinuxCNC — serious DIY / retrofit default
- ★ LinuxCNC (formerly EMC2) — open source (GPLv2); full real-time machine controller running on a Linux PC with hard real-time kernel. The dominant FOSS path for retrofit Bridgeports, Tormach 1100s, Matsuura/Hardinge conversions, and any closed-loop servo build. Supports unlimited axes, full kinematics (5-axis trunnion, hexapod), threading, rigid tapping, lathe canned cycles. Pairs with Mesa Electronics FPGA cards (7i76e, 7i92, 7i96s) for real motion I/O. Steeper learning curve than GRBL — HAL config files, INI files, ladder logic for I/O — but the ceiling is genuinely industrial. See Retrofit.
- PathPilot (Tormach) — closed source binary, free as in beer for Tormach owners; LinuxCNC-derived. Polished UI on top of LinuxCNC's motion engine. Tormach-only officially; the controller PC is an x86 with a Mesa card.
- probe-basic / QtPyVCP — open-source UI skins for LinuxCNC; modernize the look. Axis is the classic UI; Touchy for touchscreens; GMOCCAPY is a polished Gtk option.
Mach (paid Windows)
- Mach3 — closed source, paid (one-time, ~$175); Windows XP/7-era controller using a parallel-port motion engine or USB/Ethernet motion controllers (UC100, UC300, ESS Smoothstepper, CSMIO/IP). Despite age, still extremely common on small mills, plasma tables, and Avid CNCs. Hobby-friendly macro language (VB6-style). Development frozen.
- Mach4 — closed source, paid (~$200 Hobby, $1400+ Industrial); Mach3's successor; cleaner architecture, better motion engine support, Lua scripting. Slower adoption than Mach3 due to ecosystem inertia. Default on Avid CNC PRO machines and many DIY plasma builds.
- PoKeys / CSLabs CSMIO / Vital Systems HiCON Integra — Mach3/4 motion controllers (USB / Ethernet); replace the parallel port. HiCON Integra is the high-end hobby pick.
Klipper for CNC
- Klipper — open source (GPLv3); host-based firmware originally for 3D printers but with growing CNC use. Input shaping, fast macro language, S-curve acceleration. Lacks G43 tool length offsets, full lathe support, and real probing macros — usable for routers, awkward for mills. Communities like Klipper-CNC, CNC-Klipper maintain branches with workarounds. Watch this space; not yet the obvious choice over GRBL/FluidNC for new CNC builds.
- RepRapFirmware (RRF) on Duet — open source (GPLv3); has solid CNC support out of the box (G53 work coordinates, probing macros, multi-axis). The "I want Klipper-class polish on a CNC, today" answer for some builders. See Printer Firmware.
Vendor-specific controllers (closed but capable)
- Centroid Acorn / Oak / Hickory — paid (~$300 Acorn DIY kit + ~$300 software); Windows-based; very popular for PM-25/30/PM-30MV / G0704 conversions and Bridgeport retrofits where users want "Mach-like but supported." Acorn is the hobby tier; Hickory is the prosumer.
- Buildbotics — open source hardware + firmware (GPL); ARM-based standalone controller; ships in OneFinity (older) and DIY builds. Web UI. Niche but FOSS-friendly.
- Masso G3 / G3 Touch — closed source, paid (~$1100); standalone touch-screen controller; ships in OneFinity Elite/PRO. No PC needed. Polished but locked.
- DDCSV3.1 / DDCSV4.1 — closed source, cheap (~$200); Chinese standalone 3-/4-axis controllers; common on AliExpress / eBay 6040 / 6090 routers. Capable but quirky firmware.
- DSP A11 / A18 (RichAuto) — closed; pendant-style controller; common on bigger Chinese routers (1325, 2030).
- ExpressCNC (Onsrud) — closed; ships on Onsrud routers.
- Carbide Motion firmware (Carbide 3D) — GRBL underneath, with custom probing extensions.
Mesa / FPGA motion cards (for LinuxCNC)
- ★ Mesa Electronics 7i96s — paid (~$200); Ethernet step/dir + I/O card; the modern entry point for LinuxCNC retrofits.
- Mesa 7i76e / 7i92 / 5i25 — older Ethernet/PCI options, all still supported.
- Mesa 7i77 / 7i48 — analog servo cards for closed-loop retrofits with Yaskawa / Fanuc-class drives.
- Pico Systems / PMDX — older parallel-port breakout boards; legacy.
Pick this if…
- Stock hobby router (Shapeoko, Sienci, Genmitsu, FoxAlien): GRBL — don't fight it.
- Custom DIY frame, modern 32-bit, WiFi web UI: FluidNC.
- Pushing GRBL beyond 3 axes or wanting real probing: grblHAL.
- Retrofitting a real iron mill or running closed-loop servos: LinuxCNC + Mesa 7i96s.
- Tormach owner: PathPilot — it's free and excellent.
- DIY conversion of a PM-25 / G0704 / Bridgeport, want supported software: Centroid Acorn.
- Already deep in the Mach3 ecosystem on an old XP box: Mach3 — stay there until it breaks.
- Avid CNC PRO or DIY plasma: Mach4 (default) or LinuxCNC (for the FOSS path).
- Klipper fan eyeing a CNC router: workable on a router, painful on a mill — wait another year.