前言
CNC(计算机数字控制)技术早已不再是昂贵工业设备的专属。随着 DIY 雕刻机、激光切割机、等离子切割机的普及,开源社区涌现出了大量优秀的 CNC 软件。本文将系统介绍目前主流的开源 CNC 项目,涵盖机床控制软件(上位机)、运动控制固件(下位机)和仿真工具,并重点说明它们在 Windows 和 Linux 平台下的可用性,帮助你根据自己的系统和机床快速做出选择。
一、Windows 平台:开箱即用的控制软件
1. Candle — 新手首选的 GRBL 控制器
GitHub:github.com/Denvi/Candle(GPL-3.0)
Candle 是用 Qt/C++ 编写的 GRBL 上位机,界面简洁直观,直接提供 Windows 安装包(candle_x.x.x.zip),无需编译即可使用。主要功能包括:
- 通过控制台命令、界面按钮或小键盘控制 GRBL 机床
- 实时监控机床状态
- 加载、编辑、保存并发送 G-code 文件
- 内置 G-code 3D 可视化,支持高度图(Heightmap)对不平整表面进行补偿
如果你的机床用的是 Arduino + GRBL 固件,Candle 是 Windows 下上手成本最低的选择。

2. Universal Gcode Sender (UGS) — 功能全面的跨平台平台
GitHub:github.com/winder/Universal-G-Code-Sender(GPL-3.0)
UGS 是用 Java 编写的老牌 G-code 发送器,只要装了 Java 运行环境,Windows、macOS、Linux 通用。它支持的控制器非常广泛:GRBL、TinyG、g2core、Smoothieware 等。亮点功能:
- 彩色编码的 3D G-code 可视化,实时位置反馈
- 加工时长预估
- Web Pendant 网络操作界面,可用手机/平板遥控机床

3. gSender — 界面现代的后起之秀
GitHub:github.com/Sienci-Labs/gsender
由 Sienci Labs 开发,基于 Electron 构建,支持 grbl 和 grblHAL 机床。界面设计现代,内置 3D 预览、探针工具、_macros 宏按钮_等实用功能,对初学者非常友好,官方直接提供 Windows 安装程序。

4. bCNC — 功能强大的瑞士军刀
GitHub:github.com/vlachoudis/bCNC(GPL-2.0)
Python 编写的全能型控制软件,集 G-code 发送器、自动对刀(Autoleveler)、G-code 编辑器、数字化仪和基础 CAM 功能于一身。跨平台(Windows/Linux/Mac),但需要自己用 pip 安装依赖,适合有一定动手能力的进阶用户。它的自动对刀功能在 PCB 雕刻等场景中尤其有用。

5. LaserGRBL — 激光雕刻专用
GitHub:github.com/arkypita/LaserGRBL(GPL-3.0)
如果你的”机床”是激光雕刻机,LaserGRBL 是 Windows 下最流行的选择。它专门针对激光切割/雕刻优化,支持直接导入图片和矢量文件生成 G-code,实时预览激光走位,安装包开箱即用。

6. CNCjs — 基于 Web 的控制界面
GitHub:github.com/cncjs/cncjs(MIT)
CNCjs 提供基于浏览器的控制界面,支持 Grbl、Marlin、Smoothieware 和 TinyG。最典型的部署方式是装在树莓派上,让机床变成一台可以通过 Wi-Fi 控制的智能设备;它同样可以安装在 Windows 上,本地访问即可。

二、Linux 平台:LinuxCNC 的王者地位
LinuxCNC — 最强大的开源 CNC 系统
官网:linuxcnc.org(GPL-2.0+)
说到 Linux 下的 CNC,绕不开 LinuxCNC。它是历史最悠久(前身可追溯到 1990 年代的 NIST EMC 项目)、功能最强大的开源 CNC 软件,能把一台普通 PC 变成高精度机床控制器,支持铣床、车床、路由器、等离子切割机甚至机械臂。核心特性:
- 基于实时(Realtime)Linux 内核的毫秒级运动控制
- 支持刚体攻丝、刀具补偿、多轴联动等高级功能
- 兼容大量硬件接口(Mesa 卡、并口、以太网伺服等)
但请注意:LinuxCNC 依赖 Linux 实时内核,无法在 Windows 上原生运行。Windows 用户想要类似的多轴专业控制能力,只能转向商业软件如 Mach3/Mach4。

