Skip to content

printer.cfg

The top-level Klipper config. The canonical file lives at content/config/files/printer.cfg and is embedded below — edit the file, the page updates on rebuild.

## Voron Design VORON2 250/300/350mm Spider TMC2209 UART config

## *** THINGS TO CHANGE/CHECK: ***
## Fine tune E steps					      [extruder] section

[mcu]
##	Obtain definition by "ls -l /dev/serial/by-id/" 
##--------------------------------------------------------------------
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_1D002F000250563046353420-if00

[printer]
kinematics: corexy
max_velocity: 800  
#max_velocity: 300  # base value
max_accel: 6000			        #Max 4000
max_accel_to_decel: 3000  # half of max_accel
max_z_velocity: 15			#Max 15 for 12V TMC Drivers, can increase for 24V
max_z_accel: 350
square_corner_velocity: 5.0
# 6000, 800 TEST_SPEED x50 ok

[input_shaper]
shaper_freq_x: 55.4
shaper_type_x: mzv
shaper_freq_y: 39.4
shaper_type_y: mzv
[include InputShaper.cfg]

#####################################################################
#      X/Y Stepper Settings
#####################################################################

[stepper_x]
##	Connected to X-MOT (B Motor)
step_pin: PE11
dir_pin: !PE10
enable_pin: !PE9
rotation_distance: 40
microsteps: 16
full_steps_per_rotation:200  #set to 400 for 0.9 degree stepper
endstop_pin: ^PA1
#endstop_pin: tmc2209_stepper_x:virtual_endstop
position_min: 0
position_endstop: 298
position_max: 298
homing_speed: 100   #Max 100
# homing_speed: 20   # for sensorless, half of rotation_distance
homing_retract_dist: 5
# homing_retract_dist: 0  # for sensorless
homing_positive_dir: true

##	Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_x]
uart_pin: PE7
#diag_pin: ^PA1 # use the same pin that was previously the endstop_pin!
diag_pin: PB14     # try clee
driver_SGTHRS: 55
interpolate: True
run_current: 0.8
hold_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0

[stepper_y]
##	Connected to Y-MOT (A Motor)
step_pin: PD8
dir_pin: !PB12
enable_pin: !PD9
rotation_distance: 40
microsteps: 16
full_steps_per_rotation:200  #set to 400 for 0.9 degree stepper
endstop_pin: ^PA2
#endstop_pin: tmc2209_stepper_y:virtual_endstop
position_min: 0
position_endstop: 307
position_max: 307
homing_speed: 100  #Max 100
# homing_speed: 20   # for sensorless, half of rotation_distance
homing_retract_dist: 5
# homing_retract_dist: 0  # for sensorless
homing_positive_dir: true

##	Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_y]
uart_pin: PE15
#diag_pin: ^PA2     # use the same pin that was previously the endstop_pin!
diag_pin: PB13     # try clee
driver_SGTHRS: 50 # 255 is most sensitive value, 0 is least sensitive
interpolate: True
run_current: 0.8
hold_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0

#####################################################################
#   Z Stepper Settings
#####################################################################

## In Z-MOT Position
## Z0 Stepper - Front Left
[stepper_z]
step_pin: PD14
dir_pin: !PD13
enable_pin: !PD15
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16
##  In Z- Position
endstop_pin: ^PA0
##  Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0)
##  (+) value = endstop above Z0, (-) value = endstop below
##	Increasing position_endstop brings nozzle closer to the bed
##  After you run Z_ENDSTOP_CALIBRATE, position_endstop will be stored at the very end of your config
#position_endstop: -0.5
#position_endstop = -0.200
##	300mm build
position_max: 275
position_min: -5
homing_speed: 16
second_homing_speed: 3
homing_retract_dist: 3

##	Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z]
uart_pin: PD10
interpolate: True
run_current: 0.8
hold_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 999999

##	In E1-MOT Position
##	Z1 Stepper - Rear Left
[stepper_z1]
step_pin: PE6
dir_pin: PC13
enable_pin: !PE5
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16

##	Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z1]
uart_pin: PC14
interpolate: True
run_current: 0.8
hold_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 999999

