Technically speaking, every action that your 3D printer performs is a G-code, whether you send the G-code to the 3D printer through a console, use the LCD panel of your 3D printer to invoke a command, or use a G-code file for the printing process, which essentially is a list of G-code commands lined up one after another.
As a result, for your 3D printer to be able to take any action, the firmware has to be able to interpret the G-code command that it reads from the source and send the necessary signals to the corresponding parts of your 3D printer.
In today’s article, our topic will be the G-code flavors in the context of 3D printing, which we can consider to be an essential piece of knowledge as the usage of the correct G-code flavor is vital for your 3D printer to operate correctly.
So, what does G-code flavor mean in the context of 3D printing?
Even though G-code is standardized for the most part, the G-code flavor is what determines how the firmware that your 3D printer is using interprets a particular G-code command’s functionality and syntax to be able to trigger the corresponding action.
In the upcoming sections, we will analyze the purpose of G-code flavors in more detail, find out how to use the correct G-code flavor in each scenario, go through the process of changing the G-code flavor in Cura, and finally, take a quick look at the G-code flavor that the Ender 3 uses.
What Is G-Code Flavor in 3D Printing?
Even though the topic of G-code flavor isn’t one that will come up frequently in your 3D printing journey, understanding how it works is critical to ensure that your 3D printer can read and process the G-code that you’re supplying.
In G-code, many of the standard actions, such as Linear Move, correspond to the same G-code command (G1) and essentially follow an identical syntax, such as X parameter for X position, Y parameter for Y position, Z parameter for Z position, and E parameter for the amount of material to extrude, across different firmware.
On the other hand, in some cases, it’s possible to have one firmware having a particular functionality that other firmware doesn’t, for the developers of one firmware to choose an entirely different G-code command for a specific action, or for the firmware to have a wholly different syntax for a command that has the same purpose across distinct firmware.
An example of such a case would be the M226 G-code, which corresponds to the action of “Wait for Pin State” in Marlin, Repetier, Prusa, and MK4Duo flavors, “G-code Initiated Pause” in RepRapFirmware flavor, and nothing at all in some other popular firmware flavors, such as Smoothie and Sprinter.
In such scenarios, the firmware’s G-code flavor is what determines which action that the firmware will trigger and which syntax that it will follow when a command is issued, meaning that you need to ensure that the G-code commands you are sending correspond to the correct action, and follow the proper syntax for the G-code flavor that your firmware utilizes.
To always make sure that you’re using the G-code commands that belong to the G-code flavor of your firmware, the best course of action is to avoid referring to the G-code documentation of any other firmware and only consult the documentation that belongs to the firmware you’re using.
As the documentation of the firmware will always have accurate information about the actions that G-code commands correspond to and their syntaxes, you will be completely eliminating the chance of making a mistake.
How to Determine the G-Code Flavor to Use?
Even though determining the correct G-code flavor that you should use isn’t much of a complex process, it requires some core knowledge about how G-code flavors operate.
In 3D printing, the G-code flavor is generally named after the name of the firmware itself, meaning that knowing which firmware your 3D printer is currently running will allow you to determine which G-code flavor you should consult the documentation for and select in slicer software when prompted.
Modern slicer software, such as Cura, should be able to automatically configure themselves to slice your model files with the correct G-code flavor based on your 3D printer’s model without you having to take any extra steps, assuming that you haven’t changed the stock firmware with another, in which case you will need the name of the firmware in use.
How to Change the G-Code Flavor in Cura?
As the slicer software is directly responsible for producing the G-code files that your 3D printing will be reading from to conduct the printing process, ensuring that the output is in the correct G-code flavor is critical.
Below is a step-by-step guide you can follow to change the G-code flavor that Cura will utilize for slicing your model files:
- Click the Preferences option on the top menu of Cura.
- Click the Printers tab from the left pane.
- Choose the printer you want to change the G-code flavor for from the list of printers on the left.
- Click the Machine Settings button.
- Choose the appropriate G-code flavor from the G-code flavor dropdown.
While it definitely does not hurt to double-check, you should only need to manually change the G-code flavor in Cura if you have flashed a different firmware that uses a distinct G-code flavor to your 3D printer than the stock one.
Which G-Code Flavor Does the Ender 3 (Pro/V2) Use?
As the Ender 3 is the most popular 3D printer on the market right now, many 3D printing enthusiasts are looking for a quick answer to the question of which G-code flavor they should be using for their Ender 3.
As the stock Ender 3 firmware from Creality is based on the Marlin firmware, the Ender 3 uses the Marlin G-code flavor by default, assuming that you did not make modifications to the stock firmware that was installed on your 3D printer when it arrived.
On the other hand, as it’s entirely possible for your Ender 3 to run firmware that isn’t based on Marlin, such as Klipper, in the case that you have replaced the stock firmware of your Ender 3 with a different one, the G-code flavor will also be changed accordingly.
Even though the G-code flavor is something that you can set and forget, having a good grasp of it will come in handy in cases where you switch between different 3D printers or different firmware, which makes adjustments to the G-code flavor necessary.
To quickly recap, you can think of the G-code flavor as the list of G-code commands and syntaxes that a particular firmware accepts since the functionality that different firmware offer is rarely identical, even though a considerable portion of G-code commands are standardized across firmware.
Since attempting to use G-code commands that don’t correspond to any command or the incorrect commands for the G-code flavor of the firmware your 3D printer is running, it’s vital to get the G-code flavor right to ensure that everything works as intended.