Klipper G-Code Commands for Voron — Complete Reference Guide
Klipper Firmware Reference
Klipper firmware exposes hundreds of G-code commands, and not all of them are relevant to Voron printers. This reference guide organizes the most useful commands by category — calibration, movement, extrusion, temperature, bed leveling, probing, I/O, and diagnostics — with Voron-specific examples for each. Whether you're writing a macro, debugging an issue, or tuning your printer, this is your quick-reference companion. Last updated: May 2025.
Calibration Commands
PID_CALIBRATE
Purpose: Tune the PID (Proportional-Integral-Derivative) control loop for your hotend or heated bed. Proper PID tuning minimizes temperature fluctuation during printing.
Syntax:
PID_CALIBRATE HEATER=heater_bed TARGET=110
PID_CALIBRATE HEATER=extruder TARGET=250
SAVE_CONFIG
Voron usage: Run with the chamber closed at your normal printing temperature. For the bed, target 105-110C for ABS. For the hotend, target your most-used printing temperature (typically 245-255C for ABS).
PROBE_CALIBRATE
Purpose: Calibrate the Z-offset between your probe and nozzle. Essential for accurate first layer height.
Syntax:
PROBE_CALIBRATE
TESTZ Z=-0.1
ACCEPT
SAVE_CONFIG
Voron usage: Heat the bed and nozzle to printing temperature before calibrating. Thermal expansion changes the Z-offset. Use a 0.1mm feeler gauge or paper test for consistent results.
BED_MESH_CALIBRATE
Purpose: Probe the bed surface to create a height map used for mesh bed leveling during printing.
Syntax:
BED_MESH_CALIBRATE
BED_MESH_CALIBRATE METHOD=manual ; Manual probing
BED_MESH_CALIBRATE ADAPTIVE=1 ; Adaptive mesh (Voron 0.2)
Voron usage: Adaptive mesh (BED_MESH_CALIBRATE ADAPTIVE=1) is highly recommended on Voron V2.4 and Trident. It only probes the area where the model will print, saving time on large beds.
SHAPER_CALIBRATE
Purpose: Run input shaper auto-calibration. The toolhead moves at increasing frequencies and an accelerometer measures resonance.
Syntax:
SHAPER_CALIBRATE ; Auto-calibrate
SHAPER_CALIBRATE AXIS=X ; Only X axis
SHAPER_CALIBRATE AXIS=Y FREQ_START=40 ; Custom frequency range
SAVE_CONFIG
Voron usage: On Voron V2.4, run X and Y separately. Mount the accelerometer on the print head for X and on the bed for Y. Save the recommended shaper type and frequency with SAVE_CONFIG.
TUNING_TOWOWER
Purpose: Change a parameter (flow rate, pressure advance, temperature) layer-by-layer during a print for visual calibration.
Syntax:
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=0.005
TUNING_TOWER COMMAND=SET_EXTRUDER_ROTATION_DISTANCE PARAMETER=DISTANCE START=22 FACTOR=0.001
Voron usage: Used with OrcaSlicer's calibration towers. The slicer inserts CHANGE_AT_LAYER or TUNING_TOWER commands to vary a parameter per layer.
Movement Commands
| Command | Syntax | Voron Usage |
|---|---|---|
| G28 | G28 — Home all axesG28 X — Home X only |
Standard homing. Vorons typically home Z via the probe, X/Y via endstops. |
| G1 / G0 | G1 X100 Y100 F6000 — Linear move |
Movement in mm. F is feedrate in mm/min. G0 and G1 are identical in Klipper. |
| G90 / G91 | G90 — Absolute positioningG91 — Relative positioning |
Start G-code should set G90 for absolute positioning. Use G91 for purge lines. |
| M114 | M114 — Get current position |
Diagnostic. Returns X: Y: Z: E: values. Useful in macros to log position before moves. |
Extrusion Commands
| Command | Syntax | Voron Usage |
|---|---|---|
| M83 | M83 |
Set extruder to relative mode. Standard in Voron start G-code. |
| M82 | M82 |
Set extruder to absolute mode. Less common, used in some macros. |
| M221 | M221 S95 — Set flow rate to 95% |
Flow rate override. Used in filament profiles for fine-tuning extrusion. |
| SET_EXTRUDER_ROTATION_DISTANCE | SET_EXTRUDER_ROTATION_DISTANCE DISTANCE=22.678 |
Calibrate extruder e-steps. Measure 120mm of filament, extrude 100mm, calculate correct distance. |
Temperature Commands
| Command | Syntax | Voron Usage |
|---|---|---|
| M104 | M104 S250 — Set hotend temp, don't wait |
Used in PRINT_START to set temp while bed heats. |
| M140 | M140 S105 — Set bed temp, don't wait |
Used in PRINT_START to start bed heating immediately. |
| M109 | M109 S250 — Set hotend temp, wait until reached |
Blocking wait for hotend. Use carefully — it blocks all other commands. |
| M190 | M190 S105 — Set bed temp, wait until reached |
Blocking wait for bed. Usually avoided in favor of non-blocking M140 + conditional wait loops. |
| SET_HEATER_TEMPERATURE | SET_HEATER_TEMPERATURE HEATER=extruder TARGET=200 |
Klipper-specific alternative to M104. More explicit, useful in macros. |
Bed Leveling Commands
Z_TILT_ADJUST
Purpose: Auto-level the gantry by probing at multiple Z-tilt points and adjusting the Z steppers.
Syntax:
Z_TILT_ADJUST
Z_TILT_ADJUST HORIZONTAL_MOVE_Z=10 ; Raise Z before adjusting
Voron usage: Used on Voron V2.4 and Trident. Probes at 3 points (front-left, front-right, rear-center or similar) and levels the X/Y gantry. Run this at the beginning of your PRINT_START macro.
QUAD_GANTRY_LEVEL (QGL)
Purpose: Four-corner gantry leveling used by Voron V2.4 with 4 Z-motors.
Syntax:
QUAD_GANTRY_LEVEL
QUAD_GANTRY_LEVEL HORIZONTAL_MOVE_Z=15 RETRIES=3
Voron usage: Required for V2.4 before every print or after any Z-axis maintenance. The printer probes 4 points and adjusts each Z stepper motor independently.
SCREWS_TILT_CALCULATE
Purpose: Manual bed leveling assistant. Probes the bed at each screw location and tells you how much to turn each bed adjustment knob.
Syntax:
SCREWS_TILT_CALCULATE
SCREWS_TILT_CALCULATE MAX_DEVIATION=0.025
Voron usage: Useful on Trident (fixed bed with 3-point leveling) and Switchwire. Run after initial setup or major disassembly. Each knob adjustment is reported in minutes of rotation.
Probe Commands
| Command | Syntax | Voron Usage |
|---|---|---|
| PROBE | PROBE — Single probePROBE COUNT=5 — Average 5 probes |
Diagnostic. Tests probe triggering at current position. |
| PROBE_ACCURACY | PROBE_ACCURACY |
Measures probe repeatability. Run 10 probes at center of bed. Results should be within 0.005mm for a good probe. |
| Z_ENDSTOP_CALIBRATE | Z_ENDSTOP_CALIBRATE |
Calibrate physical Z endstop position. Used if you have a physical Z stop. |
| BED_MESH_OUTPUT | BED_MESH_OUTPUT |
Print the current bed mesh data to console. Useful for diagnostics in Klipper console. |
I/O Commands
| Command | Syntax | Voron Usage |
|---|---|---|
| M106 | M106 S255 — Part fan on at 100%M106 P1 S128 — Aux fan at 50% |
Fan control. P0 = part cooling fan, P1 = aux fan (if defined). |
| M107 | M107 |
Turn off part cooling fan. Used in start G-code before printing first layer. |
| M42 | M42 P1 S255 — Set pin 1 to 255 |
Direct pin control. Use with configured pins for LEDs, chamber lights, etc. |
| SET_PIN | SET_PIN PIN=chamber_light VALUE=1 |
Klipper-specific pin control. Prefer this over M42 for named pins. |
SD Card and Misc Commands
| Command | Syntax | Voron Usage |
|---|---|---|
| M20 | M20 |
List files on SD card. Less relevant for Vorons that print over USB/network. |
| M21 | M21 |
Initialize SD card. Used if Klipper is configured with virtual_sdcard. |
| M23 | M23 filename.gcode |
Select file for printing. Used by Mainsail/Fluidd internally. |
| M24 | M24 |
Start/resume print. Used by frontends to begin selected file. |
Klipper-Specific Commands
SAVE_CONFIG
Purpose: Save calibration results (PID, probe offset, shaper config, bed mesh) to printer.cfg. Persisted settings are appended to the config file.
Syntax: SAVE_CONFIG
Voron usage: Always run after PID_CALIBRATE, PROBE_CALIBRATE, SHAPER_CALIBRATE, or any calibration that modifies persistent settings. The printer will restart automatically after saving.
RESTART
Purpose: Restart the Klipper firmware without rebooting the SBC. Reloads printer.cfg.
Syntax: RESTART
Voron usage: Run after editing printer.cfg. Won't reload changes made to moonraker.conf or the OS.
FIRMWARE_RESTART
Purpose: Force a full re-connection to all MCUs. Required if an MCU disconnects or errors out. More thorough than RESTART.
Syntax: FIRMWARE_RESTART
Voron usage: Use if Klipper reports MCU connection errors or if CANBus toolhead boards disconnect. This command re-flashes the MCU connection.
STATUS
Purpose: Show current printer status including klipper state, print progress, and any active errors.
Syntax: STATUS
Voron usage: Quick diagnostic check. Returns Printer is ready or details of any fault condition.
RESPOND
Purpose: Send a message to the frontend console. Used in macros to provide status updates.
Syntax:
RESPOND MSG="Heating bed..."
RESPOND PREFIX=INFO MSG="Starting print with ABS"
RESPOND TYPE=command MSG="action:disconnect"
Voron usage: Essential for custom macros. Use RESPOND to log progress at each step of your PRINT_START macro so you can see what's happening in Mainsail/Fluidd.
Macros Reference
SET_FAN_SPEED
Purpose: Set a configured fan's speed by percentage. More intuitive than M106 for named fans.
Syntax:
SET_FAN_SPEED FAN=part_cooling_fan SPEED=0.5 ; 50%
SET_FAN_SPEED FAN=exhaust_fan SPEED=1.0 ; 100%
Voron usage: Use in macros that control enclosure fans, Nevermore carbon filter fans, or chamber exhaust fans. Speed is 0.0-1.0.
UPDATE_DELAYED_GCODE
Purpose: Update or cancel a delayed G-code event (a G-code that runs after a specified delay).
Syntax:
UPDATE_DELAYED_GCODE ID=my_delayed_gcode DUATION=120
UPDATE_DELAYED_GCODE ID=my_delayed_gcode DURATION=0 ; Cancel
Voron usage: Common for chamber heater control. A delayed G-code checks if the chamber is up to temperature and either starts the print or delays further. Also used for Nevermore fan cycling.
Quick Troubleshooting Reference
| Issue | Diagnostic Command |
|---|---|
| First layer too high/low | PROBE_CALIBRATE to adjust Z-offset |
| Temperature fluctuations | PID_CALIBRATE HEATER=extruder TARGET=250 |
| Gantry not level | QUAD_GANTRY_LEVEL or Z_TILT_ADJUST |
| Probe inconsistency | PROBE_ACCURACY to check repeatability |
| Underextrusion | SET_EXTRUDER_ROTATION_DISTANCE recalibration |
| Ringing/ghosting | SHAPER_CALIBRATE to re-run input shaper |
| MCU disconnected | FIRMWARE_RESTART |
Bookmark this page for quick reference. The Klipper documentation is comprehensive but scattered — this guide collects the Voron-relevant commands in one place. When in doubt, use HELP in the Klipper console to get a full list of available commands on your specific configuration.