G-code Dialects
MapleCAM supports multiple G-code dialects to match different CNC controllers.
Supported Dialects
GRBL
The most common controller for hobby CNC machines. Used by Shapeoko, X-Carve, OpenBuilds, 3018 machines, and many others.
Key characteristics:
- Spindle control via
M3 S{speed}/M5 - Feed rate set with
F{rate}on motion commands - Arc commands
G2/G3withI/Joffsets - No subroutines or canned cycles
grblHAL
An enhanced GRBL fork with extended capabilities — cutter radius compensation (G41/G42), tool wear compensation, and canned drilling cycles (G81–G89).
Selecting the grblHAL dialect today produces the same G-code as GRBL: MapleCAM doesn't yet emit the grblHAL-only features, so the choice is purely informational. Pick it if your machine runs grblHAL — output will be identical to GRBL but the dialect setting is recorded with the project so future versions of MapleCAM can take advantage of the extra features.
LinuxCNC
An open-source CNC controller running on Linux PCs. Common in more advanced hobby and semi-professional setups.
Key characteristics:
- Full G-code implementation including canned cycles
- Spindle control via
M3 S{speed}/M5 - Programs are wrapped with
%markers and anO####program number - Comments use
( comment )parentheses (MapleCAM emits this style for LinuxCNC; GRBL uses; comment) - Path blending hint emitted (
G64)
Dialect Differences
| Feature | GRBL | grblHAL | LinuxCNC |
|---|---|---|---|
| Comment style | ; comment | ; comment | ( comment ) |
| Program markers | none | none | % start/end, O#### program number |
| Program end | M30 | M30 | M2 |
| Arc format | I/J incremental | I/J incremental | I/J incremental |
| Spindle control | M3/M5 | M3/M5 | M3/M5 |
| Path blending | not emitted | not emitted | G64 (naive mode) |
| Tool change | M6 T{n} (typically a pause for manual change) | M6 T{n} | M6 T{n} |
| Cutter compensation (G41/G42) | not supported by firmware | capable, not emitted today | capable, not emitted today |
Choosing a Dialect
Select the dialect in your machine configuration. If you're unsure, GRBL is the safe default — it works with the majority of hobby CNC controllers.
The dialect is used during G-code export. You can change it at any time without regenerating toolpaths.