Last updated, April 26 2022

G-codes in the world

People know Grbl, LinuxCNC, Math, Vectric CNC and much more. A lot of G code is shared/known/standarized between this software, but at some point, a software implements a new functionality that is very specific and needs to create new G code or some manufacturers add or modify some G code for their CNC machines. This is good and bad, new features they are always good, but if there are no standards behind it, everything tends to be messy and lose compatibility.

Ultimate CNC then focuses on reading the G-code and handling it. If Ultimate CNC reads a G-code that it does not recognize, it just sends it to your connected device. To be compatible, if Ultimate CNC add support for new G-codes, them will be converted
to another G-codes just using the most basic motion modes, it's: G00, G01, G02...

Remember, that the G-code language is not standardized, that is, each CNC software can use a specific G-code and even, some manufacturers add or modify some G codes for their CNC machines. If you want to use your own firmware based on Grbl, be careful, if you load a G-code program that use some 3rd party G-code, Ultimate CNC shows you a pop-up alarm when running and vice versa, you will have the same problem.

Grbl follows the LinuxCNC standard, but Grbl runs on a small microcontroller and cannot implement all G-codes. Ultimate CNC from the beginning decided never to modify firmwares to add new G-code, because it was meant to be generic with existing devices. Also, in the case of Grbl, it has implemented some fantastic firmware for CNC machines and it works surprisingly well. So we decided to create an end-user software to expand the functionalities by converting new G-codes to G-codes using most basic modes of movement.

If you're using other devices, that implement complex G-code, this way work too, because the "new" G-code is converted to the most basic motion modes.

Supported G-codes / M-codes in Grbl

Release 1.1

Code Description
G0 Coordinated Motion at Rapid Rate
G1 Coordinated Motion at Feed Rate
G2 G3 Coordinated Helical Motion at Feed Rate
G4 Dwell
G17 - G19.1 Plane Select
G20 Units of Measure: Inches
G21 Units of Measure: Millimeters
G28 - G28.1 Go to Predefined Position
G30 - G30.1 Go to Predefined Position
G38.2 - G38.5 Probing
G43 Use Tool Length Offset from Tool Table
G43.1 Dynamic Tool Length Offset
G49 Cancel Tool Length Offset
G52 Local Coordinate System Offset
G53 Move-in Machine Coordinates
G54-G59.3 Select Coordinate System (1 - 9)
G80 Cancel Motion Modes
G90 Distance Mode: Absolute Positioning
G91 Distance Mode: Incremental Positioning
G90.1 G91.1 Arc Distance Mode
G92 Coordinate System Offset
G92.1 Cancel G92 Offsets
G93 Feed Mode: Inverse Time
G94 Feed Modes: Feed per minute
Code Description
M5 Stop the spindle
M7 Turn mist coolant on (disabled by default)
M8 Turn flood coolant on
M9 Turn all coolant off

Supported G-codes in Ultimate CNC

The list of the supported G-codes will change, we planned to add support for more codes in the future.

Code Description
G81 Drilling Cycle
G82 Drilling Cycle with Dwell
M6 Manual Tool Change
M2/M30 Program end. Run, start the G-Code Program.
M100/M109 User Defined Commands. Your scripts for Milling (M2/M30)
M110/M119 User Defined Commands. Your scripts for Drilling
M120/M199 User Defined Commands. Run your scripts