Bird
Raised Fist0
3D Printingknowledge~10 mins

Common G-code commands (G0, G1, G28, M104, M106) in 3D Printing - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Common G-code commands (G0, G1, G28, M104, M106)
Start
Read G-code command
Match command type
Move fast
Update position
Next command or End
The flow shows how a 3D printer reads each G-code command and executes actions like moving, homing, heating, or controlling the fan.
Execution Sample
3D Printing
G28
M104 S200
G1 X50 Y25.3 F1500
M106 S255
G0 X0 Y0
This sequence homes the printer, sets extruder temp to 200°C, moves slowly to X50 Y25.3, turns fan on full speed, then moves fast to X0 Y0.
Analysis Table
StepCommandActionParametersResult
1G28Home all axesNonePosition reset to X0 Y0 Z0
2M104 S200Set extruder tempS=200Extruder heating to 200°C
3G1 X50 Y25.3 F1500Move with controlled speedX=50, Y=25.3, F=1500Position moves to X50 Y25.3 at speed 1500
4M106 S255Turn fan onS=255Fan set to maximum speed
5G0 X0 Y0Move fastX=0, Y=0Position moves quickly to X0 Y0
6EndNo more commandsNoneExecution stops
💡 All commands executed; no more commands to process.
State Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5Final
PositionX?, Y?, Z?X0, Y0, Z0X0, Y0, Z0X50, Y25.3, Z0X50, Y25.3, Z0X0, Y0, Z0X0, Y0, Z0
Extruder TempRoom tempRoom temp200°C heating200°C heating200°C heating200°C heating200°C heating
Fan SpeedOffOffOff255 (max)255 (max)255 (max)255 (max)
Key Insights - 3 Insights
Why does G28 reset the position to zero?
G28 homes all axes, moving them to their physical zero points, so the printer knows its exact starting position (see Step 1 in execution_table).
What is the difference between G0 and G1 commands?
G0 moves the print head quickly without extruding, while G1 moves at a controlled speed and usually extrudes material (see Steps 3 and 5).
How does M104 affect the printer during printing?
M104 sets the extruder temperature but does not wait for it to reach the target; heating happens in the background (Step 2).
Visual Quiz - 3 Questions
Test your understanding
Looking at the execution_table, what is the printer's position after Step 3?
AX50, Y25.3, Z0
BX0, Y0, Z0
CX?, Y?, Z?
DX100, Y100, Z0
💡 Hint
Check the 'Position' variable in variable_tracker after Step 3.
At which step does the fan turn on to maximum speed?
AStep 2
BStep 4
CStep 5
DStep 3
💡 Hint
Look at the 'Fan Speed' variable in variable_tracker and the 'Action' column in execution_table.
If the command M104 S200 was changed to M104 S220, what would change in the execution_table?
AFan speed changes to 220
BPosition resets to X220 Y0 Z0
CExtruder heating to 220°C instead of 200°C
DNo change at all
💡 Hint
M104 controls extruder temperature; see Step 2 in execution_table.
Concept Snapshot
Common G-code commands:
G0 - Move fast without extrusion
G1 - Move controlled with extrusion
G28 - Home all axes (reset position)
M104 - Set extruder temperature (non-blocking)
M106 - Control fan speed
Used to control 3D printer movements and settings step-by-step.
Full Transcript
This visual execution shows how common G-code commands control a 3D printer. The printer reads each command in order: G28 homes the axes to zero position, M104 sets the extruder temperature to 200°C, G1 moves the print head slowly to X50 Y25.3, M106 turns the fan on at full speed, and G0 moves the head quickly back to X0 Y0. Variables like position, extruder temperature, and fan speed update after each command. Key points include understanding that G28 resets position, G0 moves fast without extrusion, G1 moves with controlled speed and extrusion, M104 sets temperature without waiting, and M106 controls the fan. The quiz questions help reinforce these steps by asking about position after moves, when the fan turns on, and effects of changing temperature commands.

Practice

(1/5)
1. What does the G-code command G28 do in 3D printing?
easy
A. Sets the extruder temperature
B. Homes all axes to their origin positions
C. Moves the print head quickly without extruding
D. Turns on the cooling fan

Solution

  1. Step 1: Understand the purpose of G28

    The G28 command is used to move the printer's axes to their home or origin positions, ensuring the printer knows where the starting point is.
  2. Step 2: Compare with other commands

    Other commands like G0 move quickly without printing, M104 sets temperature, and M106 controls the fan, so they do not home the axes.
  3. Final Answer:

    Homes all axes to their origin positions -> Option B
  4. Quick Check:

    G28 = Home axes [OK]
