M109 in start gcode not working?

Basic Information:

Printer Model: Ender 3 V2
MCU / Printerboard: Creality 4.2.2
klippy.log

Fill out above information and in all cases attach your klippy.log file. Pasting your printer.cfg is not needed
Be sure to check our Knowledge Base and in particular this and this post

Describe your issue:

Klipper doesn’t seem to be recognizing M109 properly. I have the code set to warm the nozzle to 150 while it’s doing the bed leveling then it’s supposed to set it to the print temp and wait. However it doesn’t wait. It goes to the start of the prime line then faults out because the hot end is too cold.
klippy.log (1.5 MB)

Can you share the start gcode sequence?

This is in the printer.cfg file. The slicer just has START_PRINT

[gcode_macro PRINT_START]
# gcode parameters for area bed mesh
variable_parameter_AREA_START : 0,0
variable_parameter_AREA_END : 0,0
gcode:
  {% set BED_TEMP = params.BED_TEMP|default(0)|float %}
  {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(0)|float %}
  # Heat Nozzle to soak temp
  M104 S150
  # Start bed heating
  M117 Heating bed...  
  M190 S{BED_TEMP}
  # Home the printer
  M117 Homing...
  G28
  M117 Calibrating mesh...
  BED_MESH_CALIBRATE AREA_START={params.AREA_START|default("0,0")} AREA_END={params.AREA_END|default("0,0")}
  # Use absolute coordinates
  G90
  # Reset the G-Code Z offset (adjust Z offset if needed)
  SET_GCODE_OFFSET Z=0.0
  # Set and wait for nozzle to reach temperature
  M117 Heating extruder...  
  M109 S{EXTRUDER_TEMP}
  G92 E0 ;Reset extruder
  # move z axis
  G1 Z2.0 F3000 ;Move Z axis up
  # move to prime position
  M117 Priming extruder...
  G1 X10 Y10 Z0.28 F5000.0 ;Move to start position
  G1 X200 Y10 Z0.28 F1500.0 E15 ;Draw the first line
  G1 X200 Y10.5 Z0.28 F1500.0 ;Move to side a little
  G1 X10 Y10.5 Z0.28 F1500.0 E30 ;Draw the second line
  G92 E0 ;Reset extruder
  G1 Z2.0 F3000 ;Move Z axis up
  G1 X5 Y20 Z0.3 F5000.0
  G1 Z0.2 F100
  M117

Ok so I set the default to 190 in the code and it worked but only heat the nozzle to 190 and not the 215 that the slicer set it to. I’m using PrusaSlicer

Do you attach the heating parameters to the PRINT_START macro when you start a print?

Else it takes the 0 (zero) defaults.

Show how you call your start macro in PS and attach a sliced gcode file

That sounds like it might be the issue. How do I do that?

That was exactly it, thanks!
This is now my start gcode in PrusaSlicer:

M109 S0
M190 S0
PRINT_START EXTRUDER_TEMP={first_layer_temperature[initial_extruder]} BED_TEMP={first_layer_bed_temperature[initial_extruder]} SIZE={first_layer_print_min[0]}_{first_layer_print_min[1]}_{first_layer_print_max[0]}_{first_layer_print_max[1]}

Still trying to get the adaptive mesh to work properly but that still a WIP. Thanks!

1 Like

I am trying to align my PrusaSlicer Start gCode and
the Start_Print in Klipper.
This post gives me different/new information that I have not tried yet.
In Prusa Slicer should I have this as my start gcode? and does it pull the temps from the Slicer settings
M109 S0
M190 S0
PRINT_START EXTRUDER_TEMP={first_layer_temperature[initial_extruder]} BED_TEMP={first_layer_bed_temperature[initial_extruder]}

Should I have this in the Klipper Start_Print
gcode:
{% set BED_TEMP = params.BED_TEMP|default(0)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(0)|float %}
##this is the first time I have seen “0” as a default temp