##	In E2-MOT Position
##	Z2 Stepper - Rear Right
[stepper_z2]
step_pin: PE2
dir_pin: !PE4
enable_pin: !PE3
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16

##	Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z2]
uart_pin: PC15
interpolate: true
run_current: 0.8
hold_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 999999

##	In E3-MOT Position
##	Z3 Stepper - Front Right
[stepper_z3]
step_pin: PD12
dir_pin: PC4
enable_pin: !PE8
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16

[tmc2209 stepper_z3]
uart_pin: PA15
interpolate: true
run_current: 0.8
hold_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 999999

#####################################################################
#   Extruder
#####################################################################

##	In E0-MOT Position
[extruder]
step_pin: PD5
dir_pin: !PD6
enable_pin: !PD4

##	Update value below when you perform extruder calibration
##	If you ask for 100mm of filament, but in reality it is 98mm:
##	rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / 100
##  22.6789511 is a good starting point for Bondtech 5mm gears
##  34.37086 for Bondtech 8mm gears (Galileo)
#rotation_distance: 34.37086	# (Galileo)
#rotation_distance: 35.42	# 1
#rotation_distance: 35.161	# 2
#rotation_distance: 35.1047	# 3
#rotation_distance: 35.1433	# 4
#rotation_distance: 35.0590	# 5
rotation_distance: 35.1020	# avg3
##	Update Gear Ratio depending on your Extruder Type
##	Use 50:17 for Afterburner/Clockwork (BMG Gear Ratio)
##	Use 80:20 for M4, M3.1
##  Use 7.5:1 for Galileo
gear_ratio: 7.5:1				#Galileo
microsteps: 16
full_steps_per_rotation: 200	#200 for 1.8 degree, 400 for 0.9 degree
nozzle_diameter: 0.400
filament_diameter: 1.75
##      In E0 OUT Position
heater_pin: PB15
#sensor_type: PT1000 # sensor for dragon hot-end
sensor_type: ATC Semitec 104NT-4-R025H42G
sensor_pin: PC0
min_temp: 10
max_temp: 280
max_power: 1.0
min_extrude_temp: 170
#control = pid
#pid_kp = 26.213
#pid_ki = 1.304
#pid_kd = 131.721
##	Try to keep pressure_advance below 1.0
#pressure_advance: 0.06  # dragon SF
pressure_advance: 0.059  # Revo; from PA lines.  seeing corner sep
#pressure_advance: 0.056  # Revo
##	Default is 0.040, leave stock
#pressure_advance_smooth_time: 0.040

##	In E0-MOT Position
##	Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 extruder]
uart_pin: PD7
interpolate: false
run_current: 0.5
hold_current: 0.4
sense_resistor: 0.110
stealthchop_threshold: 0

#####################################################################
#   Bed Heater
#####################################################################
[heater_bed]
##	SSR Pin - In BED OUT position
heater_pin: PB4
sensor_type: NTC 100K MGB18-104F39050L32 # Keenovo Heater Pad
sensor_pin: PC3
##	Adjust Max Power so your heater doesn't warp your bed
max_power: 0.6
min_temp: 0
max_temp: 120
#control: pid
#pid_kp: 58.437
#pid_ki: 2.347
#pid_kd: 363.769

#####################################################################
#	Probe
#####################################################################
[probe]
##	This probe is not used for Z height, only Quad Gantry Leveling
##	In Z+ position
##	If your probe is NO instead of NC, change pin to ^!PA3
pin: ^PA3
x_offset: 0
y_offset: 19.75
z_offset: 6.42
speed: 15
samples: 3
samples_result: median
sample_retract_dist: 2.0
samples_tolerance: 0.01
samples_tolerance_retries: 3

##[probe]
####	This probe is not used for Z height, only Quad Gantry Leveling
####	In Z+ position
####	If your probe is NO instead of NC, change pin to ^!PA3
##pin: ^PA3
##x_offset: 0
##y_offset: 25.0
###z_offset: 0
##speed: 20.0
##samples: 3
##samples_result: median
##sample_retract_dist: 3.0
##samples_tolerance: 0.006
##samples_tolerance_retries: 6

#####################################################################
#	Fan Control
#####################################################################

