gCodes: what dialect is used? which codes are not supported? Subroutines?

Hi everyone - my first post to this forum.
I am writing gCode from scratch and sending it via ChilliPeppr. This works OK on basic scripts but many common codes seem to be not supported.
Is there any documentation on this subject? What dialect is used?
The most burning issue for me right now are subroutines. It seems that ChilliPeppr correctly processes M98/99 but X-Carve controller does not.
Is there a way to programmatically stop code execution? It seems that M02/M30 are ignored.
Has anybody had luck with running subroutines/subprograms?

The X-Carve uses Grbl, which runs on a very small processor, w/ even less memory space: http://bengler.no/grbl

Probably you want the Grbl page on GitHub, or to look at the source.

We do document it here: http://www.shapeoko.com/wiki/index.php/G-Code specifically noting which codes are supported in which versions (corrections and improvements are welcome).

Further to my request: I found a list of supported commands at

I wonder if this list correctly describes actual X-Carve controller capabilities.
Apparently, this implementation does not support variables, program flow (sub) commands, and many other common features.

It seems I will have to develop an editor to take in gCode modules, arrange them in accordance with the program flow and output commands in a static flow. A bit of a hassle. Has anybody took this path before?

Thank you Will, it’s a useful reference. It explains a lot.
It’s great that relative (incremental) positioning is supported via G91 (if not via UVW, etc)

My case: I produce 10-12 types of rather small distinct objects. They are cut from a large plastic sheet. For each run I have to locate them in the work area and specify the order of processing. Any suggestions? - other than generating a code sequence from the pre-built gCode modules for each run for each particular set of objects and available sheet size.


I’ve been surprised that no one has done a step and repeat utility. It’d be simple enough to chain files together w/ suitable movement and G92 commands.

Check here though?


Or use one of these?


The Easel GCode specification is here:

mmm… necro posting…

1 Like