Hint: G28 always means 'go home' for all axes [OK]
Common Mistakes:
  • Confusing G28 with G0 or G1 which move the head
  • Thinking M104 or M106 control movement instead of temperature or fan
  • Assuming G28 sets temperature or fan speed
2. Which of the following is the correct syntax to set the extruder temperature to 200°C using G-code?
easy
A. G28 S200
B. M106 S200
C. G1 S200
D. M104 S200

Solution

  1. Step 1: Identify the command for setting extruder temperature

    M104 is the G-code command used to set the extruder temperature to a specified value.
  2. Step 2: Check the syntax

    The correct syntax is M104 followed by S and the temperature value, so M104 S200 sets the extruder to 200°C.
  3. Final Answer:

    M104 S200 -> Option D
  4. Quick Check:

    M104 sets extruder temp = M104 S200 [OK]
Hint: M104 sets extruder temp; M106 controls fan [OK]
Common Mistakes:
  • Using M106 which controls the fan instead of temperature
  • Using G1 or G28 which are for movement, not temperature
  • Omitting the S parameter for temperature value
3. What will happen when the following G-code commands are executed?
G0 X50 Y50
G1 X100 Y100 E10
medium
A. The print head homes all axes, then sets extruder temperature to 10°C
B. The print head moves slowly to (50,50) while extruding, then quickly to (100,100) without extruding
C. The print head moves quickly to (50,50) without extruding, then moves to (100,100) while extruding filament
D. The print head turns on the fan and moves to (100,100)

Solution

  1. Step 1: Understand G0 and G1 commands

    G0 moves the print head quickly without extruding filament. G1 moves the print head while extruding filament as specified by the E parameter.
  2. Step 2: Analyze the commands given

    First, G0 moves the head to X50 Y50 quickly without extrusion. Then, G1 moves the head to X100 Y100 while extruding 10 units of filament.
  3. Final Answer:

    The print head moves quickly to (50,50) without extruding, then moves to (100,100) while extruding filament -> Option C
  4. Quick Check:

    G0 = fast move no extrusion, G1 = move with extrusion [OK]
Hint: G0 = fast move no extrusion; G1 = move with extrusion [OK]
Common Mistakes:
  • Mixing up G0 and G1 commands
  • Assuming extrusion happens during G0
  • Confusing E parameter as fan speed or temperature
4. A user writes the following G-code to turn on the cooling fan at half speed:
M106 S128

But the fan does not turn on. What is the likely error?
medium
A. The printer firmware might require a different command or fan pin setup
B. The S value should be between 0 and 255, 128 is invalid
C. The command should be M104 to control the fan
D. The G28 command is missing before M106

Solution

  1. Step 1: Understand M106 command and S parameter

    M106 controls the cooling fan speed with S value from 0 (off) to 255 (full speed). S128 is a valid half speed.
  2. Step 2: Consider why fan might not turn on

    If the fan does not turn on, it is likely due to printer firmware settings or hardware configuration, such as fan pin assignment or disabled fan control.
  3. Final Answer:

    The printer firmware might require a different command or fan pin setup -> Option A
  4. Quick Check:

    M106 S128 valid but hardware/firmware may block fan [OK]
Hint: Check firmware and hardware if M106 S128 doesn't work [OK]
Common Mistakes:
  • Thinking S128 is out of range (it's valid)
  • Using M104 instead of M106 for fan control
  • Assuming G28 is needed before fan commands
5. You want to start a print by homing all axes, setting the extruder temperature to 210°C, waiting for it to reach temperature, then moving the print head to X10 Y10 quickly without extruding. Which sequence of G-code commands is correct?
hard
A. G28
M104 S210
M109 S210
G0 X10 Y10
B. M104 S210
G28
M109 S210
G1 X10 Y10 E0
C. G28
M109 S210
M104 S210
G0 X10 Y10
D. M106 S210
G28
M109 S210
G0 X10 Y10

Solution

  1. Step 1: Identify commands for each action

    G28 homes all axes. M104 sets extruder temperature without waiting. M109 sets temperature and waits until reached. G0 moves quickly without extruding.
  2. Step 2: Check command order for correct sequence

    First home with G28, then set temp with M104, wait with M109, finally move with G0 to X10 Y10 without extrusion.
  3. Final Answer:

    G28
    M104 S210
    M109 S210
    G0 X10 Y10
    -> Option A
  4. Quick Check:

    Home, set temp, wait, then fast move = G28
    M104 S210
    M109 S210
    G0 X10 Y10 [OK]
Hint: Use M109 to wait for temp after M104, then move with G0 [OK]
Common Mistakes:
  • Using M106 instead of temperature commands
  • Moving with G1 and extruding when not needed
  • Setting temperature after moving the head