[heater_fan hotend_fan]
##	Hotend Fan - FAN0 Connector
pin: PB0
max_power: 1.0
#kick_start_time: 0.5
heater: extruder
heater_temp: 50.0
##	If you are experiencing back flow, you can reduce fan_speed
#fan_speed: 1.0

[fan]
##	Print Cooling Fan - FAN1 Connector
pin: PB1
#max_power: 1.0
#kick_start_time: 0.5
##	Depending on your fan, you may need to increase this value
##	if your fan will not start. Can change cycle_time (increase)
##	if your fan is not able to slow down effectively
off_below: 0.10

[heater_fan controller_fan]
##	Controller fan - FAN2 Connector
pin: PB2
#kick_start_time: 0.5
heater: heater_bed
heater_temp: 45.0
fan_speed: 0.5

#[heater_fan exhaust_fan]
##  Exhaust fan - In E2 OUT Positon
#pin: PB3
#max_power: 1.0
#shutdown_speed: 0.0
##kick_start_time: 0.5
#heater: heater_bed
#heater_temp: 60
#fan_speed: 1.0

[include KlipperExpander.cfg]

#####################################################################
#	LED Control
#####################################################################

#[output_pin caselight ]
##  Chamber Lighting - In E1 OUT Position
#pin: PC8
#pwm: true
#shutdown_value: 0
#cycle_time: 0.01

#####################################################################
#	Homing and Gantry Adjustment Routines
#####################################################################

[idle_timeout]
timeout: 3600

#[safe_z_home]
###	XY Location of the Z Endstop Switch
###	Update -10,-10 to the XY coordinates of your endstop pin 
###	(such as 157,305) after going through Z Endstop Pin
###	Location Definition step.
#home_xy_position:188.5,307
#speed:100
#z_hop:10
##home_xy_position:203,307
##speed:200

[z_calibration]
nozzle_xy_position:   188.5,307
switch_xy_position:   181.5,287  # Ymax-20mm
#nozzle_xy_position:   185,307 # after sensorless
#switch_xy_position:   178,287  # after sensorless/  Ymax-20mm
bed_xy_position:      150,150
#switch_offset:        0.46
switch_offset:        0.51 ; 0.05 closer
start_gcode:          ATTACH_PROBE
#before_switch_gcode: <macro name for attaching the probe AFTER probing the nozzle>
end_gcode:            DOCK_PROBE
   
[quad_gantry_level]
##	Use QUAD_GANTRY_LEVEL to level a gantry.
##	Min & Max gantry corners - measure from nozzle at MIN (0,0) and 
##	MAX (250, 250), (300,300), or (350,350) depending on your printer size
##	to respective belt positions
##	Gantry Corners for 300mm Build
gantry_corners:
	-60,-10
	360,370
#	Probe points
points:
	50,25
	50,225
	250,225
	250,25
speed: 400
horizontal_move_z: 7 # 10
retries: 5
retry_tolerance: 0.0075
max_adjust: 10

[bed_mesh]
speed: 400
horizontal_move_z: 7 # 10
mesh_min: 50, 50
mesh_max: 250, 250
probe_count: 5, 5
fade_start: 0.6
fade_end: 10.0
relative_reference_index: 12
#mesh_pps: 2, 3
algorithm: bicubic
bicubic_tension: 0.2


#####################################################################
#	Displays
#####################################################################

#--------------------------------------------------------------------

# [display]
# #	mini12864 LCD Display
# lcd_type: uc1701
# cs_pin: PC11
# a0_pin: PD2
# rst_pin: PC10
# encoder_pins: ^PC6,^PC7
# click_pin: ^!PA8
# contrast: 63
# #spi_bus: spi1
# spi_software_mosi_pin: PA7
# spi_software_miso_pin: PA6
# spi_software_sclk_pin: PA5

# [neopixel fysetc_mini12864]
# #	To control Neopixel RGB in mini12864 display
# pin: PC12
# chain_count: 3
# initial_RED: 0.1
# initial_GREEN: 0.5
# initial_BLUE: 0.0
# color_order: RGB

[include stealthburner_leds.cfg]