不过好消息是,前面介绍的 UGS、bCNC、CNCjs、gSender、OpenBuilds CONTROL 等上位机全部是跨平台的,Linux 用户同样可以使用(LinuxCNC 机床也可以搭配它们吗?不行——LinuxCNC 有自己的界面体系,但上面这些工具可以服务 GRBL 等固件机床)。
三、固件层:机床的”大脑”
上位机负责发指令,固件则运行在控制板(如 Arduino、ESP32)上,负责解释 G-code 并驱动步进电机。主流开源固件包括:
- Grbl(github.com/gnea/grbl,GPL-3.0):经典 Arduino Uno 固件,成熟稳定,配合上述任何上位机使用。
- grblHAL(github.com/grblHAL/core):Grbl 的 32 位现代化分支,支持 STM32、RP2040 等更多主控,插件体系丰富。
- FluidNC(github.com/bdring/FluidNC):基于 ESP32,自带 Wi-Fi 和 Web UI,用 YAML 文件配置,无需重新编译,是 Grbl_ESP32 的继任者。
- Marlin:3D 打印机固件之王,也可用于轻量级 CNC 和激光机。
- Smoothieware / TinyG / g2core:面向不同硬件平台的模块化 G-code 解释器。
四、仿真工具:不接机床也能验证刀路
CAMotics(github.com/CauldronDevelopmentLLC/CAMotics,GPL-2.0):开源的 3 轴 CNC G-code 仿真器,Windows/Linux 均可用。在真正下刀之前,先用它模拟整个加工过程、检查碰撞和过切,可以省下不少刀具和材料。

五、如何选择?一张表看懂
| 软件 | Windows | Linux | 语言/技术栈 | 适合人群 |
|---|---|---|---|---|
| Candle | ✅ 有安装包 | ✅ | Qt/C++ | GRBL 新手 |
| UGS | ✅ | ✅ | Java | 需要多固件支持的用户 |
| gSender | ✅ 有安装程序 | ✅ | Electron | 追求现代界面的用户 |
| bCNC | ✅ 需自行配置 | ✅ | Python | 进阶用户、PCB 雕刻 |
| LaserGRBL | ✅ 有安装包 | ❌ | C# | 激光雕刻用户 |
| CNCjs | ✅ | ✅(树莓派最佳) | Node.js | 想要网络化控制 |
| LinuxCNC | ❌ | ✅(专用实时系统) | C/Python | 专业多轴机床 |
| CAMotics | ✅ | ✅ | C++ | 刀路仿真验证 |
六、推荐组合
Windows + DIY 雕刻机(Arduino/GRBL):Candle(简单)或 gSender / UGS(功能强),配 GRBL 固件,全部有现成安装包,零编译。
Windows + 激光雕刻机:LaserGRBL。
Linux / 追求极致控制:LinuxCNC + Mesa 硬件,适合改造真机床、做多轴加工。
树莓派玩家:CNCjs 或 FluidNC,让机床连上 Wi-Fi,浏览器就是操作台。
资源汇总
想系统浏览开源 CNC 生态,推荐 GitHub 上的 awesome-cnc 项目(github.com/blackveilprecision/awesome-cnc),按固件、控制软件、CAD、CAM 分类收录了大量开源项目。CAD/CAM 侧的开源方案(如 FreeCAD 的 CAM 工作台、QCAD 等)也值得关注,它们同样跨 Windows 和 Linux 平台。
开源 CNC 软件经过多年发展已经相当成熟,无论你用的是 Windows 还是 Linux,都能找到适合自己的免费方案。动手之前,建议先在 CAMotics 里仿真验证刀路,再逐步在真机上以低速试切。