# Example neopixel configuration:
[neopixel sb_leds]
pin: PD3
# #   The pin connected to the neopixel. This parameter must be
# #   provided.
chain_count: 3
# #   The number of Neopixel chips that are "daisy chained" to the
# #   provided pin. The default is 1 (which indicates only a single
# #   Neopixel is connected to the pin).
color_order: GRBW
# #   Set the pixel order required by the LED hardware. Options are GRB,
# #   RGB, GRBW, or RGBW. The default is GRB.
# initial_RED: 0.0
# initial_GREEN: 0.0
# initial_BLUE: 0.0
# initial_WHITE: 0.0
# #   Sets the initial LED color of the Neopixel. Each value should be
# #   between 0.0 and 1.0. The WHITE option is only available on RGBW
# #   LEDs. The default for each color is 0.#



#	Set RGB values on boot up for each Neopixel. 
#	Index 1 = display, Index 2 and 3 = Knob
# [delayed_gcode setdisplayneopixel]
# initial_duration: 1
# gcode:
#     STATUS_READY
#         # SET_LED LED=fysetc_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0
#         # SET_LED LED=fysetc_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
#         # SET_LED LED=fysetc_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 

#--------------------------------------------------------------------

[temperature_sensor chamber]
sensor_type: NTC 100K beta 3950
sensor_pin: PC1
min_temp: -200
max_temp: 100
#gcode_id: C

[temperature_sensor raspberry_pi_temperature]
sensor_type: temperature_host
min_temp: 10
max_temp: 100

[include PrimeLineMacro.cfg]
[include nozzle_scrub.cfg]
[include Accel.cfg]

#####################################################################
#	Macros
#####################################################################
#[include sensorless.cfg]
[include klicky-probe.cfg]

[gcode_macro G32]
gcode:
    BED_MESH_CLEAR
    STATUS_HOMING
    G28
    STATUS_LEVELING
    QUAD_GANTRY_LEVEL
    STATUS_HOMING
    G28
    STATUS_READY
    ##	300 build
    G0 X150 Y250 Z30 F7200
   
[gcode_macro PRINT_START]
#   Use PRINT_START for the slicer starting script - please customise for your slicer of choice
gcode:
    {% set bed_temp = params.BED|default(110)|float %}
    {% set hotend_temp = params.HOTEND|default(250)|float %}
    {% set chamber_temp = params.CHAMBER|default(0)|float %}
    {% set nevermore_speed = params.nevermore_speed|default(0.72)|float %}
    M140 S{bed_temp}               ; set bed temp
    M104 S{hotend_temp-50.0}       ; set hotend temp

    STATUS_HOMING
    G28                            ; home all
    ;SET_FAN_SPEED FAN=nevermore SPEED={nevermore_speed}
    SET_FAN_SPEED FAN=nevermore SPEED=0.5
    G1 X150 Y250 Z20 F9000                   ; move nozzle away from bed 
    M117 Heating BED and Extruder
    STATUS_HEATING
    M190 S{bed_temp}               ; wait for bed temp
    ;M109 S{hotend_temp-50.0}       ; set & wait for hotend temp
    M117 Waiting for chamber temp
    TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={chamber_temp}   ; wait for chamber temp
        ;[MAXIMUM=<target>]: 

    ; purge and clean nozzle
    M117 Cleaning Nozzle
    STATUS_CLEANING
    clean_nozzle                    ; First Time Clean The Nozzle

    ; Attach probe and keep it locked on through these operations
    ;ATTACH_PROBE_LOCK

    M117 QGL
    STATUS_LEVELING
    QUAD_GANTRY_LEVEL               
    G28 Z ; Rehome Z after QGL since Z offsets are now messed up
    
    G1 X150 Y250 Z20 F9000          ; Move The Nozzle To The Heating Position
    M117 Heating Extruder
    STATUS_HEATING
    M109 S{hotend_temp}         ; Wait For The Nozzle Temp

    M117 Cleaning Nozzle
    STATUS_CLEANING
    clean_nozzle                   ; Second Time Clean The Nozzle

    ;BED_MESH_PROFILE LOAD=default  ; Load bed mesh

    M117 Calibrating Z
    STATUS_CALIBRATING_Z
#    G28 Z
    CALIBRATE_Z

    M117 Bed Mesh Calibrate
    STATUS_MESHING
    # DISABLED # BED_MESH_CALIBRATE
    ;BED_MESH_PROFILE LOAD=default  ; Load bed mesh

    ; Unlock probe
    ;DOCK_PROBE_UNLOCK
    SET_FAN_SPEED FAN=nevermore SPEED=0.8
    ; Adjust Z offset if needed
    ; SET_GCODE_OFFSET Z_ADJUST={params.Z_ADJUST|default(0.0)|float} MOVE=1
    G91                            ; relative positioning
    M117 Printing
    STATUS_PRINTING
    PRIME_LINE XPAD=2 YPAD=2 LENGTH=240 PRINT_SPEED=60 TRAVEL_SPEED=200 PURGE=8 RETRACT=0.3 EXTRUSION_MULTIPLIER=1.25 PRINT_HANDLE=1 HANDLE_FAN=35

    ;M117 Purge Line
    ;G1 X10 Y5 Z1 F9000 ; go outside print area
    ;G92 E0.0
    ;G1 X60.0 E9.0 F1000.0 ; intro line
    ;G1 X100.0 E12.5 F1000.0 ; intro line
    ;G92 E0.0

[gcode_macro PRINT_END]
#   Use PRINT_END for the slicer ending script - please customise for your slicer of choice
gcode:
    M400                           ; wait for buffer to clear
    G92 E0                         ; zero the extruder
    G1 E-10.0 F3600                ; retract filament
    G91                            ; relative positioning
    G0 Z1.00 X20.0 Y20.0 F20000    ; move nozzle to remove stringing
    TURN_OFF_HEATERS
    M107                           ; turn off fan
    G1 Z20 F3000                    ; move nozzle up 2mm
    G90                            ; absolute positioning
    G0  X125 Y250 F3600            ; park nozzle at rear
    BED_MESH_CLEAR
    SET_FAN_SPEED FAN=nevermore SPEED=0.0
    
[gcode_macro LOAD_FILAMENT]
gcode:
   G1 X150 Y250 Z90 F9000          ; Move The Nozzle To The Heating Position
   M117 Heating Extruder
   STATUS_HEATING
   M109 S250                      ; wait for hotend temp to 250
   M83                            ; set extruder to relative
   G1 E30 F300                    ; load
   G1 E15 F150                    ; prime nozzle with filament
   M82                            ; set extruder to absolute
    
[gcode_macro UNLOAD_FILAMENT]
gcode:
   M83                            ; set extruder to relative
   G1 E10 F300                    ; extrude a little to soften tip
   G1 E-40 F1800                  ; retract some, but not too much or it will jam
   M82                            ; set extruder to absolute
      
## 	Common Temperature Sensors
##   "EPCOS 100K B57560G104F"
##   "ATC Semitec 104GT-2"
##   "NTC 100K beta 3950"
##   "Honeywell 100K 135-104LAG-J01"
##   "NTC 100K MGB18-104F39050L32" (Keenovo Heater Pad)
##   "AD595"
##   "PT100 INA826"
##   "PT1000"

# [temperature_sensor my_sensor]
# sensor_type: ATC Semitec 104GT-2
# sensor_pin: PC1

[include fluidd.cfg]

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 29.446
#*# pid_ki = 3.218
#*# pid_kd = 67.359
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 36.585
#*# pid_ki = 1.167
#*# pid_kd = 286.733
#*#
#*# [stepper_z]
#*# position_endstop = 2.000
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	-0.002500, -0.037500, 0.002500, 0.017500, 0.010000
#*# 	0.015000, -0.005000, -0.010000, 0.015000, 0.015000
#*# 	-0.002500, -0.022500, 0.000000, 0.005000, 0.002500
#*# 	0.030000, -0.002500, 0.007500, 0.027500, 0.020000
#*# 	0.040000, -0.000000, -0.002500, 0.037500, 0.050000
#*# tension = 0.2
#*# min_x = 50.0
#*# algo = bicubic
#*# y_count = 5
#*# mesh_y_pps = 2
#*# min_y = 50.0
#*# x_count = 5
#*# max_y = 250.0
#*# mesh_x_pps = 2
#*# max_x = 250.0
#*#
#*# [probe]