Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/klipper_config/printer.cfg', '-I', '/tmp/printer', '-l', '/home/pi/klipper_logs/klippy.log', '-a', '/tmp/klippy_uds'] Git version: 'v0.10.0-376-gfb3bae45' CPU: 2 core Intel(R) Celeron(R) 2957U @ 1.40GHz Python: '2.7.18 (default, Mar 8 2021, 13:02:45) \n[GCC 9.3.0]' Start printer at Thu Apr 21 14:33:03 2022 (1650565983.3 244056.7) ===== Config file ===== [mcu] serial = /dev/serial/by-id/usb-Klipper_stm32f446xx_26001F00115053424E363620-if00 restart_method = command [printer] kinematics = corexy max_velocity = 400 max_accel = 4000 max_accel_to_decel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 20.0 [idle_timeout] timeout = 18000 gcode = M84 TURN_OFF_HEATERS UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=60 [gcode_macro _printer_vars] variable_ptr_verb_error = 1 variable_ptr_verb_info = 0 variable_ptr_verb_status = 0 variable_ptr_verb_debug = 0 variable_ptr_verb_modload = 0 variable_ptr_verb_codeflow = 0 variable_show_proc_exit = 1 variable_show_proc_exit_details = 1 variable_pause_retract_default = 1.0 gcode = [gcode_macro _proc_start] description = for trace debug purposes - presents depth as leading back-tics gcode = {% set svv = printer.save_variables.variables %} _SAVE_VARIABLE_STOCK VARIABLE=proc_depth VALUE={svv.proc_depth + 1|int} {% set this1 = namespace(depth_indent = "`") %} {% for iter in range(svv.proc_depth|int) %} {% set this1.depth_indent = this1.depth_indent + "`" %} {% endfor %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} {% set new_params = rawparams|replace("function=", "") %} {% set new_params = new_params|replace("func_params=", "") %} {% set new_params = new_params|replace("'", "") %} {% set new_params = new_params|replace("\"", "") %} M118 {this1.depth_indent ~ " " ~ new_params|upper} {% endif %} [gcode_macro _proc_end] description = for trace debug purposes - presents depth as leading back-tics gcode = {% set svv = printer.save_variables.variables %} {% set this1 = namespace(depth_indent = "`") %} _SAVE_VARIABLE_STOCK VARIABLE=proc_depth VALUE={svv.proc_depth - 1|int} {% if svv.proc_depth|int < 0 %} _SAVE_VARIABLE_STOCK VARIABLE=proc_depth VALUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow or params.FORCE|default(0)|int %} {% for iter in range(svv.proc_depth - 1|int) %} {% set this1.depth_indent = this1.depth_indent ~ "`" %} {% endfor %} {% if printer["gcode_macro _printer_vars"].show_proc_exit %} {% if params.FUNCTION|string != "" and printer["gcode_macro _printer_vars"].show_proc_exit_details %} M118 {this1.depth_indent ~ " [" ~ params.FUNCTION|lower ~ "] done"} {% else %} M118 {this1.depth_indent} {% endif %} {% endif %} {% endif %} [gcode_macro _enable_trace_debug] description = sets codeflow verbosity flag and inits depth counter gcode = {% set entry_trace_enabled_flag = printer["gcode_macro _printer_vars"].ptr_verb_codeflow|default(0)|int %} SET_GCODE_VARIABLE MACRO=_printer_vars VARIABLE=ptr_verb_codeflow VALUE=1 {% if entry_trace_enabled_flag == 0 %} M118 M118 {% endif %} _proc_start function=_enable_trace_debug func_params='"{rawparams|string}"' _SAVE_VARIABLE_STOCK VARIABLE=proc_depth VALUE=1 {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _enable_trace_debug <<<<< {% endif %} _proc_end function=_enable_trace_debug [gcode_macro _disable_trace_debug] description = sets codeflow verbosity flag and inits depth counter gcode = {% set entry_trace_enabled_flag = printer["gcode_macro _printer_vars"].ptr_verb_codeflow|default(1)|int %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_disable_trace_debug func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _disable_trace_debug <<<<< {% endif %} SET_GCODE_VARIABLE MACRO=_printer_vars VARIABLE=ptr_verb_codeflow VALUE=0 _SAVE_VARIABLE_STOCK VARIABLE=proc_depth VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_disable_trace_debug {% endif %} {% if entry_trace_enabled_flag %} _proc_end function=_disable_trace_debug FORCE=1 M118 M118 {% endif %} [virtual_sdcard] path = /home/pi/gcode_files [display_status] [gcode_shell_command hello_world] command = echo hello world timeout = 2 verbose = True [gcode_macro HELLO_WORLD] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=HELLO_WORLD {% endif %} RUN_SHELL_COMMAND CMD=hello_world {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=HELLO_WORLD {% endif %} [gcode_macro reset_noz_cam] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=reset_noz_cam {% endif %} RUN_SHELL_COMMAND CMD=set_cam_config {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=reset_noz_cam {% endif %} [gcode_shell_command set_cam_config] command = sh /home/pi/klipper_config/cfg_noz_cam.sh timeout = 2 verbose = false [gcode_shell_command restore_configs] command = sh /home/pi/klipper_config/config_pull.sh timeout = 600 verbose = false [gcode_shell_command backup_configs] command = sh /home/pi/klipper_config/config_push.sh timeout = 600 verbose = false [gcode_shell_command power_off_printer] command = curl "http://10.0.0.25/cm?cmnd=Backlog%3BDelay%200%3BPower%20OFF" timeout = 2 verbose = false [gcode_shell_command power_on_printer] command = curl "http://10.0.0.25/cm?cmnd=Backlog%3BDelay%200%3BPower%20ON" timeout = 2 verbose = false [gcode_shell_command wcv2_ircut_on] command = curl -d value=1 http://10.0.0.61:8081/api/ir_cut timeout = 2 verbose = false [gcode_shell_command wcv2_ircut_off] command = curl -d value=0 http://10.0.0.61:8081/api/ir_cut timeout = 2 verbose = false [gcode_shell_command wcv2_irled_on] command = curl -d value=1 http://10.0.0.61:8081/api/ir_led timeout = 2 verbose = false [gcode_shell_command wcv2_irled_off] command = curl -d value=0 http://10.0.0.61:8081/api/ir_led timeout = 2 verbose = false [gcode_shell_command system_shutdown] command = sudo shutdown now timeout = 2 verbose = false [respond] default_type = command [save_variables] filename = ~/klipper_config/_globals.pvar [mcu pico] serial = /dev/serial/by-id/usb-Klipper_rp2040_E66058388326382F-if00 restart_method = command [output_pin _host_connect_led] pin = pico:gpio25 value = 1 shutdown_value = 0 [output_pin _sw_red_led] pin = pico:gpio28 value = 0 shutdown_value = 0 [output_pin _sw_grn_led] pin = pico:gpio12 value = 0 shutdown_value = 0 [output_pin _sw_blu_led] pin = pico:gpio13 value = 1 shutdown_value = 0 [gcode_macro _debug_vars] description = macro for debug variables variable_debug_verb_error = 1 variable_debug_verb_info = 0 variable_debug_verb_status = 0 variable_debug_verb_debug = 0 variable_debug_verb_codeflow = 0 variable_gmove_debug = 0 variable_save_var_debug = 0 variable_gcode_state_debug = 0 gcode = [delayed_gcode _debug_module_start] initial_duration = 0.5 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_debug_module_start func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _debug_module_start Start <<< {% endif %} SAVE_VARIABLE VARIABLE=module_debug_loaded VALUE=1 SAVE_VARIABLE VARIABLE=debug_err_flag VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _debug_module_start End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_debug_module_start {% endif %} [gcode_macro DUMP_PARAMETER] description = Debug: Print entries of the printer object gcode = {% set config = True if params.C or params.S else False %} {% set path = 'config' if params.C else 'settings' if params.S %} {% set search = params.C if params.C else params.S if params.S else params.P if params.P %} {% set out = [] %} {% for name1 in printer|sort %} {% if config %} ; print the searched printer.configfile[path] parameter {% if name1 is in ['configfile'] %} {% for name2 in printer[name1][path]|sort %} {% if name2 is in [search] %} {% for name3, value in printer[name1][path][name2].items()|sort %} {% set _dummy = out.append("printer.configfile.%s['%s'].%s = %s" % (path, name2, name3, value)) %} {% endfor %} {% endif %} {% endfor %} {% endif %} {% else %} {% for name2, value in printer[name1].items()|sort %} ; search for anything expext printer.configfile {% if search is not defined and name1 is not in ['configfile'] %} ; print all printer. parameter {% set _dummy = out.append("printer['%s'].%s = %s" % (name1, name2, value)) %} {% elif search is defined and name1 is in [search] %} ; print the searched printer. parameter {% set _dummy = out.append("printer['%s'].%s = %s" % (name1, name2, value)) %} {% endif %} {% endfor %} {% endif %} {% endfor %} {% if out|length > 0 %} {action_respond_info(out|join("\n"))} {% else %} {action_respond_info("Nothing found for \"DUMP_PARAMETER %s\"" % rawparams)} {% endif %} [gcode_macro DUMP_PRINT_AREA_LIMITS] description = Debug: Print information about print volume and probeable area gcode = {% set min = printer.toolhead.axis_minimum %} {% set max = printer.toolhead.axis_maximum %} {% set probe_offset = {'x' : printer.configfile.settings.probe.x_offset, 'y' : printer.configfile.settings.probe.y_offset} %} {% set probe_area = {'min' : {'x' : [min.x,(min.x-probe_offset.x)]|max, 'y' : [min.y,(min.y-probe_offset.y)]|max}, 'max' : {'x' : [max.x,(max.x-probe_offset.x)]|min, 'y' : [max.y,(max.y-probe_offset.y)]|min}} %} {action_respond_info("Print Volume Limits: Min X:%7.1f, Y:%7.1f, Z:%7.1f Max X:%7.1f, Y:%7.1f, Z:%7.1f Probe Area Limits: Min X:%7.1f, Y:%7.1f Max X:%7.1f, Y:%7.1f" % (min.x,min.y,min.z,max.x,max.y,max.z,probe_area.min.x,probe_area.min.y, probe_area.max.x,probe_area.max.y))} [gcode_macro SAVE_VARIABLE] description = SAVE_VARIABLE, with console echo if so enabled rename_existing = _SAVE_VARIABLE_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=SAVE_VARIABLE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].save_var_debug %} M118 ___SAVE_VARIABLE {rawparams}___ {% endif %} _SAVE_VARIABLE_STOCK {rawparams} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=SAVE_VARIABLE {% endif %} [gcode_macro G0] description = G0, with console echo if enabled rename_existing = G0.1 gcode = {% if printer["gcode_macro _debug_vars"].gmove_debug %} M118 G0 {rawparams|upper} {% endif %} G0.1 {rawparams} [gcode_macro G1] description = G1, with console echo if enabled rename_existing = G1.1 gcode = {% if printer["gcode_macro _debug_vars"].gmove_debug %} M118 G1 {rawparams|upper} {% endif %} G1.1 {rawparams} [gcode_macro G4] description = G4, with console echo if enabled rename_existing = G4.1 gcode = {% if printer["gcode_macro _debug_vars"].gmove_debug %} M118 G4 {rawparams|upper} {% endif %} G4.1 {rawparams} [gcode_macro M104] description = capture and set target HE temp rename_existing = M104.1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M104 func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=extruder_temp_setting VALUE={params.S|int} M104.1 {rawparams} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M104 {% endif %} [gcode_macro M109] description = capture and set target HE temp, waiting for temp attainment rename_existing = M109.1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M109 func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=extruder_temp_setting VALUE={params.S|int} M109.1 {rawparams} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M109 {% endif %} [gcode_macro M140] description = capture and set target heater_bed temp rename_existing = M140.1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M140 func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=heater_bed_temp_setting VALUE={params.S|int} M140.1 {rawparams} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M140 {% endif %} [gcode_macro M190] description = capture and set target heater_bed temp, waiting for temp attainment rename_existing = M190.1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M190 func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=heater_bed_temp_setting VALUE={params.S|int} M190.1 {rawparams} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M190 {% endif %} [gcode_macro SET_HEATER_TEMPERATURE] description = capture and set target bed temp, waiting for temp attainment rename_existing = _SET_HEATER_TEMPERATURE_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=SET_HEATER_TEMPERATURE func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE={params.HEATER|string}_temp_setting VALUE={params.TARGET|int} _SET_HEATER_TEMPERATURE_STOCK {rawparams} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=SET_HEATER_TEMPERATURE {% endif %} [gcode_macro SAVE_GCODE_STATE] description = for debug purposes, and to ease resume pains... rename_existing = _SAVE_GCODE_STATE_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=SAVE_GCODE_STATE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].gcode_state_debug %} M118 >>>>> SAVE_GCODE_STATE {rawparams} <<<<< {% endif %} save_variable VARIABLE=last_saved_gcode_state VALUE='"{params.NAME}"' _SAVE_GCODE_STATE_STOCK {rawparams} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=SAVE_GCODE_STATE {% endif %} [gcode_macro RESTORE_GCODE_STATE] description = for debug purposes rename_existing = _RESTORE_GCODE_STATE_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=RESTORE_GCODE_STATE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].gcode_state_debug %} M118 >>>>> RESTORE_GCODE_STATE {rawparams} <<<<< {% endif %} save_variable VARIABLE=last_restored_gcode_state VALUE='"{params.NAME}"' {% if params.NAME != "PAUSE_STATE" %} _RESTORE_GCODE_STATE_STOCK {rawparams} {% else %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 _RESTORE_GCODE_STATE_STOCK SKIPPED {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=RESTORE_GCODE_STATE {% endif %} [gcode_macro M122] description = dumps tmc_stepper status stuffs gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M122 func_params='"{rawparams|string}"' {% endif %} M118 M118 >>>> M122 TMC Debug Start <<<< M118 M118 >>> stepper_x <<< M118 DUMP_TMC STEPPER=stepper_x M118 M118 >>> stepper_y <<< M118 DUMP_TMC STEPPER=stepper_y M118 M118 >>> stepper_z <<< M118 DUMP_TMC STEPPER=stepper_z M118 M118 >>> stepper_z1 <<< M118 DUMP_TMC STEPPER=stepper_z1 M118 M118 >>> stepper_z2 <<< M118 DUMP_TMC STEPPER=stepper_z2 M118 M118 >>> stepper_z3 <<< M118 DUMP_TMC STEPPER=stepper_z3 M118 M118 >>> extruder <<< M118 DUMP_TMC STEPPER=extruder M118 M118 >>> selector_stepper <<< M118 DUMP_TMC STEPPER=selector_stepper M118 M118 >>> gear_stepper <<< M118 DUMP_TMC STEPPER=gear_stepper M118 M118 >>>> M122 TMC Debug End <<<< M118 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M122 {% endif %} [gcode_macro _enable_gcode_state_debug] description = used to enable save_var debug gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_enable_gcode_state_debug func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _enable_save_var_debug <<<<< {% endif %} SET_GCODE_VARIABLE MACRO=_debug_vars VARIABLE=gcode_state_debug VALUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_enable_gcode_state_debug {% endif %} [gcode_macro _disable_gcode_state_debug] description = used to disable save_var debug gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_disable_gcode_state_debug func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _disable_save_var_debug <<<<< {% endif %} SET_GCODE_VARIABLE MACRO=_debug_vars VARIABLE=gcode_state_debug VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_disable_gcode_state_debug {% endif %} [gcode_macro _enable_gmove_debug] description = used to enable gmove debug gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_enable_gmove_debug func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _enable_gmove_debug <<<<< {% endif %} SET_GCODE_VARIABLE MACRO=_debug_vars VARIABLE=gmove_debug VALUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_enable_gmove_debug {% endif %} [gcode_macro _disable_gmove_debug] description = used to disable gmove debug gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_disable_gmove_debug func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _disable_gmove_debug <<<<< {% endif %} SET_GCODE_VARIABLE MACRO=_debug_vars VARIABLE=gmove_debug VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_disable_gmove_debug {% endif %} [gcode_macro _enable_save_var_debug] description = used to enable save_var debug gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_enable_save_var_debug func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _enable_save_var_debug <<<<< {% endif %} SET_GCODE_VARIABLE MACRO=_debug_vars VARIABLE=save_var_debug VALUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_enable_save_var_debug {% endif %} [gcode_macro _disable_save_var_debug] description = used to disable save_var debug gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_disable_save_var_debug func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _debug_vars"].debug_verb_status %} M118 >>>>> _disable_save_var_debug <<<<< {% endif %} SET_GCODE_VARIABLE MACRO=_debug_vars VARIABLE=save_var_debug VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_disable_save_var_debug {% endif %} [gcode_macro printer_config_backup] description = performs backup of local configs to the git master gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=printer_config_backup func_params='"{rawparams|string}"' {% endif %} RUN_SHELL_COMMAND CMD=backup_configs {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Printer config backed up to git repo <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=printer_config_backup {% endif %} [gcode_macro printer_config_restore] description = Restore local configs from the git repo and restart klipper if updated gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=printer_config_restore func_params='"{rawparams|string}"' {% endif %} RUN_SHELL_COMMAND CMD=restore_configs {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Printer config updated from git repo <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=printer_config_restore {% endif %} [dotstar chamber_lights] data_pin = pico:gpio11 clock_pin = pico:gpio10 chain_count = 231 initial_red = 0.0 initial_green = 0.0 initial_blue = 0.0 [gcode_macro ChLts_Off] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Off {% endif %} SET_LED LED=chamber_lights RED=0 GREEN=0 BLUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Off {% endif %} [gcode_macro ChLts_Normal] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Normal {% endif %} SET_LED LED=chamber_lights RED=0.5 GREEN=0.5 BLUE=0.5 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Normal {% endif %} [gcode_macro ChLts_Full] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Full {% endif %} SET_LED LED=chamber_lights RED=1 GREEN=1 BLUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Full {% endif %} [gcode_macro ChLts_Red] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Red {% endif %} SET_LED LED=chamber_lights RED=0.5 GREEN=0 BLUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Red {% endif %} [gcode_macro ChLts_Green] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Green {% endif %} SET_LED LED=chamber_lights RED=0 GREEN=0.5 BLUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Green {% endif %} [gcode_macro ChLts_Blue] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Blue {% endif %} SET_LED LED=chamber_lights RED=0 GREEN=0 BLUE=0.5 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Blue {% endif %} [gcode_macro ChLts_Orange] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Orange {% endif %} SET_LED LED=chamber_lights RED=0.9 GREEN=0.3 BLUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Orange {% endif %} [gcode_macro ChLts_Test] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ChLts_Test {% endif %} SET_LED LED=chamber_lights RED=0.5 GREEN=0.5 BLUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ChLts_Test {% endif %} [neopixel ercf_lights] pin = pico:gpio22 chain_count = 8 color_order = GRB initial_red = 0.0 initial_green = 0.0 initial_blue = 0.0 [neopixel dash_lights] pin = PB0 chain_count = 8 color_order = GRB initial_red = 0.0 initial_green = 0.0 initial_blue = 0.0 [neopixel lcd_lights] pin = EXP1_6 chain_count = 3 initial_red = 0.5 initial_green = 0.5 initial_blue = 0.5 color_order = RGB [gcode_macro ERCFLts_Off] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Off {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=0 GREEN=0 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Off {% endif %} [gcode_macro ERCFLts_Normal] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Normal {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=0.5 GREEN=0.5 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Normal {% endif %} [gcode_macro ERCFLts_Full] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Full {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=1 GREEN=1 BLUE=1 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Full {% endif %} [gcode_macro ERCFLts_Red] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Red {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=0.5 GREEN=0 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Red {% endif %} [gcode_macro ERCFLts_Green] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Green {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=0 GREEN=0.5 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Green {% endif %} [gcode_macro ERCFLts_Blue] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Blue {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=0 GREEN=0 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Blue {% endif %} [gcode_macro ERCFLts_Orange] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Orange {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=0.3 GREEN=0.1 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Orange {% endif %} [gcode_macro ERCFLts_Test] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCFLts_Test {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=ercf_lights RED=0.1 GREEN=0.1 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCFLts_Test {% endif %} [gcode_macro DBLts_Off] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Off {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=0 GREEN=0 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Off {% endif %} [gcode_macro DBLts_Normal] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Normal {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=0.5 GREEN=0.5 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Normal {% endif %} [gcode_macro DBLts_Full] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Full {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=1 GREEN=1 BLUE=1 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Full {% endif %} [gcode_macro DBLts_Red] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Red {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=0.5 GREEN=0 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Red {% endif %} [gcode_macro DBLts_Green] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Green {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=0 GREEN=0.5 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Green {% endif %} [gcode_macro DBLts_Blue] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Blue {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=0 GREEN=0 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Blue {% endif %} [gcode_macro DBLts_Orange] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Orange {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=0.3 GREEN=0.1 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Orange {% endif %} [gcode_macro DBLts_Test] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DBLts_Test {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=dash_lights RED=0.1 GREEN=0.1 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DBLts_Test {% endif %} [gcode_macro LcdLts_Off] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Off {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=0 GREEN=0 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Off {% endif %} [gcode_macro LcdLts_Normal] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Normal {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=0.5 GREEN=0.5 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Normal {% endif %} [gcode_macro LcdLts_Full] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Full {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=1 GREEN=1 BLUE=1 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Full {% endif %} [gcode_macro LcdLts_Red] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Red {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=0.5 GREEN=0 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Red {% endif %} [gcode_macro LcdLts_Green] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Green {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=0 GREEN=0.5 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Green {% endif %} [gcode_macro LcdLts_Blue] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Blue {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=0 GREEN=0 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Blue {% endif %} [gcode_macro LcdLts_Orange] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Orange {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=0.3 GREEN=0.1 BLUE=0 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Orange {% endif %} [gcode_macro LcdLts_Test] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=LcdLts_Test {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.module_ledeff_loaded %} M118 ___ LED Effects Module Loaded, neopixel commands are overridden, use _set_ledeff_mode macro ___ {% else %} SET_LED LED=lcd_lights RED=0.1 GREEN=0.1 BLUE=0.5 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=LcdLts_Test {% endif %} [mcu ercf] serial = /dev/serial/by-id/usb-Klipper_samd21g18a_80D0BB084134555020312E30202C18FF-if00 restart_method = command [manual_stepper gear_stepper] step_pin = ercf:PA4 dir_pin = ercf:PA10 enable_pin = !ercf:PA2 rotation_distance = 22.81048901638 gear_ratio = 80:20 microsteps = 16 full_steps_per_rotation = 200 velocity = 35 accel = 150 endstop_pin = ^ercf:PA7 [tmc2209 manual_stepper gear_stepper] uart_pin = ercf:PA8 uart_address = 0 interpolate = True run_current = 0.8 hold_current = 0.1 sense_resistor = 0.110 stealthchop_threshold = 0 [manual_stepper selector_stepper] step_pin = ercf:PA9 dir_pin = ercf:PB8 enable_pin = !ercf:PA11 rotation_distance = 40 microsteps = 16 full_steps_per_rotation = 200 velocity = 100 accel = 300 endstop_pin = ^ercf:PB9 position_endstop = 0 homing_speed = 100 [tmc2209 manual_stepper selector_stepper] uart_pin = ercf:PA8 uart_address = 1 run_current = 0.6 hold_current = 0.1 interpolate = False sense_resistor = 0.110 stealthchop_threshold = 0 [servo ercf_servo] pin = ercf:PA5 maximum_servo_angle = 150 minimum_pulse_width = 0.0005 maximum_pulse_width = 0.0025 [duplicate_pin_override] pins = ercf:PA6 [filament_motion_sensor encoder_sensor] switch_pin = ^ercf:PA6 pause_on_runout = False detection_length = 4.0 extruder = extruder runout_gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=encoder_sensor_runout {% endif %} fil_ecdr_rel {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=encoder_sensor_runout {% endif %} insert_gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=encoder_sensor_insert {% endif %} fil_ecdr_prs {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=encoder_sensor_insert {% endif %} event_delay = 0.1 pause_delay = 0.5 [filament_switch_sensor toolhead_sensor] switch_pin = ^!PG15 runout_gcode = M118 --> TH_filsw_rel insert_gcode = M118 --> TH_filsw_prs pause_on_runout = True event_delay = 0.1 pause_delay = 0.1 [gcode_macro fil_ecdr_prs] description = called when the fil encoder toggles closed gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=fil_ecdr_prs {% endif %} M118 fil_ecdr_prs {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=fil_ecdr_prs {% endif %} [gcode_macro fil_ecdr_rel] description = called when the fil encoder toggles open gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=fil_ecdr_rel {% endif %} M118 fil_ecdr_rel {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=fil_ecdr_rel {% endif %} [gcode_macro TH_filsw_prs] description = called when the th fil sw toggles closed gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=TH_filsw_prs {% endif %} M118 TH_filsw_prs {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=TH_filsw_prs {% endif %} [gcode_macro TH_filsw_rel] description = called when the th fil sw toggles open gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=TH_filsw_rel {% endif %} M118 TH_filsw_rel {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=TH_filsw_rel {% endif %} [ercf] encoder_pin = ^ercf:PA6 encoder_resolution = 1.343183 long_moves_speed = 50 long_moves_accel = 200 short_moves_speed = 25 short_moves_accel = 200 [gcode_macro ERCF_CALIB_SELECTOR] description = Calibration of the selector position for a defined Tool gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CALIB_SELECTOR func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CALIB_SELECTOR Start ... {% endif %} _ERCF_SERVO_UP {% set move_length=(20.0 + (params.TOOL|int + 1)*21.0 + ((params.TOOL|int + 1)/3)*5.0) %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Measuring the selector position for tool {params.TOOL} {% endif %} ERCF_GET_SELECTOR_POS REF={move_length|int} ERCF_MOTORS_OFF {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CALIB_SELECTOR End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CALIB_SELECTOR {% endif %} [gcode_macro ERCF_CALIBRATE] description = Complete calibration of all ERCF Tools gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CALIBRATE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CALIBRATE Start ... {% endif %} {% set svv = printer.save_variables.variables %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Start the complete auto calibration... M118 First home'g the ERCF {% endif %} ERCF_HOME save_variable VARIABLE=ercf_err_flag VALUE=0 {% for chan in range(printer["gcode_macro _ERCF_VAR"].colorselector|length) if not svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF_CALIBRATE_SINGLE TOOL={chan|int} {% else %} M118 __ Calibrating Tool {chan|int} __ {% endif %} ERCF_CALIBRATE_SINGLE TOOL={chan|int} {% endfor %} _ERCF_UNSELECT_TOOL M118 ERCF_Calibrate Error: {svv.ercf_err_flag} {% if svv.ercf_err_flag == 0 %} M118 End of auto-cal - Restart firmware now. {% else %} M118 End of auto-cal - Error Exists - resolve and rerun. {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CALIBRATE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CALIBRATE {% endif %} [gcode_macro ERCF_CALIBRATE_SINGLE] description = Calibration of a single ERCF Tool gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CALIBRATE_SINGLE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CALIBRATE_SINGLE Start ... {% endif %} {% set svv = printer.save_variables.variables %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 {% if params.TOOL|int >= 0 and params.TOOL|int < printer["gcode_macro _ERCF_VAR"].colorselector|length %} {% if printer["gcode_macro ERCF_HOME"].home == -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Homing the ERCF... {% endif %} ERCF_HOME {% endif %} ; ERCF_SELECT_TOOL TOOL={params.TOOL} ERCF_SELECT_TOOL_dbg TOOL={params.TOOL} ERCF_SET_STEPS RATIO=1.0 {% if params.TOOL|int == 0 %} _ercf_set_eject_temp {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Calibrating reference tool {params.TOOL} {% endif %} ERCF_LOAD LENGTH={printer["gcode_macro _ERCF_VAR"].min_bowden_length} ERCF_HOME_EXTRUDER TOTAL_LENGTH=400 STEP_LENGTH=0.5 ERCF_CALIB_SAVE_VAR TOOL={params.TOOL} _ercf_syncd_th_load_unload RETRACT=1 MODIFIER={printer["gcode_macro _ERCF_VAR"].ercf_dual_unload_mod|float} ERCF_CALIB_UNLOAD ERCF_BUZZ_GEAR_MOTOR ERCF_IS_FILAMENT_STUCK_IN_ERCF ; _ercf_restore_he_temp _ercf_start_Cold_temp _ERCF_UNSELECT_TOOL {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Calibrating tool {params.TOOL} {% endif %} ERCF_LOAD LENGTH={printer["gcode_macro _ERCF_VAR"].min_bowden_length|float - 100.0} ERCF_CALIB_SAVE_VAR tool={params.TOOL} ERCF_CALIB_UNLOAD LENGTH={printer["gcode_macro _ERCF_VAR"].min_bowden_length|float - 100.0 + 27.0} {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Tool out of range {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CALIBRATE_SINGLE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CALIBRATE_SINGLE {% endif %} [gcode_macro ERCF_CALIB_SAVE_VAR] description = Saving ERCF calibration values gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CALIB_SAVE_VAR func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CALIB_SAVE_VAR Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 >>> ERCF_CALIB_SAVE_VAR - Entered Params: {rawparams} <<< {% endif %} {% if params.TOOL|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_CALIB_SAVE_VAR - Tool is 0 <<< {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Tool {params.TOOL} calibration value is {printer['ercf'].encoder_pos|float} {% endif %} SAVE_VARIABLE VARIABLE=ercf_calib_ref VALUE={printer['ercf'].encoder_pos|float} SAVE_VARIABLE VARIABLE=ercf_calib_{params.TOOL|int} VALUE=1.0 SET_GCODE_VARIABLE MACRO=ERCF_CALIB_UNLOAD VARIABLE=ref VALUE={printer['ercf'].encoder_pos|float} SET_GCODE_VARIABLE MACRO=ERCF_CALIB_UNLOAD VARIABLE=ratio VALUE=1.0 {% else %} {% set ratio = (printer["gcode_macro _ERCF_VAR"].min_bowden_length|float - 100.0) / printer['ercf'].encoder_pos|float %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Tool {params.TOOL} ratio is {ratio|float} {% endif %} SAVE_VARIABLE VARIABLE=ercf_calib_{params.TOOL|int} VALUE={ratio|float} SET_GCODE_VARIABLE MACRO=ERCF_CALIB_UNLOAD VARIABLE=ratio VALUE={ratio|float} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CALIB_SAVE_VAR End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CALIB_SAVE_VAR {% endif %} [gcode_macro ERCF_CALIB_UNLOAD] description = Filament unload during ERCF calibration variable_ratio = 0.0 variable_ref = 0.0 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CALIB_UNLOAD func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CALIB_UNLOAD Start ... {% endif %} {% set unload_length = params.LENGTH|default(0.0)|float %} {% if unload_length|float == 0.0 %} ERCF_UNLOAD LENGTH={(ref|float)*(ratio|float) - printer["gcode_macro _ERCF_VAR"].end_of_bowden_to_sensor|float + 27.0} {% else %} {% if ratio|float < 1.0 %} ERCF_UNLOAD LENGTH={(unload_length|float)} {% else %} ERCF_UNLOAD LENGTH={(unload_length|float)*(ratio|float)} {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CALIB_UNLOAD End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CALIB_UNLOAD {% endif %} [gcode_macro _ERCF_SERVO_DOWN] description = Engage the ERCF gear & do a wiggle, then a buzz to ensure drive/idler gear tooth meshing gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ERCF_SERVO_DOWN func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ERCF_SERVO_DOWN Start ... {% endif %} MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE=0.5 SPEED=25 ACCEL=0 SYNC=0 NODWELL=1 SET_SERVO SERVO=ercf_servo ANGLE={printer["gcode_macro _ERCF_VAR"].servo_down_angle} MANUAL_STEPPER STEPPER=gear_stepper MOVE=0.0 SPEED=25 ACCEL=0 SYNC=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE=-0.5 SPEED=25 ACCEL=0 SYNC=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE=0.0 SPEED=25 ACCEL=0 NODWELL=1 SET_SERVO SERVO=ercf_servo WIDTH=0.0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ERCF_SERVO_DOWN End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ERCF_SERVO_DOWN {% endif %} [gcode_macro _ERCF_SERVO_UP] description = Disengage the ERCF gear and disabled after raised (won't fall) to prevent power stalling gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ERCF_SERVO_UP func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ERCF_SERVO_UP Start ... {% endif %} SET_SERVO SERVO=ercf_servo ANGLE={printer["gcode_macro _ERCF_VAR"].servo_up_angle} SET_SERVO SERVO=ercf_servo WIDTH=0.0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ERCF_SERVO_UP End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ERCF_SERVO_UP {% endif %} [gcode_macro ERCF_MOTORS_OFF] description = Turn off both ERCF motors and raise the servo up, unhome, gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_MOTORS_OFF func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_MOTORS_OFF Start ... {% endif %} SET_GCODE_VARIABLE MACRO=ERCF_HOME VARIABLE=home VALUE=-1 MANUAL_STEPPER STEPPER=gear_stepper ENABLE=0 MANUAL_STEPPER STEPPER=selector_stepper ENABLE=0 _ERCF_SERVO_UP {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_MOTORS_OFF End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_MOTORS_OFF {% endif %} [delayed_gcode disable_heater] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=disable_heater func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> disable_heater Start ... {% endif %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int != 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Disable extruder heater (_ERCF_PAUSE timeout...) {% endif %} M104 S0 _clear_HE_heating_indication {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... disable_heater End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=disable_heater {% endif %} [gcode_macro _ERCF_PAUSE] description = Pause the current print and lock the ERCF operations variable_is_paused = 0 variable_extruder_temp = 0 gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ERCF_PAUSE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ERCF_PAUSE Start ... {% endif %} SET_GCODE_VARIABLE MACRO=_ERCF_PAUSE VARIABLE=extruder_temp VALUE={printer.extruder.target} SET_GCODE_VARIABLE MACRO=_ERCF_PAUSE VARIABLE=is_paused VALUE=1 SET_IDLE_TIMEOUT TIMEOUT={printer["gcode_macro _ERCF_VAR"].timeout_pause} UPDATE_DELAYED_GCODE ID=disable_heater DURATION={printer["gcode_macro _ERCF_VAR"].disable_heater} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 An issue with the ERCF has been detected and the ERCF has been PAUSED M118 When you intervene to fix the issue, first call the "ERCF_UNLOCK" Gcode M118 Refer to the manual before resuming the print {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 SAVE_GCODE_STATE NAME=ERCF_state SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 M118 _ERCF_Pause @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} PAUSE {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ERCF_PAUSE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ERCF_PAUSE {% endif %} [gcode_macro ERCF_UNLOCK] description = Unlock ERCF operations gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_UNLOCK func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_UNLOCK Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Unlock the ERCF {% endif %} stop_pause_alarm SET_GCODE_VARIABLE MACRO=_ERCF_PAUSE VARIABLE=is_paused VALUE=0 UPDATE_DELAYED_GCODE ID=disable_heater DURATION=0 {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == False %} _ERCF_UNSELECT_TOOL {% else %} _ERCF_UNSELECT_TOOL FORCED=0 {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Heating to {printer["gcode_macro _ERCF_PAUSE"].extruder_temp} {% endif %} _ercf_wait_he_temp TEMP={printer["gcode_macro _ERCF_PAUSE"].extruder_temp} RESTORE_GCODE_STATE NAME=ERCF_state save_variable VARIABLE=last_saved_gcode_state VALUE='"ERCF_state"' save_variable VARIABLE=ercf_err_flag VALUE=0 M118 _ERCF_Unlock @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Refer to the manual before resuming the print {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_UNLOCK End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_UNLOCK {% endif %} [gcode_macro T0] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T0 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T0 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T0 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T0 {% endif %} [gcode_macro T1] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T1 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T1 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=1 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T1 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T1 {% endif %} [gcode_macro T2] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T2 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T2 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=2 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T2 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T2 {% endif %} [gcode_macro T3] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T3 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T3 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=3 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T3 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T3 {% endif %} [gcode_macro T4] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T4 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T4 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=4 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T4 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T4 {% endif %} [gcode_macro T5] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T5 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T5 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=5 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T5 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T5 {% endif %} [gcode_macro T6] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T6 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T6 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=6 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T6 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T6 {% endif %} [gcode_macro T7] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T7 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T7 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=7 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T7 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T7 {% endif %} [gcode_macro T8] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T8 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T8 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=8 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T8 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T8 {% endif %} [gcode_macro T9] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T9 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T9 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=9 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T9 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T9 {% endif %} [gcode_macro T10] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T10 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T10 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=10 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T10 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T10 {% endif %} [gcode_macro T11] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=T11 func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> T11 Start ... {% endif %} ERCF_CHANGE_TOOL TOOL=11 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... T11 End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=T11 {% endif %} [gcode_macro ERCF_CHANGE_TOOL] description = Perform a tool swap, either in or out of a print variable_retract_temp_min = 180 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CHANGE_TOOL func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CHANGE_TOOL Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% set th = printer.toolhead %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int == params.TOOL|int and printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} {% else %} {% if printer.idle_timeout.state == "Printing" and svv.has_wipe_tower == 0 %} {% set z_entry = th.position.z|float %} save_gcode_state NAME=ercf_change_tool_entry {% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %} {% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %} ; {% set z_safe = [(th.position.z|float + 1), th.axis_maximum.z|float]|min %} {% set z_safe = [svv.maxz|float+1, th.axis_maximum.z]|min %} _reset_extruder go_relative {% if printer.extruder.temperature|int >= retract_temp_min|int %} G1 E-0.4 F3600 {% else %} M118 No pre-swap retract due to Low Temp... {% endif %} go_absolute G0 X{x_safe} Y{y_safe} Z{z_safe} F15000 M400 go_relative G0 Z15 F3000 go_absolute G0 X{range(6,70)|random} Y350 F15000 {% endif %} _ercf_set_eject_temp {% if printer.idle_timeout.state == "Printing" and svv.has_wipe_tower != 0 %} ERCF_CHANGE_TOOL_SLICER TOOL={params.TOOL|int} {% else %} ERCF_CHANGE_TOOL_STANDALONE TOOL={params.TOOL|int} {% endif %} _ercf_restore_he_temp {% if printer.idle_timeout.state == "Printing" and svv.has_wipe_tower == 0 %} _print_purge G0 Z{z_entry} F3000 restore_gcode_state NAME=ercf_change_tool_entry MOVE=1 MOVE_SPEED=300 {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CHANGE_TOOL End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CHANGE_TOOL {% endif %} [gcode_macro ERCF_CHANGE_TOOL_SLICER] description = Perform a tool swap during a print gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CHANGE_TOOL_SLICER func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CHANGE_TOOL_SLICER Start ... {% endif %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 {% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != params.TOOL|int %} save_variable VARIABLE=ercf_swaps VALUE={svv.ercf_swaps + 1} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Tower Swaps: {svv.ercf_swaps|int} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 >>> ERCF_CHANGE_TOOL_SLICER Change Tool T{params.TOOL|int} <<< {% endif %} M117 Change Tool T{params.TOOL|int} ERCF_UNLOAD_TOOL ERCF_LOAD_TOOL TOOL={params.TOOL|int} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].clog_detection|int == 1 %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1 {% endif %} {% else %} _alert_ercf_is_paused {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CHANGE_TOOL_SLICER End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CHANGE_TOOL_SLICER {% endif %} [gcode_macro ERCF_CHANGE_TOOL_STANDALONE] description = Perform a tool swap out of a print (... or in print if no wipe tower (MHz)) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CHANGE_TOOL_STANDALONE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CHANGE_TOOL_STANDALONE Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% set th = printer.toolhead %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 _ercf_set_eject_temp {% if printer["gcode_macro ERCF_HOME"].home == -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF not homed, homing it... {% endif %} ERCF_HOME {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 >>> ERCF_CHANGE_TOOL_STANDALONE Change Tool T{params.TOOL|int} <<< {% endif %} M117 Change Tool T{params.TOOL|int} ERCF_LOAD_TOOL TOOL={params.TOOL|int} {% if printer.idle_timeout.state == "Printing" and svv.has_wipe_tower == 0 %} save_variable VARIABLE=ercf_swaps VALUE={svv.ercf_swaps + 1} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Non-Tower Swaps: {svv.ercf_swaps|int} {% endif %} {% endif %} {% elif printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != params.TOOL|int %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 >>> ERCF_CHANGE_TOOL_STANDALONE Change Tool T{params.TOOL|int} <<< {% endif %} M117 Change Tool T{params.TOOL|int} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_CHANGE_TOOL_STANDALONE Unloading current filament <<< {% endif %} ERCF_EJECT {% endif %} ERCF_LOAD_TOOL TOOL={params.TOOL|int} {% if printer.idle_timeout.state == "Printing" and svv.has_wipe_tower == 0 %} save_variable VARIABLE=ercf_swaps VALUE={svv.ercf_swaps + 1} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Non-Tower Swaps: {svv.ercf_swaps|int} {% endif %} {% endif %} {% else %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == False %} ERCF_LOAD_TOOL TOOL={params.TOOL|int} {% if printer.idle_timeout.state == "Printing" and svv.has_wipe_tower == 0 %} save_variable VARIABLE=ercf_swaps VALUE={svv.ercf_swaps + 1} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Non-Tower Swaps: {svv.ercf_swaps|int} {% endif %} {% endif %} {% endif %} {% endif %} _ercf_restore_he_temp {% if printer.idle_timeout.state == "Printing" and svv.has_wipe_tower == 0 %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].clog_detection|int == 1 %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1 {% endif %} {% else %} _alert_ercf_is_paused {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CHANGE_TOOL_STANDALONE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CHANGE_TOOL_STANDALONE {% endif %} [gcode_macro ERCF_LOAD_TOOL] description = Load the filament from the ERCF to the toolhead gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_LOAD_TOOL func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_LOAD_TOOL Start ... {% endif %} {% set svv = printer.save_variables.variables %} _ercf_set_eject_temp {% set ercf_params = printer.save_variables.variables %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_HOME"].home == -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF not homed, homing it... {% endif %} ERCF_HOME {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Loading tool {params.TOOL|int} ... {% endif %} ; ERCF_SELECT_TOOL TOOL={params.TOOL|int} ERCF_SELECT_TOOL_dbg TOOL={params.TOOL|int} ERCF_SET_STEPS RATIO={ercf_params['ercf_calib_%s' % (params.TOOL|string)]} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Loading filament from ERCF to extruder ... {% endif %} ERCF_LOAD LENGTH={ercf_params.ercf_calib_ref|float - printer["gcode_macro _ERCF_VAR"].end_of_bowden_to_sensor|float + printer["gcode_macro _ERCF_VAR"].ercf_th_load_len_mod|float} ERCF_LOAD_FILAMENT_IN_EXTRUDER {% else %} _alert_ercf_is_paused {% endif %} _ercf_restore_he_temp {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_LOAD_TOOL End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_LOAD_TOOL {% endif %} [gcode_macro ERCF_EJECT] description = Retract from nozzle, form tip, eject, parking filament in cart gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_EJECT func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_EJECT Start ... {% endif %} {% set ercf_params = printer.save_variables.variables %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} _ercf_set_eject_temp {% endif %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Unloading tool {printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} ... {% endif %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} {% set unload_ratio = ercf_params['ercf_calib_%s' % (printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|string)] %} ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING RATIO={unload_ratio} ERCF_UNLOAD LENGTH={ercf_params.ercf_calib_ref|float - printer["gcode_macro _ERCF_VAR"].end_of_bowden_to_sensor|float + printer["gcode_macro _ERCF_VAR"].unload_modifier|float - printer["gcode_macro _ERCF_VAR"].ercf_dual_unload_mod|float } _ERCF_UNSELECT_TOOL {% else %} ERCF_EJECT_UNKNOW_STATE {% endif %} {% else %} ERCF_EJECT_UNKNOW_STATE {% endif %} {% else %} _alert_ercf_is_paused {% endif %} _ercf_restore_he_temp {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_EJECT End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_EJECT {% endif %} [gcode_macro ERCF_UNLOAD_TOOL] description = Eject the filament DURING A PRINT and park it into the ERCF gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_UNLOAD_TOOL func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_UNLOAD_TOOL Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} _ercf_set_eject_temp {% endif %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF_UNLOAD_TOOL {printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} ... {% endif %} {% set ercf_params = printer.save_variables.variables %} ERCF_HOME_EXTRUDER ; ERCF_SELECT_TOOL TOOL={printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} ERCF_SELECT_TOOL_dbg TOOL={printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} ERCF_SET_STEPS RATIO={ercf_params['ercf_calib_%s' % (printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|string)]} _ercf_syncd_th_load_unload RETRACT=1 MODIFIER={printer["gcode_macro _ERCF_VAR"].ercf_dual_unload_mod|float} ERCF_UNLOAD LENGTH={ercf_params.ercf_calib_ref|float - printer["gcode_macro _ERCF_VAR"].end_of_bowden_to_sensor|float + printer["gcode_macro _ERCF_VAR"].unload_modifier|float - (printer["gcode_macro _ERCF_VAR"].ercf_dual_unload_mod|float)} _ERCF_UNSELECT_TOOL {% endif %} {% else %} _alert_ercf_is_paused {% endif %} _ercf_restore_he_temp {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_UNLOAD_TOOL End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_UNLOAD_TOOL {% endif %} [gcode_macro ERCF_SELECT_TOOL] description = Raise servo, move the selector to params.TOOL, Lower servo, save color_/tool_selected variable_tool_selected = -1 variable_color_selected = -1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_SELECT_TOOL func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_SELECT_TOOL Start ... {% endif %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_SELECT_TOOL | _ERCF_PAUSE.is_paused = 0 <<< {% endif %} {% if printer["gcode_macro ERCF_HOME"].home != -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Select Tool {params.TOOL} ... {% endif %} _ERCF_SERVO_UP MANUAL_STEPPER STEPPER=selector_stepper MOVE={printer["gcode_macro _ERCF_VAR"].colorselector[params.TOOL|int]} SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=tool_selected VALUE={params.TOOL} SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=color_selected VALUE={params.TOOL} _ERCF_SERVO_DOWN {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Tool {params.TOOL} Enabled {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Could not select tool, ERCF is not homed {% endif %} {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_SELECT_TOOL | Could not select tool, _ERCF_PAUSE.is_paused = 1 <<< {% endif %} _alert_ercf_is_paused {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_SELECT_TOOL End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_SELECT_TOOL {% endif %} [gcode_macro _ERCF_UNSELECT_TOOL] description = Unselect tool_selected (set to -1) and, if FORCED=1, also unselects color_selected (sets to -1) (FORCED defaults to 1 if not passed) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ERCF_UNSELECT_TOOL func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ERCF_UNSELECT_TOOL Start ... {% endif %} {% set unselect_color = params.FORCED|default(1)|int %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_HOME"].home != -1 %} _ERCF_SERVO_UP SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=tool_selected VALUE=-1 {% if unselect_color == 1 %} SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=color_selected VALUE=-1 {% endif %} ERCF_SET_STEPS RATIO=1.0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Tool Unselected, Servo Raised {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Could not unselect tool, ERCF is not homed {% endif %} {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> _ERCF_UNSELECT_TOOL | _ERCF_PAUSE.is_paused = 1 <<< {% endif %} _alert_ercf_is_paused {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ERCF_UNSELECT_TOOL End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ERCF_UNSELECT_TOOL {% endif %} [gcode_macro ERCF_LOAD_FILAMENT_IN_EXTRUDER] description = Load filament from the toolhead entrance to the nozzle gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_LOAD_FILAMENT_IN_EXTRUDER func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_LOAD_FILAMENT_IN_EXTRUDER Start ... {% endif %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer.extruder.temperature >= printer["gcode_macro _ERCF_VAR"].min_temp_extruder %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Loading Filament... {% endif %} _ercf_syncd_th_load_unload MODIFIER=-7 _extruder_move_dwell ERCF_HOME_EXTRUDER TOTAL_LENGTH=30.0 STEP_LENGTH=0.5 _ERCF_UNSELECT_TOOL FORCED=0 ERCF_FINALIZE_LOAD LENGTH={printer["gcode_macro _ERCF_VAR"].sensor_to_nozzle|float} _reset_extruder go_absolute {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Load Complete {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Extruder too cold {% endif %} _ERCF_PAUSE {% endif %} {% else %} _alert_ercf_is_paused {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_LOAD_FILAMENT_IN_EXTRUDER End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_LOAD_FILAMENT_IN_EXTRUDER {% endif %} [gcode_macro ERCF_FORM_TIP_STANDALONE] description = Generic tip forming macro - mocking ss, presumably gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_FORM_TIP_STANDALONE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_FORM_TIP_STANDALONE Start ... {% endif %} {% set COOLING_TUBE_LENGTH = params.COOLING_TUBE_LENGTH|default(10) %} {% set COOLING_TUBE_RETRACTION = params.COOLING_TUBE_RETRACTION|default(30) %} {% set INITIAL_COOLING_SPEED = params.INITIAL_COOLING_SPEED|default(10) %} {% set FINAL_COOLING_SPEED = params.FINAL_COOLING_SPEED|default(50) %} {% set COOLING_MOVES = params.COOLING_MOVES|default(5) %} {% set TOOLCHANGE_TEMP = params.TOOLCHANGE_TEMP|default(0) %} {% set USE_SKINNYDIP = params.USE_SKINNYDIP|default(1) %} {% set USE_FAST_SKINNYDIP = params.USE_FAST_SKINNYDIP|default(1) %} {% set SKINNYDIP_DISTANCE = params.SKINNYDIP_DISTANCE|default(26) %} {% set DIP_INSERTION_SPEED = params.DIP_INSERTION_SPEED|default(33) %} {% set DIP_EXTRACTION_SPEED = params.DIP_EXTRACTION_SPEED|default(70) %} {% set MELT_ZONE_PAUSE = params.MELT_ZONE_PAUSE|default(0) %} {% set COOLING_ZONE_PAUSE = params.COOLING_ZONE_PAUSE|default(0) %} {% set UNLOADING_SPEED_START = params.UNLOADING_SPEED_START|default(199) %} {% set UNLOADING_SPEED = params.UNLOADING_SPEED|default(20) %} {% set RAMMING_VOLUME = params.RAMMING_VOLUME|default(0) %} {% set INITIAL_RETRACT = params.INITIAL_RETRACT|default(0) %} {% set FINAL_EJECT = params.FINAL_EJECT|default(0) %} go_relative _reset_extruder SET_PRESSURE_ADVANCE ADVANCE=0 {% set OLD_TEMP = printer.extruder.target %} {% if INITIAL_RETRACT|int == 1 %} G1 E-8.5000 F3000 {% endif %} {% set RATIO = (RAMMING_VOLUME|float) /23.0 %} G1 E{0.5784 * RATIO|float} F299 G1 E{0.5834 * RATIO|float} F302 G1 E{0.5918 * RATIO|float} F306 G1 E{0.6169 * RATIO|float} F319 G1 E{0.3393 * RATIO|float} F350 G1 E{0.3363 * RATIO|float} F350 G1 E{0.7577 * RATIO|float} F392 G1 E{0.8382 * RATIO|float} F434 G1 E{0.7776 * RATIO|float} F469 G1 E{0.1293 * RATIO|float} F469 G1 E{0.9673 * RATIO|float} F501 G1 E{1.0176 * RATIO|float} F527 G1 E{0.5956 * RATIO|float} F544 G1 E{0.4555 * RATIO|float} F544 G1 E{1.0662 * RATIO|float} F552 {% if TOOLCHANGE_TEMP|float > 0 and USE_FAST_SKINNYDIP|int == 0 %} _ercf_wait_he_temp TEMP={TOOLCHANGE_TEMP} {% endif %} {% set TOTAL_RETRACTION_DISTANCE = COOLING_TUBE_RETRACTION|float + COOLING_TUBE_LENGTH|float / 2 - 15 %} G1 E-15 F{1.0 * UNLOADING_SPEED_START|float * 60} G1 E-{0.7 * TOTAL_RETRACTION_DISTANCE} F{1.0 * UNLOADING_SPEED|float * 60} G1 E-{0.2 * TOTAL_RETRACTION_DISTANCE} F{0.5 * UNLOADING_SPEED|float * 60} G1 E-{0.1 * TOTAL_RETRACTION_DISTANCE} F{0.3 * UNLOADING_SPEED|float * 60} {% if TOOLCHANGE_TEMP|float > 0 and USE_FAST_SKINNYDIP|int == 1 %} _ercf_start_he_temp TEMP={TOOLCHANGE_TEMP} {% endif %} {% set SPEED_INC = (FINAL_COOLING_SPEED|float - INITIAL_COOLING_SPEED|float) / (2 * COOLING_MOVES|float - 1) %} {% for move in range(COOLING_MOVES|int) %} G1 E{COOLING_TUBE_LENGTH} F{(INITIAL_COOLING_SPEED|float + SPEED_INC*move*2) * 60} G1 E-{COOLING_TUBE_LENGTH} F{(INITIAL_COOLING_SPEED|float + SPEED_INC*(move*2+1)) * 60} {% endfor %} {% if TOOLCHANGE_TEMP|float > 0 and USE_FAST_SKINNYDIP|int == 0 %} _ercf_wait_he_temp TEMP={TOOLCHANGE_TEMP} {% endif %} {% if USE_SKINNYDIP|int == 1 %} G1 E{SKINNYDIP_DISTANCE} F{DIP_INSERTION_SPEED|float * 60} G4 P{MELT_ZONE_PAUSE} G1 E-{SKINNYDIP_DISTANCE} F{DIP_EXTRACTION_SPEED|float * 60} G4 P{COOLING_ZONE_PAUSE} {% endif %} {% if TOOLCHANGE_TEMP|float > 0 %} _ercf_start_he_temp TEMP={OLD_TEMP} {% endif %} {% if FINAL_EJECT|int == 1 %} _reset_extruder G1 E-80 F3000 {% endif %} _reset_extruder {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_FORM_TIP_STANDALONE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_FORM_TIP_STANDALONE {% endif %} [gcode_macro ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING] description = Unload filament from the nozzle to the toolhead entrance using generic tip forming macro gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING Start ... {% endif %} {% set ercf_params = printer.save_variables.variables %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} _ercf_set_eject_temp {% if printer.extruder.temperature > printer["gcode_macro _ERCF_VAR"].min_temp_extruder %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].tool_selected|int == -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Forming filament tip and Unloading Filament... {% endif %} go_relative ERCF_FORM_TIP_STANDALONE G1 E-4.00 F1200.0 G1 E-15.00 F2000 ERCF_HOME_EXTRUDER {% if params.RATIO|string != "" %} ERCF_SET_STEPS RATIO={params.RATIO|float} {% elif ercf_params['ercf_calib_%s' % (printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|string)]|string == "" %} ERCF_SET_STEPS RATIO=1.0 {% else %} ERCF_SET_STEPS RATIO={ercf_params['ercf_calib_%s' % (printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|string)]|float} {% endif %} _ERCF_SERVO_DOWN _ercf_syncd_th_load_unload RETRACT=1 MODIFIER={printer["gcode_macro _ERCF_VAR"].ercf_dual_unload_mod|float} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Filament out of TH throat {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Tool selected, UNSELECT it {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_debug %} M118 Tool selected, UNSELECT it {% endif %} {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 _ERCF_PAUSE {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Extruder too cold {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 _ERCF_PAUSE {% endif %} _ercf_restore_he_temp {% else %} save_variable VARIABLE=ercf_err_flag VALUE=1 _alert_ercf_is_paused {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING {% endif %} [gcode_macro ERCF_IS_FILAMENT_IN_EXTRUDER] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_IS_FILAMENT_IN_EXTRUDER func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_IS_FILAMENT_IN_EXTRUDER Start ... {% endif %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Filament is in extruder {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Filament not in extruder {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 _ERCF_PAUSE {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_IS_FILAMENT_IN_EXTRUDER End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_IS_FILAMENT_IN_EXTRUDER {% endif %} [gcode_macro ERCF_IS_FILAMENT_STUCK_IN_ERCF] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_IS_FILAMENT_STUCK_IN_ERCF func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_IS_FILAMENT_STUCK_IN_ERCF Start ... {% endif %} {% if printer.ercf.encoder_pos|float != 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Filament stuck in ERCF {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 _ERCF_PAUSE {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Filament not in ERCF {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_IS_FILAMENT_STUCK_IN_ERCF End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_IS_FILAMENT_STUCK_IN_ERCF {% endif %} [gcode_macro ERCF_EJECT_UNKNOW_STATE] description = Unload filament from an unknown position gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_EJECT_UNKNOW_STATE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_EJECT_UNKNOW_STATE Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% set ercf_params = printer.save_variables.variables %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF_EJECT_UNKNOW_STATE {% endif %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} _ercf_set_eject_temp {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Filament in extruder, trying to eject it .. {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Calling ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING {% endif %} {% set unload_ratio = ercf_params['ercf_calib_%s' % (printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|string)] %} {% if unload_ratio|string == "" %} {% set unload_ratio = 1.0 %} {% endif %} ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING RATIO={unload_ratio} ERCF_UNLOAD LENGTH={printer["gcode_macro _ERCF_VAR"].min_bowden_length - printer["gcode_macro _ERCF_VAR"].ercf_eject_unknow_state_len_mod - printer["gcode_macro _ERCF_VAR"].ercf_dual_unload_mod|float} UNKNOWN=1 _ercf_restore_he_temp {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 No filament detected in TH, calling _ERCF_SERVO_DOWN {% endif %} _ERCF_SERVO_DOWN {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF_BUZZ_GEAR_MOTOR {% endif %} ERCF_BUZZ_GEAR_MOTOR {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF_EJECT_FROM_BOWDEN {% endif %} ERCF_EJECT_FROM_BOWDEN {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_EJECT_UNKNOW_STATE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_EJECT_UNKNOW_STATE {% endif %} [gcode_macro ERCF_EJECT_FROM_BOWDEN] description = Unload filament from the reverse bowden - set/wait for HE temp, if filament detected in TH gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_EJECT_FROM_BOWDEN func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_EJECT_FROM_BOWDEN Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} _ercf_wait_eject_temp {% endif %} {% if printer.ercf.encoder_pos|float != 0 %} ERCF_UNLOAD HOMING=1 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Filament ejected {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Filament already ejected {% endif %} {% endif %} _ERCF_SERVO_UP _ercf_restore_he_temp {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_EJECT_FROM_BOWDEN End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_EJECT_FROM_BOWDEN {% endif %} [gcode_macro ERCF_HOME] description = Home the ERCF variable_home = -1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_HOME func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_HOME Start ... {% endif %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 SET_GCODE_VARIABLE MACRO=ERCF_HOME VARIABLE=home VALUE=1 {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 1 %} ERCF_UNLOCK {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Homing ERCF {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} QUERY_ENDSTOPS {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_EJECT_UNKNOW_STATE <<< {% endif %} ERCF_EJECT_UNKNOW_STATE {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_HOME_SELECTOR <<< {% endif %} ERCF_HOME_SELECTOR {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_HOME_ONLY <<< {% endif %} ERCF_HOME_ONLY {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_HOME End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_HOME {% endif %} [gcode_macro ERCF_HOME_SELECTOR] description = Home the ERCF selector gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_HOME_SELECTOR func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_HOME_SELECTOR Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> Homing selector <<< {% endif %} _ERCF_SERVO_UP {% set number_of_chan=printer["gcode_macro _ERCF_VAR"].colorselector|length %} {% set selector_length=(20.0 + 12*21.0 + (number_of_chan/3)*5.0) %} MANUAL_STEPPER STEPPER=selector_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=selector_stepper SPEED=100 MOVE=-{selector_length|float} STOP_ON_ENDSTOP=1 MANUAL_STEPPER STEPPER=selector_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=selector_stepper SPEED=100 MOVE=5.0 MANUAL_STEPPER STEPPER=selector_stepper SPEED=10 MOVE=-10.0 STOP_ON_ENDSTOP=1 MANUAL_STEPPER STEPPER=selector_stepper SET_POSITION=0 SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=tool_selected VALUE=-1 SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=color_selected VALUE=-1 SAVE_VARIABLE VARIABLE=ercf_selector_homed VALUE=1 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_HOME_SELECTOR End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_HOME_SELECTOR {% endif %} [gcode_macro ERCF_HOME_ONLY] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_HOME_ONLY func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_HOME_ONLY Start ... {% endif %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Test load filament in cart 0 {% endif %} ; ERCF_SELECT_TOOL TOOL=0 ERCF_SELECT_TOOL_dbg TOOL=0 ERCF_SET_STEPS RATIO=1.0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Loading filament to ERCF... {% endif %} ERCF_LOAD LENGTH={printer["gcode_macro _ERCF_VAR"].ercf_cart_load_length} ERCF_UNLOAD LENGTH={printer["gcode_macro _ERCF_VAR"].ercf_cart_unload_length} _ERCF_UNSELECT_TOOL SET_GCODE_VARIABLE MACRO=ERCF_HOME VARIABLE=home VALUE=1 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Homing ERCF ended ... {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Homing ERCF failed, ERCF is paused, run "ERCF_UNLOCK" to unlock it ... {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_HOME_ONLY End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_HOME_ONLY {% endif %} [gcode_macro ERCF_DISPLAY_ENCODER_POS] description = Display current value of the ERCF encoder gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_DISPLAY_ENCODER_POS func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_DISPLAY_ENCODER_POS Start ... {% endif %} M118 Encoder value is {printer['ercf'].encoder_pos|float} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_DISPLAY_ENCODER_POS End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_DISPLAY_ENCODER_POS {% endif %} [gcode_macro ERCF_TEST_MOVE_GEAR] description = Move the ERCF gear gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_TEST_MOVE_GEAR func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_TEST_MOVE_GEAR Start ... {% endif %} {% set move_length = params.LENGTH|default(0.0)|float %} {% set move_speed = params.SPEED|default(30.0)|float %} {% set move_accel = params.ACCEL|default(200.0)|float %} MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE={move_length|float} SPEED={move_speed|float} ACCEL={move_accel|float} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_TEST_MOVE_GEAR End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_TEST_MOVE_GEAR {% endif %} [gcode_macro ERCF_TEST_SERVO] description = Test the servo angle gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_TEST_SERVO func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_TEST_SERVO Start ... {% endif %} SET_SERVO SERVO=ercf_servo ANGLE={params.VALUE|float} _servo_move_dwell SET_SERVO SERVO=ercf_servo WIDTH=0.0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_TEST_SERVO End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_TEST_SERVO {% endif %} [gcode_macro ERCF_TEST_GRIP] description = Test the ERCF grip for a Tool gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_TEST_GRIP func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_TEST_GRIP Start ... {% endif %} _ERCF_SERVO_DOWN ERCF_MOTORS_OFF {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_TEST_GRIP End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_TEST_GRIP {% endif %} [gcode_macro ERCF_TEST_LOAD_SEQUENCE] description = Stock - Test sequence (wrapper proc added: ERCF_TEST_LOAD_SEQ - see _ercf_software_mods.cfg) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_TEST_LOAD_SEQUENCE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_TEST_LOAD_SEQUENCE Start ... {% endif %} {% set loop_number = params.LOOP|default(1)|int %} {% set use_rand = params.RAND|default(0)|int %} {% for iteration in range(loop_number|int) %} {% for load in range((printer["gcode_macro _ERCF_VAR"].colorselector|length)|int) %} {% if use_rand|int == 1 %} {% set rand_tool = range(0, printer["gcode_macro _ERCF_VAR"].colorselector|length)|random %} M118 Test Load on Cart {rand_tool|int} ; ERCF_SELECT_TOOL TOOL={rand_tool|int} ERCF_SELECT_TOOL_dbg TOOL={rand_tool|int} {% else %} M118 Test Load on Cart {load|int} ; ERCF_SELECT_TOOL TOOL={load|int} ERCF_SELECT_TOOL_dbg TOOL={load|int} {% endif %} ERCF_LOAD LENGTH={printer["gcode_macro _ERCF_VAR"].ercf_test_load_seq_len} ERCF_UNLOAD LENGTH={printer["gcode_macro _ERCF_VAR"].ercf_test_load_seq_len} _ERCF_UNSELECT_TOOL {% endfor %} {% endfor %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_TEST_LOAD_SEQUENCE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_TEST_LOAD_SEQUENCE {% endif %} [gcode_macro ERCF_ENCODER_MOTION_ISSUE] description = Perform a test when the encoder sense an issue (check for clog then assumes a runout) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_ENCODER_MOTION_ISSUE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_ENCODER_MOTION_ISSUE Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Issue on tool {printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Checking if this is a clog or a runout... {% endif %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 _ERCF_SERVO_DOWN ERCF_BUZZ_GEAR_MOTOR _ERCF_SERVO_UP ERCF_CLOG_OR_RUNOUT {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_ENCODER_MOTION_ISSUE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_ENCODER_MOTION_ISSUE {% endif %} [gcode_macro ERCF_CLOG_OR_RUNOUT] description = Actions taken if a clog or a runout is detected by the ERCF encoder gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CLOG_OR_RUNOUT func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CLOG_OR_RUNOUT Start ... {% endif %} {% if printer.ercf.encoder_pos|float != 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Clog detected, please check the ERCF and the printer {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 Runout detected... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].endless_spool_mode|int == 1 %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int >= (printer["gcode_macro _ERCF_VAR"].colorselector|length -1) %} {% set nexttool = 0 %} {% else %} {% set nexttool = (printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int + 1) %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 Loading tool {nexttool|int} {% endif %} SAVE_GCODE_STATE NAME=ERCF_Pre_Brush_init {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 Forming filament tip and Unloading Filament... {% endif %} go_relative ERCF_FORM_TIP_STANDALONE ERCF_HOME_EXTRUDER TOTAL_LENGTH={printer["gcode_macro _ERCF_VAR"].sensor_to_nozzle} STEP_LENGTH=2.0 _ERCF_SERVO_DOWN _ercf_syncd_th_load_unload RETRACT=1 {% set ercf_params = printer.save_variables.variables %} ERCF_SET_STEPS RATIO={ercf_params['ercf_calib_%s' % (printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|string)]} ERCF_UNLOAD LENGTH={ercf_params.ercf_calib_ref|float - printer["gcode_macro _ERCF_VAR"].end_of_bowden_to_sensor|float + printer["gcode_macro _ERCF_VAR"].unload_modifier|float} _ERCF_UNSELECT_TOOL ERCF_LOAD_TOOL TOOL={nexttool|int} ERCF_CHECK_IF_RESUME {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 EndlessSpool mode not enabled, please do something {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=1 {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CLOG_OR_RUNOUT End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CLOG_OR_RUNOUT {% endif %} [gcode_macro ERCF_CHECK_IF_RESUME] description = Safety checks before resuming the print after an encoder event gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CHECK_IF_RESUME func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CHECK_IF_RESUME Start ... {% endif %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 0 %} RESUME {% if printer["gcode_macro _ERCF_VAR"].clog_detection|int == 1 %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1 {% endif %} {% else %} _alert_ercf_is_paused save_variable VARIABLE=ercf_err_flag VALUE=1 {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CHECK_IF_RESUME End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CHECK_IF_RESUME {% endif %} [gcode_macro _ERCF_VAR] variable_end_of_bowden_to_sensor = 47 variable_sensor_to_nozzle = 41.5 variable_colorselector = [2.0,23.0,44.15, 70.5, 91.5, 112.0, 138.6, 159.5, 180.0, 206.5, 227.5, 248.5] variable_min_bowden_length = 945.0 variable_servo_up_angle = 30 variable_servo_down_angle = 80 variable_clog_detection = 0 variable_endless_spool_mode = 0 variable_ercf_cart_load_length = 45 variable_ercf_cart_unload_length = 68 variable_ercf_eject_unknow_state_len_mod = 50 variable_ercf_test_load_seq_len = 100 variable_ercf_th_load_len_mod = 0 variable_ercf_dual_unload_mod = 20 variable_ercf_verb_error = 1 variable_ercf_verb_info = 0 variable_ercf_verb_status = 0 variable_ercf_verb_debug = 0 variable_ercf_verb_codeflow = 0 variable_ercf_verb_loadunload = 0 variable_ercf_verb_motors = 0 variable_sync_feedrate = 1500 variable_sync_speed = 25 variable_sync_accel = 0 variable_home_ercf_at_boot = 0 variable_test_ercf_load_seq_at_boot = 0 variable_test_ercf_load_seq_at_print = 0 variable_ercf_servo_move_dwell = 200 variable_ercf_cart_move_dwell = 100 variable_ercf_gear_move_dwell = 100 variable_ercf_extruder_move_dwell = 100 variable_ercf_load_unload_dwell = 50 variable_unload_modifier = 9.0 variable_min_temp_extruder = 180 variable_extruder_eject_temp = 240 variable_timeout_pause = 72000 variable_disable_heater = 600 gcode = [delayed_gcode _ercf_module_start] initial_duration = 0.5 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_module_start func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _ercf_module_start Start <<< {% endif %} SAVE_VARIABLE VARIABLE=module_ercf_loaded VALUE=1 save_variable VARIABLE=ercf_err_flag VALUE=0 SET_GCODE_VARIABLE MACRO=ERCF_HOME VARIABLE=home VALUE=-1 {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _ercf_module_start End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_module_start {% endif %} [delayed_gcode _ercf_start_carthome] initial_duration = 0.0 gcode = _ercf_park_n_home [delayed_gcode _ercf_start_loadtest] initial_duration = 0.0 gcode = ERCF_TEST_LOAD_SEQ LOOP=1 [gcode_macro _servo_move_dwell] description = impute a dwell time to allow for the servo movement to complete gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_servo_move_dwell func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _servo_move_dwell Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> _servo_move_dwell {printer["gcode_macro _ERCF_VAR"].ercf_servo_move_dwell|int}mS <<< {% endif %} G4 P{printer["gcode_macro _ERCF_VAR"].ercf_servo_move_dwell|int} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _servo_move_dwell End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_servo_move_dwell {% endif %} [gcode_macro _cart_move_dwell] description = impute a dwell time to allow for the stepper movement to complete gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_cart_move_dwell func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _cart_move_dwell Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> _cart_move_dwell {printer["gcode_macro _ERCF_VAR"].ercf_cart_move_dwell|int}mS <<< {% endif %} G4 P{printer["gcode_macro _ERCF_VAR"].ercf_cart_move_dwell|int} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _cart_move_dwell End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_cart_move_dwell {% endif %} [gcode_macro _gear_move_dwell] description = impute a dwell time to allow for the stepper movement to complete gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_gear_move_dwell func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _gear_move_dwell Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> _gear_move_dwell {printer["gcode_macro _ERCF_VAR"].ercf_gear_move_dwell|int}mS <<< {% endif %} G4 P{printer["gcode_macro _ERCF_VAR"].ercf_gear_move_dwell|int} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _gear_move_dwell End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_gear_move_dwell {% endif %} [gcode_macro _extruder_move_dwell] description = impute a dwell time to allow for the extruder movement to complete gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_extruder_move_dwell func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _extruder_move_dwell Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> _extruder_move_dwell {printer["gcode_macro _ERCF_VAR"].ercf_extruder_move_dwell|int}mS <<< {% endif %} G4 P{printer["gcode_macro _ERCF_VAR"].ercf_extruder_move_dwell|int} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _extruder_move_dwell End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_extruder_move_dwell {% endif %} [gcode_macro _load_unload_dwell] description = impute a dwell time to allow for the extruder movement to complete gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_load_unload_dwell func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _load_unload_dwell Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> _load_unload_dwell {printer["gcode_macro _ERCF_VAR"].ercf_load_unload_dwell|int}mS <<< {% endif %} G4 P{printer["gcode_macro _ERCF_VAR"].ercf_load_unload_dwell|int} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _load_unload_dwell End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_load_unload_dwell {% endif %} [gcode_macro _ercf_ptr_startup] description = gcodes that are called during printer startup gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_ptr_startup func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].home_ercf_at_boot %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ___ ERCF Boot Home Start ___ {% endif %} UPDATE_DELAYED_GCODE ID=_ercf_start_carthome DURATION=5 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ___ ERCF Boot Home Complete ___ {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].test_ercf_load_seq_at_boot %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ___ ERCF Boot Fil Load Test Seq Start ___ {% endif %} UPDATE_DELAYED_GCODE ID=_ercf_start_loadtest DURATION=15 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ___ ERCF Boot Fil Load Test Seq Complete ___ {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_ptr_startup {% endif %} [gcode_macro _ercf_park_n_home] description = unload and home gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_park_n_home func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_park_n_home start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > _ercf_park_n_home Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro ERCF_HOME"].home == -1 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 _ ERCF not homed, home & park filament... _ {% endif %} ERCF_HOME {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 _ ERCF homed, park filament _ {% endif %} ERCF_EJECT_UNKNOW_STATE _ERCF_UNSELECT_TOOL {% set selector_axis_pos = printer["gcode_macro _ERCF_VAR"].colorselector[0]|float %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 >>> _ercf_park_n_home cart position -> {selector_axis_pos}mm <<< {% endif %} MANUAL_STEPPER STEPPER=selector_stepper MOVE={selector_axis_pos} SPEED=100 {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_park_n_home End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_park_n_home {% endif %} [gcode_macro _set_HE_heating_indication] description = annunciate heating taking place gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_set_HE_heating_indication func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _set_HE_heating_indication Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF Heating {% endif %} {% if printer.save_variables.variables.module_ledeff_loaded %} ; _set_ledeff_mode CHAIN=ercf_lights EFFECT=he_temp {% else %} ; ERCFLts_red {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _set_HE_heating_indication End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_set_HE_heating_indication {% endif %} [gcode_macro _clear_HE_heating_indication] description = deannunciate heating gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_clear_HE_heating_indication func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _clear_HE_heating_indication Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 ERCF Heated {% endif %} {% if printer.save_variables.variables.module_ledeff_loaded %} ; _set_ledeff_mode CHAIN=ercf_lights EFFECT=off {% else %} ; ERCFLts_off {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _clear_HE_heating_indication End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_clear_HE_heating_indication {% endif %} [gcode_macro _alert_ercf_is_paused] description = alerts user that ERCF is Paused and needs to be Unlocked gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_alert_ercf_is_paused func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _alert_ercf_is_paused Start ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 ERCF is paused, run "ERCF_UNLOCK" to unlock it ... {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _alert_ercf_is_paused End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_alert_ercf_is_paused {% endif %} [gcode_macro ercf_move_cart] description = move ercf cart to param C gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ercf_move_cart func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ercf_move_cart start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ercf_move_cart Skipped - an error condition is asserted < {% endif %} {% else %} _ercf_park_n_home {% set selector_axis_pos = printer["gcode_macro _ERCF_VAR"].colorselector[params.C|default(0)|int]|float %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 >>> ERCF_CART:{params.C|default(0)|int} -> {selector_axis_pos} <<< {% endif %} MANUAL_STEPPER STEPPER=selector_stepper MOVE={selector_axis_pos} SPEED=100 {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ercf_move_cart End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ercf_move_cart {% endif %} [gcode_macro ERCF_SELECT_TOOL_dbg] description = wrapper around ercf lib proc for error check so seq test procs can not run on blindly if an error exists. gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_SELECT_TOOL_dbg func_params='"{rawparams|string}"' {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_SELECT_TOOL {rawparams} Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_info %} M118 > ERCF_SELECT_TOOL TOOL={params.TOOL|int} < {% endif %} ERCF_SELECT_TOOL {rawparams} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_SELECT_TOOL_dbg {% endif %} [gcode_macro ERCF_TEST_LOAD_SEQ] description = wrapper code for ERCF_TEST_LOAD_SEQUENCE - homes at start, homes at end gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_TEST_LOAD_SEQ func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_TEST_LOAD_SEQ Start ... {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=0 _ercf_park_n_home ERCF_TEST_LOAD_SEQUENCE {rawparams} ercf_move_cart C=0 save_variable VARIABLE=ercf_err_flag VALUE=0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_TEST_LOAD_SEQ End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_TEST_LOAD_SEQ {% endif %} [gcode_macro ERCF_LOAD] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity, and adds a dwell rename_existing = _ERCF_LOAD_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_LOAD func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_LOAD Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_LOAD Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_loadunload %} M118 vvv ERCF_LOAD {rawparams} {% endif %} _ERCF_LOAD_STOCK {rawparams} _load_unload_dwell {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_LOAD End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_LOAD {% endif %} [gcode_macro ERCF_UNLOAD] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity, and adds a dwell rename_existing = _ERCF_UNLOAD_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_UNLOAD func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_UNLOAD Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_UNLOAD Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_loadunload %} M118 ^^^ ERCF_UNLOAD {rawparams} {% endif %} _ERCF_UNLOAD_STOCK {rawparams} _load_unload_dwell {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_UNLOAD End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_UNLOAD {% endif %} [gcode_macro ERCF_BUZZ_GEAR_MOTOR] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity, and adds a dwell rename_existing = _ERCF_BUZZ_GEAR_MOTOR_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_BUZZ_GEAR_MOTOR func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_BUZZ_GEAR_MOTOR Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_BUZZ_GEAR_MOTOR Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 > ERCF_BUZZ_GEAR_MOTOR {rawparams} < {% endif %} _ERCF_BUZZ_GEAR_MOTOR_STOCK {rawparams} _gear_move_dwell {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_BUZZ_GEAR_MOTOR End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_BUZZ_GEAR_MOTOR {% endif %} [gcode_macro ERCF_HOME_EXTRUDER] description = wrapper of a ERCF.py fw proc rename_existing = _ERCF_HOME_EXTRUDER_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_HOME_EXTRUDER func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_HOME_EXTRUDER Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_HOME_EXTRUDER Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_loadunload %} M118 ERCF_HOME_EXTRUDER {rawparams} {% endif %} _ERCF_HOME_EXTRUDER_STOCK {rawparams} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_HOME_EXTRUDER End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_HOME_EXTRUDER {% endif %} [gcode_macro ERCF_CALIBRATE_ENCODER] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity rename_existing = _ERCF_CALIBRATE_ENCODER_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_CALIBRATE_ENCODER func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_CALIBRATE_ENCODER Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_CALIBRATE_ENCODER Skipped - an error condition is asserted < {% endif %} {% else %} _ERCF_CALIBRATE_ENCODER_STOCK {rawparams} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_CALIBRATE_ENCODER End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_CALIBRATE_ENCODER {% endif %} [gcode_macro ERCF_RESET_ENCODER_COUNTS] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity rename_existing = _ERCF_RESET_ENCODER_COUNTS_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_RESET_ENCODER_COUNTS func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_RESET_ENCODER_COUNTS Start ... {% endif %} {% set svv = printer.save_variables.variables %} _ERCF_RESET_ENCODER_COUNTS_STOCK {rawparams} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_RESET_ENCODER_COUNTS End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_RESET_ENCODER_COUNTS {% endif %} [gcode_macro ERCF_SET_STEPS] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity rename_existing = _ERCF_SET_STEPS_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_SET_STEPS func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_SET_STEPS Start ... {% endif %} {% set svv = printer.save_variables.variables %} _ERCF_SET_STEPS_STOCK {rawparams} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_SET_STEPS End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_SET_STEPS {% endif %} [gcode_macro ERCF_GET_SELECTOR_POS] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity rename_existing = _ERCF_GET_SELECTOR_POS_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_GET_SELECTOR_POS func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_GET_SELECTOR_POS Start ... {% endif %} _ERCF_GET_SELECTOR_POS_STOCK {rawparams} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_GET_SELECTOR_POS End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_GET_SELECTOR_POS {% endif %} [gcode_macro ERCF_MOVE_SELECTOR] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity rename_existing = _ERCF_MOVE_SELECTOR_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_MOVE_SELECTOR func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_MOVE_SELECTOR Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_MOVE_SELECTOR Skipped - an error condition is asserted < {% endif %} {% else %} _ERCF_MOVE_SELECTOR_STOCK {rawparams} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_MOVE_SELECTOR End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_MOVE_SELECTOR {% endif %} [gcode_macro ERCF_ENDLESSSPOOL_UNLOAD] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity rename_existing = _ERCF_ENDLESSSPOOL_UNLOAD_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_ENDLESSSPOOL_UNLOAD func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_ENDLESSSPOOL_UNLOAD Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_ENDLESSSPOOL_UNLOAD Skipped - an error condition is asserted < {% endif %} {% else %} _ERCF_ENDLESSSPOOL_UNLOAD_STOCK {rawparams} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_ENDLESSSPOOL_UNLOAD End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_ENDLESSSPOOL_UNLOAD {% endif %} [gcode_macro ERCF_FINALIZE_LOAD] description = wrapper for ERCF.py fw proc to handle error conditions, verbosity rename_existing = _ERCF_FINALIZE_LOAD_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_FINALIZE_LOAD func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_FINALIZE_LOAD Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > ERCF_FINALIZE_LOAD Skipped - an error condition is asserted < {% endif %} {% else %} _ERCF_FINALIZE_LOAD_STOCK {rawparams} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_FINALIZE_LOAD End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_FINALIZE_LOAD {% endif %} [gcode_macro MANUAL_STEPPER] description = wrapper for FW proc to handle error conditions, verbosity, and conditionally dwell rename_existing = _MANUAL_STEPPER_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=MANUAL_STEPPER func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> MANUAL_STEPPER Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag and params.ENABLE|default(1)|int %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > MANUAL_STEPPER Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> MANUAL_STEPPER {rawparams} <<< {% endif %} _MANUAL_STEPPER_STOCK {rawparams} {% if params.SET_POSITION|default("")|string != "" or params.ENABLE|default(1)|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> No motor dwell: SET_POSITION:{params.SET_POSITION|default("")|string} ENABLE:{params.ENABLE|default(1)|int} SYNC:{params.SYNC|default(1)|int} <<< {% endif %} {% elif params.STEPPER|string|lower == "selector_stepper" and params.NODWELL|default(0)|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> a cart move cmd <<< {% endif %} _cart_move_dwell {% elif params.STEPPER|string|lower == "gear_stepper" and params.NODWELL|default(0)|int == 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> a gear move cmd <<< {% endif %} _gear_move_dwell {% elif params.NODWELL|default(0)|int != 0 %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> a NODWELL cmd <<< {% endif %} {% else %} M118 ___ unexpected command: manual_stepper {rawparams} ___ {%endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... MANUAL_STEPPER End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=MANUAL_STEPPER {% endif %} [gcode_macro SET_SERVO] description = wrapper for FW proc to handle error conditions, verbosity, and conditionally dwell rename_existing = _SET_SERVO_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=SET_SERVO func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> SET_SERVO Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_err_flag and params.WIDTH|default(1)|int %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > SET_SERVO Skipped - an error condition is asserted < {% endif %} {% else %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_motors %} M118 >>> SET_SERVO {rawparams} <<< {% endif %} _SET_SERVO_STOCK {rawparams} {% if params.ANGLE|default("")|string != "" or params.WIDTH|default("0.0")|string != "0.0" %} _servo_move_dwell {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... SET_SERVO End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=SET_SERVO {% endif %} [gcode_macro _ercf_set_eject_temp] description = set extruder to eject temp before load/unload gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_set_eject_temp func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_set_eject_temp Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if printer.extruder.temperature < printer["gcode_macro _ERCF_VAR"].extruder_eject_temp %} {% if svv.ercf_he_temp_restore_val %} {% else %} save_variable variable=ercf_he_temp_restore_val value={svv.extruder_temp_setting} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> ERCF_CHANGE_TOOL HE Temp raise to eject temp <<< {% endif %} _ercf_wait_he_temp TEMP={printer["gcode_macro _ERCF_VAR"].extruder_eject_temp} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_set_eject_temp End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_set_eject_temp {% endif %} [gcode_macro _ercf_restore_he_temp] description = restore extruder temp after a load/unload raise to eject temp gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_restore_he_temp func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_restore_he_temp Start ... {% endif %} {% set svv = printer.save_variables.variables %} {% if svv.ercf_he_temp_restore_val %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_status %} M118 >>> _ercf_restore_he_temp: {svv.ercf_he_temp_restore_val} <<< {% endif %} _ercf_wait_he_temp TEMP={svv.ercf_he_temp_restore_val} save_variable variable=ercf_he_temp_restore_val value=0 {% else %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_restore_he_temp End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_restore_he_temp {% endif %} [gcode_macro _ercf_wait_he_temp] description = set he temp to passed TEMP (int) parameter and wait gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_wait_he_temp func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_wait_he_temp Start ... {% endif %} _set_HE_heating_indication M109 S{params.TEMP|int} _clear_HE_heating_indication {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_wait_he_temp End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_wait_he_temp {% endif %} [gcode_macro _ercf_start_he_temp] description = set he temp to passed TEMP (int) parameter and carry on (no wait) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_start_he_temp func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_start_he_temp Start ... {% endif %} M104 S{params.TEMP|int} _ercf_temp_ind_check_cycle {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_start_he_temp End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_start_he_temp {% endif %} [gcode_macro _ercf_start_Cold_temp] description = set he temp to 0 and carry on (no wait) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_start_Cold_temp func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_start_Cold_temp Start ... {% endif %} M104 S0 _clear_HE_heating_indication {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_start_Cold_temp End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_start_Cold_temp {% endif %} [delayed_gcode _ercf_temp_ind_check_cycle] initial_duration = 0 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_temp_ind_check_cycle func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_temp_ind_check_cycle Start ... {% endif %} {% if printer.extruder.target|int != printer.extruder.temperature|int %} _set_HE_heating_indication UPDATE_DELAYED_GCODE ID=_ercf_temp_ind_check_cycle DURATION=3 {% else %} UPDATE_DELAYED_GCODE ID=_ercf_temp_ind_check_cycle DURATION=0 _clear_HE_heating_indication {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_temp_ind_check_cycle End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_temp_ind_check_cycle {% endif %} [gcode_macro _ercf_syncd_th_load_unload] description = perform syncronous retract/extrude move of ercf gear motor and extruder motor for unload/load of filament to/from top of th inlet from/to th_sensor gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ercf_syncd_th_load_unload func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> _ercf_syncd_th_load_unload Start ... {% endif %} {% if svv.ercf_err_flag %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_error %} M118 > _ercf_syncd_th_load_unload Skipped - an error condition is asserted < {% endif %} {% else %} go_relative _reset_extruder MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE={"-" if params.RETRACT|default(0)|int else ""}{printer["gcode_macro _ERCF_VAR"].end_of_bowden_to_sensor|float + params.MODIFIER|default(0)|float} SPEED={printer["gcode_macro _ERCF_VAR"].sync_speed|float} ACCEL={printer["gcode_macro _ERCF_VAR"].sync_accel|float} SYNC=0 NODWELL=1 G1 E{"-" if params.RETRACT|default(0)|int else ""}{printer["gcode_macro _ERCF_VAR"].end_of_bowden_to_sensor|float + params.MODIFIER|default(0)|float} F{printer["gcode_macro _ERCF_VAR"].sync_feedrate|float} _gear_move_dwell {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... _ercf_syncd_th_load_unload End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ercf_syncd_th_load_unload {% endif %} [gcode_macro ERCF_TEST_LOAD_CART] description = Test load sequence on a single Cart (param is C) - home at start, home at end gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=ERCF_TEST_LOAD_CART func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 >>> ERCF_TEST_LOAD_CART Start ... {% endif %} save_variable VARIABLE=ercf_err_flag VALUE=0 _ercf_park_n_home ERCF_SELECT_TOOL_dbg TOOL={params.C|int} ERCF_LOAD LENGTH={printer["gcode_macro _ERCF_VAR"].ercf_test_load_seq_len} ERCF_UNLOAD LENGTH={printer["gcode_macro _ERCF_VAR"].ercf_test_load_seq_len} _ERCF_UNSELECT_TOOL ercf_move_cart C=0 save_variable VARIABLE=ercf_err_flag VALUE=0 {% if printer["gcode_macro _ERCF_VAR"].ercf_verb_codeflow %} M118 ... ERCF_TEST_LOAD_CART End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=ERCF_TEST_LOAD_CART {% endif %} [gcode_macro ERCF_SERVO_DOWN] description = for macro purposes gcode = _ERCF_SERVO_DOWN {rawparams} [gcode_macro ERCF_SERVO_UP] description = for macro purposes gcode = _ERCF_SERVO_UP {rawparams} [gcode_macro _scrub_vars] description = nozzle scrub vars macro variable_scrub_err_flag = 0 variable_scrub_verb_error = 1 variable_scrub_verb_info = 0 variable_scrub_verb_status = 0 variable_scrub_verb_debug = 0 variable_scrub_verb_codeflow = 0 gcode = [delayed_gcode _scrub_module_start] initial_duration = 0.5 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_scrub_module_start func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _scrub_module_start Start <<< {% endif %} SAVE_VARIABLE VARIABLE=module_scrub_loaded VALUE=1 SAVE_VARIABLE VARIABLE=scrub_err_flag VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _scrub_module_start End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_scrub_module_start {% endif %} [gcode_macro clean_nozzle] variable_verbose = False variable_location_bucket_rear = True variable_enable_purge = False variable_purge_len = 10 variable_purge_spd = 150 variable_purge_temp_min = 180 variable_purge_ret = 2 variable_ooze_dwell = 2 variable_brush_top = 4 variable_clearance_z = 5 variable_wipe_qty = 3 variable_prep_spd_xy = 15000 variable_prep_spd_z = 3000 variable_wipe_spd_xy = 15000 variable_brush_start = 84 variable_brush_width = 34 variable_brush_front = 0 variable_brush_depth = 0 variable_bucket_left_width = 92 variable_bucket_right_width = 40 variable_bucket_gap = 22 variable_bucket_start = 0 variable_bucket_pos = 1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=clean_nozzle func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _scrub_vars"].scrub_verb_codeflow %} M118 >>> clean_nozzle Start <<< {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"scrubbing"' {% if printer["gcode_macro _scrub_vars"].scrub_verb_status %} M118 >>> scrubbing <<< {% endif %} {% set svv = printer.save_variables.variables %} {% set doneX = params.DX|default(-9999999)|float %} {% set doneY = params.DY|default(-9999999)|float %} {% set doneZ = params.DZ|default(-9999999)|float %} {% if printer["gcode_macro _scrub_vars"].scrub_verb_info %} M118 >>> clean_nozzle params: DX:{params.DX} DY:{params.DY} DZ:{params.DZ} <<< {% endif %} {% set x_entry = printer.toolhead.position.x|float %} {% set y_entry = printer.toolhead.position.y|float %} {% set z_entry = printer.toolhead.position.z|float %} {% if printer["gcode_macro _scrub_vars"].scrub_verb_info %} M118 >>> clean_nozzle Entry from: X:{x_entry} Y:{y_entry} Z:{z_entry} <<< {% endif %} ; {% set exit_z = [svv.maxz|float,doneZ|float,z_entry|float]|max|float %} {% set exit_z = z_entry|float %} {% if printer["gcode_macro _scrub_vars"].scrub_verb_info %} M118 >>> clean_nozzle exit_z: {exit_z} (max of svv.maxz {svv.maxz} | doneZ {doneZ} | z_entry: {z_entry} ) <<< {% endif %} {% if "xyz" in printer.toolhead.homed_axes %} SAVE_GCODE_STATE NAME=clean_nozzle go_absolute {% set Ry = printer.configfile.config["stepper_y"]["position_max"]|float %} {% if enable_purge %} SET_GCODE_VARIABLE MACRO=clean_nozzle VARIABLE=bucket_pos VALUE={(range(2) | random)} G1 Z{brush_top + clearance_z} F{prep_spd_z} {% if location_bucket_rear %} G1 Y{Ry} F{prep_spd_xy} {% else %} G1 Y{brush_front + (brush_depth / 2)} F{prep_spd_xy} {% endif %} G1 X{bucket_start + (bucket_left_width / (2 - bucket_pos)) + (bucket_pos * bucket_gap) + (bucket_pos * (bucket_right_width / 2))} {% if printer.extruder.temperature >= purge_temp_min %} {% if verbose %} M118 CLEAN_NOZZLE - {"Purging " + purge_len + "mm @ " + purge_spd + "mm/min..."} {% endif %} go_relative G1 E{purge_len} F{purge_spd} G1 E-{purge_ret} F{purge_spd * 5} G4 P{ooze_dwell * 1000} go_absolute _reset_extruder {% else %} {% if verbose %} M118 CLEAN_NOZZLE - No Purge due to Low Temp... {% endif %} {% endif %} {% else %} {% if verbose %} M118 CLEAN_NOZZLE - Purge Disabled... {% endif %} {% endif %} go_relative G1 Z+10 F{prep_spd_z} go_absolute G1 X{brush_start + (brush_width * bucket_pos)} Y{Ry} F{prep_spd_xy} G1 Z{brush_top + clearance_z} F{prep_spd_z} G1 Z{brush_top} F{prep_spd_z} {% for wipes in range(1, (wipe_qty + 1)) %} G1 X{brush_start + (brush_width * (1 - bucket_pos))} F{wipe_spd_xy} G1 X{brush_start + (brush_width * bucket_pos)} F{wipe_spd_xy} {% endfor %} M117 Cleaned! G1 Z{exit_z} F{prep_spd_z} G1 X{x_entry} Y{y_entry} F{prep_spd_xy} ; {% if doneX != -9999999.0 %} ; {% if doneY != -9999999.0 %} ; {% if printer["gcode_macro _scrub_vars"].scrub_verb_info %} M118 >>> both doneX/doneY asserted - restoring to doneX:{doneX}/doneY:{doneY} <<< {% endif %} ; G1 X{doneX} Y{doneY} F{prep_spd_xy} ; {% else %} ; {% if printer["gcode_macro _scrub_vars"].scrub_verb_info %} M118 >>> only doneX asserted - restoring to doneX:{doneX}/Y_entry:{y_entry} <<< {% endif %} ; G1 X{doneX} Y{y_entry}F{prep_spd_xy} ; {% endif %} ; {% else %} ; {% if doneY != -9999999.0 %} ; {% if printer["gcode_macro _scrub_vars"].scrub_verb_info %} M118 >>> only doneY asserted - restoring to X_entry:{x_entry}/doneY:{doneY} <<< {% endif %} ; G1 X{x_entry} Y{doneY} F{prep_spd_xy} ; {% else %} ; {% if printer["gcode_macro _scrub_vars"].scrub_verb_info %} M118 >>> no done asserted - restoring to X_entry:{x_entry}/Y_entry:{y_entry} <<< {% endif %} ; G1 X{x_entry} Y{y_entry} F{prep_spd_xy} ; {% endif %} ; {% endif %} RESTORE_GCODE_STATE NAME=clean_nozzle SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"scrubbed"' {% if printer["gcode_macro _scrub_vars"].scrub_verb_status %} M118 >>> scrubbed <<< {% endif %} {% else %} {% if printer["gcode_macro _scrub_vars"].scrub_verb_error %} M118 >>> Not Homed <<< {% endif %} M117 Please home first! {action_raise_error("Please home your axes.") } {% endif %} {% if printer["gcode_macro _scrub_vars"].scrub_verb_codeflow %} M118 >>> clean_nozzle End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=clean_nozzle {% endif %} [tmc2209 stepper_x] uart_pin = PC4 interpolate = False run_current = 1.414 sense_resistor = 0.110 stealthchop_threshold = 0 [tmc2209 stepper_y] uart_pin = PD11 interpolate = False run_current = 1.414 sense_resistor = 0.110 stealthchop_threshold = 0 [tmc2209 stepper_z] uart_pin = PC6 interpolate = False run_current = 1.2 hold_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 1 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = False run_current = 1.2 hold_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 1 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = False run_current = 1.2 hold_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 1 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = False run_current = 1.2 hold_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 1 [tmc2209 extruder] uart_pin = PE1 interpolate = False run_current = 0.85 hold_current = 0.05 sense_resistor = 0.110 stealthchop_threshold = 0 [board_pins] aliases = EXP1_1=PE8, EXP1_2=PE7, EXP1_3=PE9, EXP1_4=PE10, EXP1_5=PE12, EXP1_6=PE13, EXP1_7=PE14, EXP1_8=PE15, EXP1_9=, EXP1_10=<5V>, EXP2_1=PA6, EXP2_2=PA5, EXP2_3=PB1, EXP2_4=PA4, EXP2_5=PB2, EXP2_6=PA7, EXP2_7=PC15, EXP2_8=, EXP2_9=, EXP2_10=<5V> [display] lcd_type = uc1701 cs_pin = EXP1_3 a0_pin = EXP1_4 rst_pin = EXP1_5 encoder_pins = ^EXP2_5, ^EXP2_3 click_pin = ^!EXP1_2 contrast = 63 spi_software_miso_pin = EXP2_1 spi_software_mosi_pin = EXP2_6 spi_software_sclk_pin = EXP2_2 [menu __main __filament __clean] type = command name = Clean Nozzle gcode = clean_nozzle [thermistor MHz_B3950] temperature1 = 25.0 resistance1 = 103180.0 temperature2 = 150.0 resistance2 = 1366.2 temperature3 = 250.0 resistance3 = 168.6 [thermistor Duct] temperature1 = 25 resistance1 = 10000 beta = 3950 [thermistor Chamber] temperature1 = 25 resistance1 = 100000 beta = 3950 [thermistor PS] temperature1 = 25 resistance1 = 100000 beta = 3950 [thermistor H2O] temperature1 = 25 resistance1 = 10000 beta = 3950 [temperature_sensor Hotend_H2O] sensor_type = H2O sensor_pin = pico:gpio26 min_temp = 10 max_temp = 120 gcode_id = H2O [temperature_sensor Host] sensor_type = temperature_host min_temp = 10 max_temp = 100 gcode_id = Host [probe] pin = ^PG11 x_offset = 0 y_offset = 19.75 z_offset = 6.42 speed = 8.0 samples = 3 samples_result = median sample_retract_dist = 2.0 samples_tolerance = 0.01 samples_tolerance_retries = 3 [heater_bed] heater_pin = PA1 sensor_type = MHz_B3950 sensor_pin = PF3 pwm_cycle_time = 0.01666 max_power = 1 min_temp = 0 max_temp = 125 control = pid pid_kp = 37.631 pid_ki = 1.280 pid_kd = 276.590 [stepper_x] step_pin = PF13 dir_pin = PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 16 full_steps_per_rotation = 400 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350.05 homing_speed = 100 homing_retract_dist = 5 homing_positive_dir = true [stepper_y] step_pin = PG0 dir_pin = PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 16 full_steps_per_rotation = 400 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350.05 homing_speed = 100 homing_retract_dist = 5 homing_positive_dir = true [stepper_z] step_pin = PF11 dir_pin = PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 16 endstop_pin = PG10 position_max = 300 position_min = -5 homing_speed = 15 homing_retract_speed = 25 second_homing_speed = 10 homing_retract_dist = 2.0 position_endstop = 0.705 [stepper_z1] step_pin = PG4 dir_pin = !PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 16 [stepper_z2] step_pin = PF9 dir_pin = PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 16 [stepper_z3] step_pin = PC13 dir_pin = !PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 16 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 34.2060721875 gear_ratio = 7.5:1 microsteps = 16 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 max_extrude_only_velocity = 7200 max_extrude_only_accel = 800 max_extrude_only_distance = 200 max_extrude_cross_section = 50.0 heater_pin = PA2 sensor_type = PT1000 sensor_pin = PF4 min_temp = 0 max_temp = 375 max_power = 1.0 min_extrude_temp = 170 pressure_advance = 0.035 pressure_advance_smooth_time = 0.040 control = pid pid_kp = 17.665 pid_ki = 0.885 pid_kd = 88.107 [fan] pin = PA8 max_power = 1.0 shutdown_speed = 0 hardware_pwm = False kick_start_time = 0.1 off_below = 0.1 [heater_fan H2O_Pump] pin = pico:gpio20 max_power = 1.0 kick_start_time = 0.1 tachometer_pin = ^pico:gpio19 tachometer_ppr = 2 tachometer_poll_interval = 0.003 heater = extruder heater_temp = 50.0 fan_speed = 1.0 [heater_fan H2O_Flow] pin = pico:gpio17 max_power = 1.0 kick_start_time = 0.1 tachometer_pin = ^pico:gpio21 tachometer_ppr = 1 tachometer_poll_interval = 0.005 heater = extruder heater_temp = 50.0 fan_speed = 1.0 [heater_fan H2O_RadFan] pin = pico:gpio15 max_power = 1.0 kick_start_time = 0.1 tachometer_pin = ^pico:gpio16 tachometer_ppr = 2 tachometer_poll_interval = 0.003 heater = extruder heater_temp = 50.0 fan_speed = 1.0 [temperature_fan MCU_Fan] pin = PD12 control = pid pid_kp = 40 pid_ki = 0.2 pid_kd = 0.1 pid_deriv_time = 2.0 target_temp = 40 sensor_type = temperature_mcu min_temp = 10 max_temp = 90 max_speed = 1.0 min_speed = 0.0 max_power = 1.0 shutdown_speed = 1 hardware_pwm = False kick_start_time = 0.1 off_below = 0.1 gcode_id = MCU [temperature_fan PS_Fan] pin = PD13 control = pid pid_kp = 40 pid_ki = 0.2 pid_kd = 0.1 pid_deriv_time = 2.0 target_temp = 35.0 sensor_type = PS sensor_pin = PF7 min_temp = 10 max_temp = 90 max_speed = 1.0 min_speed = 0.0 max_power = 1.0 shutdown_speed = 1 hardware_pwm = False kick_start_time = 0.1 off_below = 0.1 gcode_id = PS [temperature_fan Chamber] pin = PD15 control = watermark max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 0.1 off_below = 0.0 hardware_pwm = False sensor_type = Duct sensor_pin = PF5 min_temp = 10 max_temp = 90 target_temp = 40 max_speed = 1.0 gcode_id = Chamber [temperature_fan Exhaust] pin = PD14 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 0.1 off_below = 0.0 hardware_pwm = False sensor_type = Chamber sensor_pin = PF6 control = watermark min_temp = 10 max_temp = 90 target_temp = 60.0 max_speed = 1.0 gcode_id = Exhaust [gcode_macro M1170] description = workaround for fixing a zero-based layer display - slicer is zero-based, gray matter is 1-based... gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M1170 func_params='"{rawparams|string}"' {% endif %} M117 L:{(params.L|int + 1)|int}/{params.T|int}|{(printer.virtual_sdcard.progress*100)|round(2,'common')}% {% set layer_chg_msg = "L:" ~ (params.L|int + 1)|int ~ "/" ~ params.T|int ~ "|" ~ printer.virtual_sdcard.file_position ~ " | " ~ (printer.virtual_sdcard.progress*100)|round(2,'common') ~ "%: X:" ~ printer.toolhead.position.x|round(3,'common') ~ " Y:" ~ printer.toolhead.position.y|round(3,'common') ~ " Z:" ~ printer.toolhead.position.z|round(3,'common') %} M118 {layer_chg_msg} Save_Variable VARIABLE=last_layer_chg_msg VALUE='"{layer_chg_msg}"' {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M1170 {% endif %} [gcode_macro M118] description = To trap/wrap FW M118 w/ action_respond_info vs. FW's implementation (supports numeric/special char starts) rename_existing = M118.1 gcode = { action_respond_info(rawparams) } [gcode_macro M1181] description = To implement a more expressive tool change notification (called at tool change start, hence the +1 on swaps) gcode = {% set svv = printer.save_variables.variables %} {% if params.CE|int < 0 %} M118 Swap {svv.ercf_swaps + 1} (Initial Load): T{params.NE|int} @ {printer.virtual_sdcard.file_position} | {(printer.virtual_sdcard.progress*100)|round(2,'common')}% {% elif params.CE == params.NE %} {% else %} M118 Swap {svv.ercf_swaps + 1}: T{params.CE|int} -> T{params.NE|int} @ {printer.virtual_sdcard.file_position} | {(printer.virtual_sdcard.progress*100)|round(2,'common')}% {% endif %} [gcode_macro testmacro] description = testing jinja2 operations & :expressions gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=testmacro func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> testmacro <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 sonoff_ipaddr:{ printer.save_variables.variables.sonoff_ipaddr } {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=testmacro {% endif %} [gcode_macro wcdaymode] description = Kill IR LEDs/Deploy IR Filter gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=wcdaymode func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> wcdaymode <<< {% endif %} RUN_SHELL_COMMAND CMD=wcv2_ircut_on RUN_SHELL_COMMAND CMD=wcv2_irled_off {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=wcdaymode {% endif %} [gcode_macro wcnightmode] description = Enable IR LEDs/Stow IR Filter gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=wcnightmode func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> wcnightmode <<< {% endif %} RUN_SHELL_COMMAND CMD=wcv2_ircut_off RUN_SHELL_COMMAND CMD=wcv2_irled_on {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=wcnightmode {% endif %} [gcode_macro power_on_printer] description = Power on the printer gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=power_on_printer func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> RUN_SHELL_COMMAND CMD=power_on_printer <<< {% endif %} RUN_SHELL_COMMAND CMD=power_on_printer {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> RUN_SHELL_COMMAND CMD=restore_configs <<< {% endif %} RUN_SHELL_COMMAND CMD=restore_configs {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=power_on_printer {% endif %} [gcode_macro power_off_printer] description = Power off the printer gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=power_off_printer func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> RUN_SHELL_COMMAND CMD=power_off_printer <<< {% endif %} RUN_SHELL_COMMAND CMD=power_off_printer {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=power_off_printer {% endif %} [gcode_macro go_absolute] description = does a G90 - just for readability's sake gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=go_absolute func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> ABSOLUTE <<< {% endif %} G90 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=go_absolute {% endif %} [gcode_macro go_relative] description = does a G91 - just for readability's sake gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=go_relative func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> RELATIVE <<< {% endif %} G91 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=go_relative {% endif %} [gcode_macro Z_Probe_Calibrate] description = hmm - just found another probe thing in klickyp-probe gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Z_Probe_Calibrate func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Z_Probe_Calibrate <<< {% endif %} _ENSURE_QGL PROBE_CALIBRATE {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Z_Probe_Calibrate {% endif %} [gcode_macro Z_Calibrate] description = Automatically calibrates the nozzles offset to the print surface (used in Print_Start) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Z_Calibrate func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Z_Calibrate <<< {% endif %} _ENSURE_QGL CALIBRATE_Z {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Z_Calibrate {% endif %} [gcode_macro Z_EndStop_Accuracy] description = Probe Z-Endstop accuracy at Nozzle-Endstop position gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Z_EndStop_Accuracy func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Z_EndStop_Accuracy <<< {% endif %} _ENSURE_QGL PROBE_Z_ACCURACY {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Z_EndStop_Accuracy {% endif %} [gcode_macro Z_Probe_Accuracy] description = Test and report Probe accuracy at current location, moving to 175,175 if outside of bed gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Z_Probe_Accuracy func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Z_Probe_Accuracy <<< {% endif %} {% set max_x = printer["gcode_macro _User_Variables"].max_bed_x %} {% set max_y = printer["gcode_macro _User_Variables"].max_bed_y %} {% set probe_offset_x = printer['configfile'].config["probe"]["x_offset"]|float %} {% set probe_offset_y = printer['configfile'].config["probe"]["y_offset"]|float %} _ENSURE_QGL {% if printer['gcode_move'].position.y > (max_y - probe_offset_y) or printer['gcode_move'].position.y < probe_offset_y or printer['gcode_move'].position.x > (max_x - probe_offset_x) or printer['gcode_move'].position.x < probe_offset_x %} M118 Z_Probe_Accuracy - PROBE_CALIBRATE requires probe above the BED - moving to bed center... go_absolute G0 X{(max_x / 2)} Y{(max_y / 2)} F15000 {% endif%} PROBE_ACCURACY PROBE_SPEED=10 SAMPLES=5 SAMPLE_RETRACT_DIST=2 LIFT_SPEED=15 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Z_Probe_Accuracy {% endif %} [gcode_macro system_shutdown] description = Power off the entire system (printer AND host) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=system_shutdown func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> system_shutdown <<< {% endif %} RUN_SHELL_COMMAND CMD=backup_configs RUN_SHELL_COMMAND CMD=power_off_printer RUN_SHELL_COMMAND CMD=system_shutdown {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=system_shutdown {% endif %} [delayed_gcode delayed_printer_off] initial_duration = 0. gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=delayed_printer_off func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> delayed_printer_off <<< {% endif %} {% if printer.idle_timeout.state == "Idle" %} RUN_SHELL_COMMAND CMD=backup_configs RUN_SHELL_COMMAND CMD=power_off_printer {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=delayed_printer_off {% endif %} [gcode_macro _PrintLED_Off] description = Extinguish the Halo Sw Red LED gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_PrintLED_Off func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _PrintLED_Off <<< {% endif %} SET_PIN PIN=_sw_red_led VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_PrintLED_Off {% endif %} [gcode_macro _PrintLED_On] description = Illuminate the Halo Sw Red LED gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_PrintLED_On func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _PrintLED_On <<< {% endif %} SET_PIN PIN=_sw_red_led VALUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_PrintLED_On {% endif %} [gcode_macro _IdleLED_Off] description = Extinguish the Halo Sw Greeen LED gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_IdleLED_Off func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _IdleLED_Off <<< {% endif %} SET_PIN PIN=_sw_grn_led VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_IdleLED_Off {% endif %} [gcode_macro _IdleLED_On] description = Illuminate the Halo Sw Green LED gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_IdleLED_On func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _IdleLED_On <<< {% endif %} SET_PIN PIN=_sw_grn_led VALUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_IdleLED_On {% endif %} [gcode_macro _PwrLED_Off] description = Extinguish the Halo Sw Blue LED gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_PwrLED_Off func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _PwrLED_Off <<< {% endif %} SET_PIN PIN=_sw_blu_led VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_PwrLED_Off {% endif %} [gcode_macro _PwrLED_On] description = Illuminate the Halo Sw Blue LED gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_PwrLED_On func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _PwrLED_On <<< {% endif %} SET_PIN PIN=_sw_blu_led VALUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_PwrLED_On {% endif %} [gcode_macro PrintLED_Off] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PrintLED_Off func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> PrintLED_Off <<< {% endif %} _PrintLED_Off {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PrintLED_Off {% endif %} [gcode_macro PrintLED_On] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PrintLED_On func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> PrintLED_On <<< {% endif %} _PrintLED_On {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PrintLED_On {% endif %} [gcode_macro IdleLED_Off] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=IdleLED_Off func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> IdleLED_Off <<< {% endif %} _IdleLED_Off {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=IdleLED_Off {% endif %} [gcode_macro IdleLED_On] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=IdleLED_On func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> IdleLED_On <<< {% endif %} _IdleLED_On {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=IdleLED_On {% endif %} [gcode_macro PwrLED_Off] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PwrLED_Off func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> PwrLED_Off <<< {% endif %} _PwrLED_Off {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PwrLED_Off {% endif %} [gcode_macro PwrLED_On] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PwrLED_On func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> PwrLED_On <<< {% endif %} _PwrLED_On {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PwrLED_On {% endif %} [gcode_macro disable_steppers] description = Disable Stepper Motors gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=disable_steppers func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> disable_steppers <<< {% endif %} SAVE_VARIABLE VARIABLE=z_axis_cal VALUE=0 SAVE_VARIABLE VARIABLE=ercf_selector_homed VALUE=0 SAVE_VARIABLE VARIABLE=maxz VALUE=0.0 M18 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=disable_steppers {% endif %} [gcode_macro _HOURMETER_OFF] description = Turn Hour Meter Off gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_HOURMETER_OFF func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _HOURMETER_OFF <<< {% endif %} SET_PIN PIN=_hourmeter VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_HOURMETER_OFF {% endif %} [gcode_macro _HOURMETER_ON] description = Turn Hour Meter On gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_HOURMETER_ON func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _HOURMETER_ON <<< {% endif %} SET_PIN PIN=_hourmeter VALUE=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_HOURMETER_ON {% endif %} [gcode_macro HOURMETER_TOGGLE] description = Toggle Hour Meter gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=HOURMETER_TOGGLE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> HOURMETER_TOGGLE <<< {% endif %} {% if printer["output_pin _hourmeter"].value == 1 %} _HOURMETER_OFF {% else %} _HOURMETER_ON {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=HOURMETER_TOGGLE {% endif %} [gcode_macro save_conf] description = Execute a Save Configuration gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=save_conf func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> save_conf <<< {% endif %} SAVE_CONFIG {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=save_conf {% endif %} [gcode_macro DO_BED_MESH] description = Heat bed and then perform a bed mesh sequence variable_bed_temp = 60 variable_extruder_temp = 230 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=DO_BED_MESH func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> DO_BED_MESH <<< {% endif %} M117 Heating... M140 S{bed_temp} M104 S{extruder_temp} M190 S{bed_temp} M109 S{extruder_temp} _PrintLED_On M300 _ENSURE_QGL BED_MESH_CALIBRATE G28 M300 M300 _PrintLED_Off SAVE_CONFIG {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=DO_BED_MESH {% endif %} [gcode_macro _ENSURE_HOMED] description = Home only if needed - no wasted cycles/power gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ENSURE_HOMED func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> ENSURING HOMED <<< {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"checking_home"' {% if "z" not in printer.toolhead.homed_axes %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 Homing {% endif %} G28 SAVE_VARIABLE VARIABLE=z_axis_cal VALUE=0 {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"home_checked"' {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> ENSURED HOMED <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ENSURE_HOMED {% endif %} [gcode_macro _ENSURE_QGL] description = QGL only if needed - no wasted cycles/power gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_ENSURE_QGL func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _ENSURE_QGL <<< {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"checking_qgl"' _ENSURE_HOMED {% if not printer.quad_gantry_level.applied %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 QGL'g {% endif %} QUAD_GANTRY_LEVEL SAVE_VARIABLE VARIABLE=z_axis_cal VALUE=0 {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"qgl_checked"' {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 qgl_checked {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_ENSURE_QGL {% endif %} [gcode_macro M141] description = Implement a pseudo chamber heat control gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M141 func_params='"{rawparams|string}"' {% endif %} {% set ch_tmp_tgt = params.S|default(0)|int %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 >>> M141 S{ch_tmp_tgt} <<< {% endif %} SET_TEMPERATURE_FAN_TARGET temperature_fan=Exhaust target={ch_tmp_tgt} min_speed=0.0 max_speed=1.0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M141 {% endif %} [gcode_macro _reset_extruder] description = for readability - execute G92 E0 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_reset_extruder func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> _reset_extruder <<< {% endif %} G92 E0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_reset_extruder {% endif %} [output_pin _hourmeter] pin = PB11 pwm = false shutdown_value = 0 value = 0 [output_pin _BEEPER_pin] pin = PE8 pwm = True value = 0 shutdown_value = 0 cycle_time = 0.024 [output_pin _Alarm_pin] pin = pico:gpio18 pwm = False value = 0 shutdown_value = 0 [gcode_macro sng_] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_ {% endif %} M117 Playing ___ M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_ {% endif %} [gcode_macro sng_classical] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_classical {% endif %} M117 Classical M3001 S659.255 P125 M3001 S622.254 P125 M3001 S659.255 P125 M3001 S622.254 P125 M3001 S659.255 P125 M3001 S493.883 P125 M3001 S587.33 P125 M3001 S523.251 P125 M3001 S440 P500 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_classical {% endif %} [gcode_macro sng_imperialmarch] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_imperialmarch {% endif %} M117 Imperial March M3001 S195.998 P250 M3001 S195.998 P250 M3001 S195.998 P250 M3001 S155.563 P125 G4 P62.5 M3001 S233.082 P62.5 M3001 S195.998 P250 M3001 S155.563 P125 G4 P62.5 M3001 S233.082 P62.5 M3001 S195.998 P500 M3001 S293.665 P250 M3001 S293.665 P250 M3001 S293.665 P250 M3001 S311.127 P125 G4 P62.5 M3001 S246.942 P62.5 M3001 S184.997 P250 M3001 S155.563 P125 G4 P62.5 M3001 S233.082 P62.5 M3001 S195.998 P500 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_imperialmarch {% endif %} [gcode_macro sng_simpons] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_simpons {% endif %} M117 The Simpons M3001 S0 P46 M3001 S1046 P562 M3001 S1317 P375 M3001 S1480 P375 M3001 S1760 P187 M3001 S1566 P562 M3001 S1319 P375 M3001 S1046 P375 M3001 S880 P187 M3001 S740 P187 M3001 S740 P187 M3001 S740 P187 M3001 S784 P750 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_simpons {% endif %} [gcode_macro sng_reveille] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_reveille {% endif %} M117 Reveille Bitch M3001 P125 S392 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S523 M3001 P250 S659 M3001 P125 S523 M3001 P125 S392 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S392 M3001 P333 S523 M3001 P42 S0 M3001 P125 S659 M3001 P125 S659 M3001 P125 S659 M3001 P125 S659 M3001 P125 S659 M3001 P250 S784 M3001 P125 S659 M3001 P125 S523 M3001 P125 S659 M3001 P125 S523 M3001 P125 S659 M3001 P125 S523 M3001 P250 S659 M3001 P125 S523 M3001 P125 S659 M3001 P125 S659 M3001 P125 S659 M3001 P125 S659 M3001 P125 S659 M3001 P250 S784 M3001 P125 S659 M3001 P125 S523 M3001 P125 S659 M3001 P125 S523 M3001 P125 S392 M3001 P125 S392 M3001 P333 S523 M3001 P42 S0 M3001 P125 S392 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S523 M3001 P250 S659 M3001 P125 S523 M3001 P125 S392 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S659 M3001 P125 S523 M3001 P63 S659 M3001 P63 S523 M3001 P125 S392 M3001 P125 S392 M3001 P333 S523 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_reveille {% endif %} [gcode_macro sng_taps] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_taps {% endif %} M117 Taps M3001 P643 S294 M3001 P214 S294 M3001 P2571 S392 M3001 P643 S294 M3001 P214 S392 M3001 P2571 S494 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P2571 S494 M3001 P643 S392 M3001 P214 S494 M3001 P1714 S587 M3001 P1714 S494 M3001 P1714 S392 M3001 P4286 S294 M3001 P643 S294 M3001 P214 S294 M3001 P6000 S392 M3001 P643 S294 M3001 P214 S294 M3001 P2571 S392 M3001 P643 S294 M3001 P214 S392 M3001 P2571 S494 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P2571 S494 M3001 P643 S392 M3001 P214 S494 M3001 P1714 S587 M3001 P1714 S494 M3001 P1714 S392 M3001 P4286 S294 M3001 P643 S294 M3001 P214 S294 M3001 P6000 S392 M3001 P643 S294 M3001 P214 S294 M3001 P857 S392 M3001 P643 S294 M3001 P214 S294 M3001 P857 S392 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P857 S494 M3001 P643 S294 M3001 P214 S392 M3001 P2571 S494 M3001 P643 S392 M3001 P214 S494 M3001 P1714 S587 M3001 P1714 S494 M3001 P1714 S392 M3001 P4286 S294 M3001 P643 S294 M3001 P214 S294 M3001 P5991 S392 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_taps {% endif %} [gcode_macro sng_badboys] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_badboys {% endif %} M117 wutchyagonnadue? M3001 P20 S100 M3001 P147 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P121 S622 M3001 P50 S0 M3001 P170 S587 M3001 P114 S523 M3001 P57 S0 M3001 P170 S587 M3001 P103 S523 M3001 P67 S0 M3001 P170 S440 M3001 P121 S523 M3001 P50 S0 M3001 P170 S440 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P662 S0 M3001 P341 S311 M3001 P170 S294 M3001 P170 S262 M3001 P170 S294 M3001 P170 S262 M3001 P341 S220 M3001 P341 S196 M3001 P341 S208 M3001 P522 S220 M3001 P160 S0 M3001 P53 S196 M3001 P117 S0 M3001 P60 S196 M3001 P281 S0 M3001 P67 S196 M3001 P103 S0 M3001 P64 S196 M3001 P107 S0 M3001 P82 S196 M3001 P430 S0 M3001 P67 S220 M3001 P103 S0 M3001 P67 S220 M3001 P273 S0 M3001 P60 S220 M3001 P110 S0 M3001 P85 S220 M3001 P85 S0 M3001 P75 S220 M3001 P437 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P124 S110 M3001 P46 S0 M3001 P20 S100 M3001 P150 S0 M3001 P170 S82 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P170 S220 M3001 P170 S196 M3001 P170 S165 M3001 P170 S196 M3001 P170 S220 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P170 S330 M3001 P92 S65 M3001 P78 S0 M3001 P170 S294 M3001 P170 S262 M3001 P170 S294 M3001 P170 S262 M3001 P170 S220 M3001 P121 S196 M3001 P50 S0 M3001 P170 S392 M3001 P92 S49 M3001 P78 S0 M3001 P170 S415 M3001 P20 S100 M3001 P150 S0 M3001 P170 S440 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P117 S110 M3001 P53 S0 M3001 P20 S100 M3001 P150 S0 M3001 P170 S82 M3001 P20 S100 M3001 P150 S0 M3001 P110 S440 M3001 P60 S0 M3001 P170 S523 M3001 P96 S622 M3001 P75 S0 M3001 P103 S587 M3001 P67 S0 M3001 P170 S587 M3001 P78 S98 M3001 P92 S0 M3001 P170 S523 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P146 S62 M3001 P25 S0 M3001 P89 S65 M3001 P82 S0 M3001 P78 S65 M3001 P92 S0 M3001 P89 S65 M3001 P82 S0 M3001 P85 S65 M3001 P85 S0 M3001 P89 S65 M3001 P82 S0 M3001 P60 S65 M3001 P110 S0 M3001 P78 S65 M3001 P92 S0 M3001 P170 S196 M3001 P85 S49 M3001 P85 S0 M3001 P170 S208 M3001 P20 S100 M3001 P150 S0 M3001 P170 S220 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P124 S110 M3001 P46 S0 M3001 P20 S100 M3001 P150 S0 M3001 P170 S82 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P149 S247 M3001 P21 S0 M3001 P170 S220 M3001 P170 S196 M3001 P170 S165 M3001 P170 S196 M3001 P170 S220 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P170 S330 M3001 P92 S65 M3001 P78 S0 M3001 P149 S294 M3001 P21 S0 M3001 P138 S262 M3001 P32 S0 M3001 P170 S294 M3001 P170 S262 M3001 P170 S220 M3001 P78 S65 M3001 P92 S0 M3001 P170 S196 M3001 P85 S49 M3001 P85 S0 M3001 P170 S208 M3001 P20 S100 M3001 P150 S0 M3001 P170 S220 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M3001 P149 S0 M3001 P2 S100 M3001 P20 S100 M3001 P150 S0 M3001 P20 S100 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_badboys {% endif %} [gcode_macro sng_mch2] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_mch2 {% endif %} M117 MCH2 M3001 P229 S294 M3001 P214 S370 M3001 P8 S440 M3001 P201 S73 M3001 P16 S110 M3001 P5 S294 M3001 P125 S370 M3001 P104 S0 M3001 P214 S440 M3001 P10 S370 M3001 P3 S110 M3001 P3 S147 M3001 P5 S220 M3001 P211 S294 M3001 P8 S110 M3001 P201 S440 M3001 P8 S165 M3001 P10 S220 M3001 P10 S330 M3001 P125 S277 M3001 P76 S0 M3001 P211 S440 M3001 P5 S139 M3001 P3 S165 M3001 P3 S220 M3001 P5 S277 M3001 P229 S330 M3001 P5 S73 M3001 P203 S440 M3001 P3 S110 M3001 P3 S147 M3001 P5 S294 M3001 P417 S370 M3001 P16 S587 M3001 P5 S110 M3001 P203 S147 M3001 P5 S370 M3001 P10 S440 M3001 P375 S294 M3001 P21 S0 M3001 P16 S370 M3001 P8 S147 M3001 P201 S92 M3001 P214 S392 M3001 P219 S440 M3001 P3 S165 M3001 P13 S220 M3001 P5 S277 M3001 P198 S330 M3001 P201 S440 M3001 P3 S165 M3001 P16 S220 M3001 P10 S330 M3001 P198 S139 M3001 P13 S110 M3001 P206 S392 M3001 P3 S277 M3001 P10 S330 M3001 P13 S165 M3001 P125 S220 M3001 P260 S0 M3001 P5 S139 M3001 P3 S165 M3001 P219 S220 M3001 P8 S73 M3001 P193 S294 M3001 P5 S110 M3001 P250 S147 M3001 P169 S0 M3001 P3 S92 M3001 P5 S110 M3001 P232 S147 M3001 P404 S73 M3001 P3 S110 M3001 P8 S147 M3001 P10 S294 M3001 P203 S92 M3001 P229 S370 M3001 P5 S73 M3001 P198 S440 M3001 P3 S110 M3001 P13 S147 M3001 P5 S220 M3001 P3 S294 M3001 P219 S370 M3001 P211 S440 M3001 P5 S110 M3001 P3 S147 M3001 P3 S220 M3001 P5 S294 M3001 P232 S370 M3001 P8 S440 M3001 P188 S110 M3001 P5 S165 M3001 P10 S220 M3001 P16 S330 M3001 P198 S277 M3001 P201 S440 M3001 P13 S220 M3001 P5 S139 M3001 P3 S165 M3001 P3 S277 M3001 P224 S330 M3001 P3 S73 M3001 P195 S440 M3001 P3 S110 M3001 P8 S147 M3001 P10 S370 M3001 P411 S294 M3001 P21 S587 M3001 P5 S110 M3001 P10 S147 M3001 P193 S92 M3001 P5 S73 M3001 P5 S294 M3001 P5 S370 M3001 P391 S440 M3001 P5 S110 M3001 P3 S147 M3001 P216 S370 M3001 P203 S392 M3001 P10 S440 M3001 P182 S110 M3001 P21 S165 M3001 P3 S220 M3001 P13 S277 M3001 P141 S330 M3001 P57 S0 M3001 P193 S440 M3001 P5 S165 M3001 P29 S220 M3001 P8 S139 M3001 P161 S330 M3001 P26 S0 M3001 P5 S110 M3001 P193 S392 M3001 P10 S330 M3001 P3 S220 M3001 P250 S277 M3001 P154 S0 M3001 P3 S165 M3001 P125 S220 M3001 P104 S0 M3001 P8 S73 M3001 P198 S294 M3001 P10 S147 M3001 P125 S110 M3001 P286 S0 M3001 P5 S92 M3001 P3 S110 M3001 P29 S147 M3001 P5 S185 M3001 P195 S220 M3001 P393 S73 M3001 P5 S587 M3001 P5 S110 M3001 P198 S147 M3001 P219 S554 M3001 P5 S98 M3001 P188 S494 M3001 P5 S147 M3001 P65 S196 M3001 P167 S0 M3001 P8 S294 M3001 P182 S392 M3001 P5 S147 M3001 P10 S196 M3001 P242 S123 M3001 P8 S98 M3001 P177 S494 M3001 P203 S196 M3001 P16 S392 M3001 P159 S294 M3001 P10 S147 M3001 P10 S196 M3001 P125 S123 M3001 P122 S0 M3001 P10 S440 M3001 P167 S147 M3001 P10 S185 M3001 P250 S220 M3001 P156 S0 M3001 P3 S185 M3001 P10 S494 M3001 P206 S220 M3001 P5 S440 M3001 P391 S147 M3001 P3 S185 M3001 P3 S220 M3001 P195 S587 M3001 P221 S554 M3001 P8 S98 M3001 P185 S494 M3001 P3 S147 M3001 P221 S196 M3001 P5 S294 M3001 P172 S392 M3001 P5 S147 M3001 P10 S196 M3001 P221 S123 M3001 P10 S98 M3001 P164 S494 M3001 P229 S587 M3001 P10 S196 M3001 P3 S123 M3001 P125 S147 M3001 P34 S0 M3001 P10 S147 M3001 P125 S196 M3001 P120 S0 M3001 P10 S440 M3001 P188 S110 M3001 P5 S220 M3001 P5 S277 M3001 P250 S330 M3001 P151 S0 M3001 P10 S277 M3001 P5 S165 M3001 P3 S220 M3001 P206 S330 M3001 P336 S110 M3001 P29 S0 M3001 P3 S220 M3001 P10 S294 M3001 P8 S139 M3001 P172 S165 M3001 P227 S370 M3001 P8 S440 M3001 P193 S73 M3001 P5 S110 M3001 P3 S147 M3001 P10 S370 M3001 P8 S220 M3001 P198 S294 M3001 P208 S440 M3001 P5 S92 M3001 P5 S110 M3001 P3 S147 M3001 P3 S220 M3001 P5 S294 M3001 P219 S370 M3001 P10 S440 M3001 P193 S110 M3001 P5 S165 M3001 P3 S220 M3001 P8 S277 M3001 P198 S330 M3001 P182 S440 M3001 P8 S220 M3001 P8 S139 M3001 P3 S165 M3001 P3 S277 M3001 P206 S330 M3001 P8 S73 M3001 P188 S440 M3001 P3 S110 M3001 P3 S294 M3001 P10 S370 M3001 P125 S147 M3001 P234 S0 M3001 P21 S587 M3001 P5 S110 M3001 P214 S147 M3001 P3 S73 M3001 P8 S294 M3001 P354 S440 M3001 P21 S0 M3001 P5 S110 M3001 P10 S370 M3001 P125 S147 M3001 P73 S0 M3001 P195 S392 M3001 P10 S440 M3001 P174 S110 M3001 P3 S165 M3001 P29 S220 M3001 P13 S277 M3001 P185 S330 M3001 P198 S440 M3001 P10 S277 M3001 P5 S165 M3001 P174 S330 M3001 P39 S0 M3001 P172 S392 M3001 P206 S330 M3001 P13 S220 M3001 P172 S165 M3001 P125 S139 M3001 P109 S0 M3001 P18 S294 M3001 P177 S73 M3001 P3 S185 M3001 P10 S220 M3001 P5 S110 M3001 P125 S147 M3001 P242 S0 M3001 P3 S110 M3001 P16 S147 M3001 P3 S185 M3001 P206 S220 M3001 P5 S92 M3001 P16 S147 M3001 P250 S73 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_mch2 {% endif %} [gcode_macro sng_mch] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_mch {% endif %} M117 MCH M3001 P229 S294 M3001 P214 S370 M3001 P8 S440 M3001 P201 S73 M3001 P16 S110 M3001 P5 S294 M3001 P125 S370 M3001 P104 S0 M3001 P214 S440 M3001 P10 S370 M3001 P3 S110 M3001 P3 S147 M3001 P5 S220 M3001 P211 S294 M3001 P8 S110 M3001 P201 S440 M3001 P8 S165 M3001 P10 S220 M3001 P10 S330 M3001 P125 S277 M3001 P76 S0 M3001 P211 S440 M3001 P5 S139 M3001 P3 S165 M3001 P3 S220 M3001 P5 S277 M3001 P229 S330 M3001 P5 S73 M3001 P203 S440 M3001 P3 S110 M3001 P3 S147 M3001 P5 S294 M3001 P417 S370 M3001 P16 S587 M3001 P5 S110 M3001 P203 S147 M3001 P5 S370 M3001 P10 S440 M3001 P375 S294 M3001 P21 S0 M3001 P16 S370 M3001 P8 S147 M3001 P201 S92 M3001 P214 S392 M3001 P219 S440 M3001 P3 S165 M3001 P13 S220 M3001 P5 S277 M3001 P198 S330 M3001 P201 S440 M3001 P3 S165 M3001 P16 S220 M3001 P10 S330 M3001 P198 S139 M3001 P13 S110 M3001 P206 S392 M3001 P3 S277 M3001 P10 S330 M3001 P13 S165 M3001 P125 S220 M3001 P260 S0 M3001 P5 S139 M3001 P3 S165 M3001 P219 S220 M3001 P8 S73 M3001 P193 S294 M3001 P5 S110 M3001 P250 S147 M3001 P169 S0 M3001 P3 S92 M3001 P5 S110 M3001 P232 S147 M3001 P404 S73 M3001 P3 S110 M3001 P8 S147 M3001 P10 S294 M3001 P203 S92 M3001 P229 S370 M3001 P5 S73 M3001 P198 S440 M3001 P3 S110 M3001 P13 S147 M3001 P5 S220 M3001 P3 S294 M3001 P219 S370 M3001 P211 S440 M3001 P5 S110 M3001 P3 S147 M3001 P3 S220 M3001 P5 S294 M3001 P232 S370 M3001 P8 S440 M3001 P188 S110 M3001 P5 S165 M3001 P10 S220 M3001 P16 S330 M3001 P198 S277 M3001 P201 S440 M3001 P13 S220 M3001 P5 S139 M3001 P3 S165 M3001 P3 S277 M3001 P224 S330 M3001 P3 S73 M3001 P195 S440 M3001 P3 S110 M3001 P8 S147 M3001 P10 S370 M3001 P411 S294 M3001 P21 S587 M3001 P5 S110 M3001 P10 S147 M3001 P193 S92 M3001 P5 S73 M3001 P5 S294 M3001 P5 S370 M3001 P391 S440 M3001 P5 S110 M3001 P3 S147 M3001 P216 S370 M3001 P203 S392 M3001 P10 S440 M3001 P182 S110 M3001 P21 S165 M3001 P3 S220 M3001 P13 S277 M3001 P141 S330 M3001 P57 S0 M3001 P193 S440 M3001 P5 S165 M3001 P29 S220 M3001 P8 S139 M3001 P161 S330 M3001 P26 S0 M3001 P5 S110 M3001 P193 S392 M3001 P10 S330 M3001 P3 S220 M3001 P250 S277 M3001 P154 S0 M3001 P3 S165 M3001 P125 S220 M3001 P104 S0 M3001 P8 S73 M3001 P198 S294 M3001 P10 S147 M3001 P125 S110 M3001 P286 S0 M3001 P5 S92 M3001 P3 S110 M3001 P29 S147 M3001 P5 S185 M3001 P195 S220 M3001 P393 S73 M3001 P5 S587 M3001 P5 S110 M3001 P198 S147 M3001 P219 S554 M3001 P5 S98 M3001 P188 S494 M3001 P5 S147 M3001 P65 S196 M3001 P167 S0 M3001 P8 S294 M3001 P182 S392 M3001 P5 S147 M3001 P10 S196 M3001 P242 S123 M3001 P8 S98 M3001 P177 S494 M3001 P203 S196 M3001 P16 S392 M3001 P159 S294 M3001 P10 S147 M3001 P10 S196 M3001 P125 S123 M3001 P122 S0 M3001 P10 S440 M3001 P167 S147 M3001 P10 S185 M3001 P250 S220 M3001 P156 S0 M3001 P3 S185 M3001 P10 S494 M3001 P206 S220 M3001 P5 S440 M3001 P391 S147 M3001 P3 S185 M3001 P3 S220 M3001 P195 S587 M3001 P221 S554 M3001 P8 S98 M3001 P185 S494 M3001 P3 S147 M3001 P221 S196 M3001 P5 S294 M3001 P172 S392 M3001 P5 S147 M3001 P10 S196 M3001 P221 S123 M3001 P10 S98 M3001 P164 S494 M3001 P229 S587 M3001 P10 S196 M3001 P3 S123 M3001 P125 S147 M3001 P34 S0 M3001 P10 S147 M3001 P125 S196 M3001 P120 S0 M3001 P10 S440 M3001 P188 S110 M3001 P5 S220 M3001 P5 S277 M3001 P250 S330 M3001 P151 S0 M3001 P10 S277 M3001 P5 S165 M3001 P3 S220 M3001 P206 S330 M3001 P336 S110 M3001 P29 S0 M3001 P3 S220 M3001 P10 S294 M3001 P8 S139 M3001 P172 S165 M3001 P227 S370 M3001 P8 S440 M3001 P193 S73 M3001 P5 S110 M3001 P3 S147 M3001 P10 S370 M3001 P8 S220 M3001 P198 S294 M3001 P208 S440 M3001 P5 S92 M3001 P5 S110 M3001 P3 S147 M3001 P3 S220 M3001 P5 S294 M3001 P219 S370 M3001 P10 S440 M3001 P193 S110 M3001 P5 S165 M3001 P3 S220 M3001 P8 S277 M3001 P198 S330 M3001 P182 S440 M3001 P8 S220 M3001 P8 S139 M3001 P3 S165 M3001 P3 S277 M3001 P206 S330 M3001 P8 S73 M3001 P188 S440 M3001 P3 S110 M3001 P3 S294 M3001 P10 S370 M3001 P125 S147 M3001 P234 S0 M3001 P21 S587 M3001 P5 S110 M3001 P214 S147 M3001 P3 S73 M3001 P8 S294 M3001 P354 S440 M3001 P21 S0 M3001 P5 S110 M3001 P10 S370 M3001 P125 S147 M3001 P73 S0 M3001 P195 S392 M3001 P10 S440 M3001 P174 S110 M3001 P3 S165 M3001 P29 S220 M3001 P13 S277 M3001 P185 S330 M3001 P198 S440 M3001 P10 S277 M3001 P5 S165 M3001 P174 S330 M3001 P39 S0 M3001 P172 S392 M3001 P206 S330 M3001 P13 S220 M3001 P172 S165 M3001 P125 S139 M3001 P109 S0 M3001 P18 S294 M3001 P177 S73 M3001 P3 S185 M3001 P10 S220 M3001 P5 S110 M3001 P125 S147 M3001 P242 S0 M3001 P3 S110 M3001 P16 S147 M3001 P3 S185 M3001 P206 S220 M3001 P5 S92 M3001 P16 S147 M3001 P250 S73 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_mch {% endif %} [gcode_macro sng_cena] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_cena {% endif %} M117 Cena M3001 s2800 p300 M3001 s2900 p100 M3001 s2400 p250 M3001 s2700 p1500 M3001 s3000 p300 M3001 s2900 p100 M3001 s2400 p250 M3001 s2700 p1500 M3001 s2800 p300 M3001 s2900 p100 M3001 s2400 p250 M3001 s2700 p1500 M3001 s3000 p300 M3001 s2900 p100 M3001 s2400 p250 M3001 s2700 p1500 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_cena {% endif %} [gcode_macro sng_scom] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_scom {% endif %} M117 SCOM M3001 S294 P200 M3001 S588 P200 M3001 S440 P200 M3001 S392 P200 M3001 S784 P200 M3001 S440 P200 M3001 S740 P200 M3001 S440 P200 M3001 S294 P200 M3001 S588 P200 M3001 S440 P200 M3001 S392 P200 M3001 S784 P200 M3001 S440 P200 M3001 S740 P200 M3001 S440 P200 M3001 S330 P200 M3001 S588 P200 M3001 S440 P200 M3001 S392 P200 M3001 S784 P200 M3001 S440 P200 M3001 S740 P200 M3001 S440 P200 M3001 S330 P200 M3001 S588 P200 M3001 S440 P200 M3001 S392 P200 M3001 S784 P200 M3001 S440 P200 M3001 S740 P200 M3001 S440 P200 M3001 S392 P200 M3001 S588 P200 M3001 S440 P200 M3001 S392 P200 M3001 S784 P200 M3001 S440 P200 M3001 S740 P200 M3001 S440 P200 M3001 S392 P200 M3001 S588 P200 M3001 S440 P200 M3001 S392 P200 M3001 S784 P200 M3001 S440 P200 M3001 S740 P200 M3001 S440 P200 M3001 S294 P800 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_scom {% endif %} [gcode_macro sng_startup] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_startup {% endif %} M117 Startup M3001 S1174 P125 M3001 S1174 P125 M3001 S2349 P125 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_startup {% endif %} [gcode_macro sng_mario] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_mario {% endif %} M117 Mario M3001 S1046 P150 M3001 S1318 P150 M3001 S1567 P150 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_mario {% endif %} [gcode_macro sng_empire] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_empire {% endif %} M117 Empire M3001 S392 P436 M3001 S0 P109 M3001 S392 P436 M3001 S0 P109 M3001 S392 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P872 M3001 S0 P218 M3001 S587 P436 M3001 S0 P109 M3001 S587 P436 M3001 S0 P109 M3001 S587 P436 M3001 S0 P109 M3001 S622 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S370 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P872 M3001 S0 P218 M3001 S784 P436 M3001 S0 P109 M3001 S392 P326 M3001 S0 P81 M3001 S392 P108 M3001 S0 P27 M3001 S784 P436 M3001 S0 P109 M3001 S740 P326 M3001 S0 P81 M3001 S698 P108 M3001 S0 P27 M3001 S659 P108 M3001 S0 P27 M3001 S622 P108 M3001 S0 P27 M3001 S659 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S415 P217 M3001 S0 P54 M3001 S554 P436 M3001 S0 P109 M3001 S523 P326 M3001 S0 P81 M3001 S494 P108 M3001 S0 P27 M3001 S466 P108 M3001 S0 P27 M3001 S440 P108 M3001 S0 P27 M3001 S466 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S311 P217 M3001 S0 P54 M3001 S370 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S370 P108 M3001 S0 P27 M3001 S466 P436 M3001 S0 P109 M3001 S392 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S587 P872 M3001 S0 P218 M3001 S784 P436 M3001 S0 P109 M3001 S392 P326 M3001 S0 P81 M3001 S392 P108 M3001 S0 P27 M3001 S784 P436 M3001 S0 P109 M3001 S740 P326 M3001 S0 P81 M3001 S698 P108 M3001 S0 P27 M3001 S659 P108 M3001 S0 P27 M3001 S622 P108 M3001 S0 P27 M3001 S659 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S415 P217 M3001 S0 P54 M3001 S554 P436 M3001 S0 P109 M3001 S523 P326 M3001 S0 P81 M3001 S494 P108 M3001 S0 P27 M3001 S466 P108 M3001 S0 P27 M3001 S440 P108 M3001 S0 P27 M3001 S466 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S311 P217 M3001 S0 P54 M3001 S370 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P872 M3001 S0 P218 M3001 S392 P436 M3001 S0 P109 M3001 S392 P436 M3001 S0 P109 M3001 S392 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P872 M3001 S0 P218 M3001 S587 P436 M3001 S0 P109 M3001 S587 P436 M3001 S0 P109 M3001 S587 P436 M3001 S0 P109 M3001 S622 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S370 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P872 M3001 S0 P218 M3001 S784 P436 M3001 S0 P109 M3001 S392 P326 M3001 S0 P81 M3001 S392 P108 M3001 S0 P27 M3001 S784 P436 M3001 S0 P109 M3001 S740 P326 M3001 S0 P81 M3001 S698 P108 M3001 S0 P27 M3001 S659 P108 M3001 S0 P27 M3001 S622 P108 M3001 S0 P27 M3001 S659 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S415 P217 M3001 S0 P54 M3001 S554 P436 M3001 S0 P109 M3001 S523 P326 M3001 S0 P81 M3001 S494 P108 M3001 S0 P27 M3001 S466 P108 M3001 S0 P27 M3001 S440 P108 M3001 S0 P27 M3001 S466 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S311 P217 M3001 S0 P54 M3001 S370 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P436 M3001 S0 P109 M3001 S311 P326 M3001 S0 P81 M3001 S466 P108 M3001 S0 P27 M3001 S392 P872 M3001 S0 P218 M3001 S0 P436 M3001 S0 P109 M3001 S294 P217 M3001 S0 P54 M3001 S311 P217 M3001 S0 P54 M3001 S262 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S466 P217 M3001 S0 P54 M3001 S440 P217 M3001 S0 P54 M3001 S370 P217 M3001 S0 P54 M3001 S587 P217 M3001 S0 P54 M3001 S554 P217 M3001 S0 P54 M3001 S440 P217 M3001 S0 P54 M3001 S523 P217 M3001 S0 P54 M3001 S466 P217 M3001 S0 P54 M3001 S370 P217 M3001 S0 P54 M3001 S311 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S294 P217 M3001 S0 P54 M3001 S311 P217 M3001 S0 P54 M3001 S262 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S466 P217 M3001 S0 P54 M3001 S440 P217 M3001 S0 P54 M3001 S370 P217 M3001 S0 P54 M3001 S784 P217 M3001 S0 P54 M3001 S587 P217 M3001 S0 P54 M3001 S466 P217 M3001 S0 P54 M3001 S415 P217 M3001 S0 P54 M3001 S311 P217 M3001 S0 P54 M3001 S247 P217 M3001 S0 P54 M3001 S208 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S294 P217 M3001 S0 P54 M3001 S311 P217 M3001 S0 P54 M3001 S262 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S466 P217 M3001 S0 P54 M3001 S440 P217 M3001 S0 P54 M3001 S370 P217 M3001 S0 P54 M3001 S587 P217 M3001 S0 P54 M3001 S554 P217 M3001 S0 P54 M3001 S440 P217 M3001 S0 P54 M3001 S523 P217 M3001 S0 P54 M3001 S466 P217 M3001 S0 P54 M3001 S370 P217 M3001 S0 P54 M3001 S311 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S311 P217 M3001 S0 P54 M3001 S330 P217 M3001 S0 P54 M3001 S277 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S494 P217 M3001 S0 P54 M3001 S466 P217 M3001 S0 P54 M3001 S392 P217 M3001 S0 P54 M3001 S831 P217 M3001 S0 P54 M3001 S622 P217 M3001 S0 P54 M3001 S494 P217 M3001 S0 P54 M3001 S440 P217 M3001 S0 P54 M3001 S330 P217 M3001 S0 P54 M3001 S262 P217 M3001 S0 P54 M3001 S220 P217 M3001 S0 P54 M3001 S440 P436 M3001 S0 P109 M3001 S440 P436 M3001 S0 P109 M3001 S440 P436 M3001 S0 P109 M3001 S349 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S440 P436 M3001 S0 P109 M3001 S349 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S440 P872 M3001 S0 P218 M3001 S659 P436 M3001 S0 P109 M3001 S659 P436 M3001 S0 P109 M3001 S659 P436 M3001 S0 P109 M3001 S698 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S415 P436 M3001 S0 P109 M3001 S349 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S440 P872 M3001 S0 P218 M3001 S880 P436 M3001 S0 P109 M3001 S440 P326 M3001 S0 P81 M3001 S440 P108 M3001 S0 P27 M3001 S880 P436 M3001 S0 P109 M3001 S831 P326 M3001 S0 P81 M3001 S784 P108 M3001 S0 P27 M3001 S740 P108 M3001 S0 P27 M3001 S698 P108 M3001 S0 P27 M3001 S740 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S466 P217 M3001 S0 P54 M3001 S622 P436 M3001 S0 P109 M3001 S587 P326 M3001 S0 P81 M3001 S554 P108 M3001 S0 P27 M3001 S523 P108 M3001 S0 P27 M3001 S494 P108 M3001 S0 P27 M3001 S523 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S349 P217 M3001 S0 P54 M3001 S415 P436 M3001 S0 P109 M3001 S349 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S440 P436 M3001 S0 P109 M3001 S349 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S440 P872 M3001 S0 P218 M3001 S880 P436 M3001 S0 P109 M3001 S440 P326 M3001 S0 P81 M3001 S440 P108 M3001 S0 P27 M3001 S880 P436 M3001 S0 P109 M3001 S831 P326 M3001 S0 P81 M3001 S784 P108 M3001 S0 P27 M3001 S740 P108 M3001 S0 P27 M3001 S698 P108 M3001 S0 P27 M3001 S740 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S466 P217 M3001 S0 P54 M3001 S622 P436 M3001 S0 P109 M3001 S587 P326 M3001 S0 P81 M3001 S554 P108 M3001 S0 P27 M3001 S523 P108 M3001 S0 P27 M3001 S494 P108 M3001 S0 P27 M3001 S523 P217 M3001 S0 P54 M3001 S0 P436 M3001 S0 P109 M3001 S349 P217 M3001 S0 P54 M3001 S415 P436 M3001 S0 P109 M3001 S349 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S440 P436 M3001 S0 P109 M3001 S349 P326 M3001 S0 P81 M3001 S523 P108 M3001 S0 P27 M3001 S440 P653 M3001 S0 P163 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_empire {% endif %} [gcode_macro sng_auldlangsyne] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_auldlangsyne {% endif %} M117 Auld Lang Syne M3001 S578 P800 M3001 S783 P1200 M3001 S783 P400 M3001 S783 P800 M3001 S987 P800 M3001 S880 P1200 M3001 S783 P400 M3001 S880 P800 M3001 S987 P800 M3001 S783 P1200 M3001 S783 P400 M3001 S987 P800 M3001 S1174 P800 M3001 S1318 P1600 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_auldlangsyne {% endif %} [gcode_macro sng_bethovene] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=sng_bethovene {% endif %} M117 Bethoven M3001 S988 P400 M3001 S988 P400 M3001 S1047 P400 M3001 S1175 P400 M3001 S1175 P400 M3001 S1047 P400 M3001 S988 P400 M3001 S880 P400 M3001 S784 P400 M3001 S784 P400 M3001 S880 P400 M3001 S988 P400 M3001 S988 P600 M3001 S880 P200 M3001 S880 P800 M300done M117 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=sng_bethovene {% endif %} [gcode_macro snd_] gcode = [gcode_macro snd_PowerOn] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_PowerOn {% endif %} sng_startup {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_PowerOn {% endif %} [gcode_macro snd_PrintStart] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_PrintStart {% endif %} sng_mario {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_PrintStart {% endif %} [gcode_macro snd_PrintPause] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_PrintPause {% endif %} sng_startup {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_PrintPause {% endif %} [gcode_macro snd_PrintEnd] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_PrintEnd {% endif %} sng_bethovene {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_PrintEnd {% endif %} [gcode_macro snd_PrintCancel] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_PrintCancel {% endif %} sng_bethovene {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_PrintCancel {% endif %} [gcode_macro snd_PrintFail] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_PrintFail {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_PrintFail {% endif %} [gcode_macro snd_PrintResume] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_PrintResume {% endif %} sng_startup {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_PrintResume {% endif %} [gcode_macro snd_MeshStart] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_MeshStart {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_MeshStart {% endif %} [gcode_macro snd_MeshEnd] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_MeshEnd {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_MeshEnd {% endif %} [gcode_macro snd_MeshFail] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_MeshFail {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_MeshFail {% endif %} [gcode_macro snd_MeshStore] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=snd_MeshStore {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=snd_MeshStore {% endif %} [gcode_macro M300done] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M300done {% endif %} SET_PIN PIN=_BEEPER_pin VALUE=0.0 cycle_time=0.024 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M300done {% endif %} [gcode_macro M3001] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M3001 {% endif %} {% set S = params.S|default(1000)|int %} {% set P = params.P|default(100)|int %} {% if S > 0 %} SET_PIN PIN=_BEEPER_pin VALUE=0.5 cycle_time={1.0/(S|float)} {% endif %} G4 P{P} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M3001 {% endif %} [gcode_macro M300] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M300 {% endif %} {% set S = params.S|default(1000)|int %} {% set P = params.P|default(100)|int %} {% if S > 0 %} SET_PIN PIN=_BEEPER_pin VALUE=0.5 cycle_time={1.0/(S|float)} {% endif %} G4 P{P} SET_PIN PIN=_BEEPER_pin VALUE=0.0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M300 {% endif %} [gcode_macro init_gbl_vars] description = testing use of marcro variables gcode = [bed_mesh] mesh_min = 40, 40 mesh_max = 330, 330 algorithm = bicubic bicubic_tension = .2 speed = 250 horizontal_move_z = 15 probe_count = 5,5 mesh_pps = 2,2 relative_reference_index = 12 fade_start = 1.0 fade_end = 10.0 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 250 horizontal_move_z = 15 max_adjust = 4 retries = 3 retry_tolerance = 0.0075 [input_shaper] shaper_type_x = 2hump_ei shaper_freq_x = 62.2 shaper_type_y = mzv shaper_freq_y = 34.4 [adxl345] cs_pin = pico:gpio1 [resonance_tester] accel_chip = adxl345 probe_points = 175,175,20 [gcode_macro _klicky_vars] variable_klicky_verb_error = 1 variable_klicky_verb_info = 0 variable_klicky_verb_status = 0 variable_klicky_verb_debug = 0 variable_klicky_verb_codeflow = 0 gcode = [delayed_gcode _klicky_module_start] initial_duration = 0.5 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_klicky_module_start func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _klicky_module_start Start <<< {% endif %} SAVE_VARIABLE VARIABLE=module_klicky_loaded VALUE=1 SAVE_VARIABLE VARIABLE=klicky_err_flag VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _klicky_module_start End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_klicky_module_start {% endif %} [gcode_macro _User_Variables] variable_verbose = False variable_xytravel_speed = 250 variable_ztravel_speed = 50 variable_xydock_speed = 50 variable_zdock_speed = 5 variable_xyrelease_speed = 75 variable_zrelease_speed = 5 variable_z_drop_speed = 5 variable_safe_z = 15 variable_enable_z_hop = True variable_max_bed_y = 350.0 variable_max_bed_x = 350.0 variable_z_endstop_x = 231.3 variable_z_endstop_y = 349.0 variable_docklocation_x = 319.0 variable_docklocation_y = 350.0 variable_docklocation_z = -128 variable_dockmove_x = -88 variable_dockmove_y = 0 variable_dockmove_z = 0 variable_attachmove_x = 0 variable_attachmove_y = 30 variable_attachmove_z = 0 variable_umbilical = False variable_umbilical_x = 15 variable_umbilical_y = 15 variable_park_toolhead = False variable_parkposition_x = 175 variable_parkposition_y = 350 variable_parkposition_z = 15 variable_version = 1 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_User_Variables func_params='"{rawparams|string}"' {% endif %} {% set Mx = printer['configfile'].config["stepper_x"]["position_max"]|float %} {% set My = printer['configfile'].config["stepper_y"]["position_max"]|float %} {% set Ox = printer['configfile'].config["probe"]["x_offset"]|float %} {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} {% set Oz = printer['configfile'].config["probe"]["z_offset"]|float %} {% if home_z_height|default(0) != 0 %} SET_GCODE_VARIABLE MACRO=_USER_Variables VARIABLE=safe_z VALUE={ home_z_height } {% endif %} {% if z_endstop_x != 0 or z_endstop_y != 0 %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ z_endstop_x } SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ z_endstop_y } {% else %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ (Mx * 0.5) - Ox } SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ (My * 0.5) - Oy } {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_User_Variables {% endif %} [gcode_macro _Probe_Variables] variable_probe_attached = False variable_probe_state = False variable_probe_lock = False variable_z_endstop_x = 0 variable_z_endstop_y = 0 gcode = [gcode_macro _klicky_check_variables_version] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_klicky_check_variables_version func_params='"{rawparams|string}"' {% endif %} {% set version = printer["gcode_macro _User_Variables"].version|default(0) %} {% if version != 1 %} { action_raise_error("Please update your klicky variables, there are some functionality changes") } {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_klicky_check_variables_version {% endif %} [gcode_macro _exit_point] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_exit_point func_params='"{rawparams|string}"' {% endif %} {% set move_speed = printer["gcode_macro _User_Variables"].xytravel_speed %} {% set function = 'pre_' ~ params.FUNCTION %} {% set move = params.MOVE|default(0) %} {% if printer["gcode_macro _klicky_vars"].klicky_verb_info %} M118 >>> _____EXITING {function} MOVE={move} <<< {% endif %} M400 RESTORE_GCODE_STATE NAME={function} MOVE={move} MOVE_SPEED={move_speed} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_exit_point {% endif %} [gcode_macro _entry_point] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_entry_point func_params='"{rawparams|string}"' {% endif %} {% set function = 'pre_' ~ params.FUNCTION %} {% if printer["gcode_macro _klicky_vars"].klicky_verb_info %} M118 >>> _____ENTERING {function} <<< {% endif %} M400 SAVE_GCODE_STATE NAME={function} SET_GCODE_OFFSET Z=0 go_absolute {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_entry_point {% endif %} [gcode_macro _Homing_Variables] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_Homing_Variables func_params='"{rawparams|string}"' {% endif %} {% set reset = params.RESET|default(0) %} {% if reset %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_Homing_Variables {% endif %} [gcode_macro Attach_Probe_Lock] description = Attaches Klicky Probe, can only be docked after unlocking gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Attach_Probe_Lock func_params='"{rawparams|string}"' {% endif %} Attach_Probe _Probe_Lock {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Attach_Probe_Lock {% endif %} [gcode_macro Dock_Probe_Unlock] description = Docks Klicky Probe even if it was locked gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Dock_Probe_Unlock func_params='"{rawparams|string}"' {% endif %} _Probe_Unlock Dock_Probe {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Dock_Probe_Unlock {% endif %} [gcode_macro _Probe_Unlock] description = Unlocks Klicky Probe state gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_Probe_Unlock func_params='"{rawparams|string}"' {% endif %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_Probe_Unlock {% endif %} [gcode_macro _Probe_Lock] description = Locks Klicky Probe state gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_Probe_Lock func_params='"{rawparams|string}"' {% endif %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ True } {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_Probe_Lock {% endif %} [gcode_macro Attach_Probe] description = Attaches Klicky Probe gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Attach_Probe func_params='"{rawparams|string}"' {% endif %} {% set goback = params.BACK|default(0) %} {% set probe_attached = printer["gcode_macro _Probe_Variables"].probe_attached %} {% set probe_lock = printer["gcode_macro _Probe_Variables"].probe_lock %} {% set verbose = printer["gcode_macro _User_Variables"].verbose %} {% set dockmove_x = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} {% set dockmove_y = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} {% set dockmove_z = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} {% set docklocation_x = printer["gcode_macro _User_Variables"].docklocation_x %} {% set docklocation_y = printer["gcode_macro _User_Variables"].docklocation_y %} {% set docklocation_z = printer["gcode_macro _User_Variables"].docklocation_z %} {% set attachmove_x = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} {% set attachmove_y = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} {% set attachmove_z = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z %} {% set enable_z_hop = printer["gcode_macro _User_Variables"].enable_z_hop %} {% set xytravel_feedrate = printer["gcode_macro _User_Variables"].xytravel_speed * 60 %} {% set ztravel_feedrate = printer["gcode_macro _User_Variables"].ztravel_speed * 60 %} {% set xydock_feedrate = printer["gcode_macro _User_Variables"].xydock_speed * 60 %} {% set zdock_feedrate = printer["gcode_macro _User_Variables"].zdock_speed * 60 %} {% set xyrelease_feedrate = printer["gcode_macro _User_Variables"].xyrelease_speed * 60 %} {% set zrelease_feedrate = printer["gcode_macro _User_Variables"].zrelease_speed * 60 %} {% set z_drop_feedrate = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} _entry_point function=Attach_Probe {% if dockmove_x == dockmove_y == dockmove_z == 0 %} { action_raise_error("No dockmove location!! To restore old behavior place 40 in dockmove_x") } {% endif %} {% if attachmove_x == attachmove_y == attachmove_z == 0 %} { action_raise_error("No attachmove location!! To restore old behavior place dockarmslenght value in dockmove_x") } {% endif %} {% if not 'xy' in printer.toolhead.homed_axes %} { action_raise_error("Must Home X and Y Axis First!") } {% elif not probe_attached and not probe_lock %} {% if verbose %} M118 Attaching Probe {% endif %} {% if not 'z' in printer.toolhead.homed_axes %} {% if verbose %} M118 Resetting Z position to zero {% endif %} SET_KINEMATIC_POSITION Z=0 {% if not enable_z_hop %} {% set safe_z = 0 %} {% endif %} {% endif %} {% if printer.toolhead.position.z < safe_z %} {% if verbose %} M118 moving to a safe Z height {% endif %} G0 Z{safe_z} F{z_drop_feedrate} {% endif %} {% if not 'z' in printer.toolhead.homed_axes %} {% if verbose %} M118 Resetting Z position to zero {% endif %} SET_KINEMATIC_POSITION Z=0 {% endif %} {% if printer.toolhead.position.z < safe_z %} G0 Z{safe_z} F{z_drop_feedrate} {% endif %} _Umbilical_Path _entry_point function=Attach_Probe_intern G0 X{docklocation_x|float - attachmove_x|float} Y{docklocation_y|float - attachmove_y|float} F{xytravel_feedrate} {% if docklocation_z != -128 %} G0 Z{docklocation_z|float - attachmove_z|float} F{zdock_feedrate} {% endif %} {% if docklocation_z != -128 %} G0 Z{docklocation_z} F{zdock_feedrate} {% endif %} G0 X{docklocation_x} Y{docklocation_y} F{xydock_feedrate} {% if docklocation_z != -128 %} G0 Z{docklocation_z|float - attachmove_z|float} F{z_drop_feedrate} {% endif %} G0 X{docklocation_x|float - attachmove_x|float} Y{docklocation_y|float - attachmove_y|float} F{xyrelease_feedrate} {% if printer.toolhead.position.z < safe_z %} G0 Z{safe_z} F{z_drop_feedrate} {% endif %} _Park_Toolhead _CheckProbe action=attach _exit_point function=Attach_Probe_intern move={goback} {% elif probe_lock %} {% if verbose %} M118 Probe locked! {% endif %} _CheckProbe action=query {% else %} {% if verbose %} M118 Probe already attached! {% endif %} _CheckProbe action=query {% endif %} _exit_point function=Attach_Probe move={goback} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Attach_Probe {% endif %} [gcode_macro Dock_Probe] description = Docks Klicky Probe gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=Dock_Probe func_params='"{rawparams|string}"' {% endif %} {% set goback = params.back|default(0) %} {% set probe_attached = printer["gcode_macro _Probe_Variables"].probe_attached %} {% set probe_lock = printer["gcode_macro _Probe_Variables"].probe_lock %} {% set verbose = printer["gcode_macro _User_Variables"].verbose %} {% set dockmove_x = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} {% set dockmove_y = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} {% set dockmove_z = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} {% set docklocation_x = printer["gcode_macro _User_Variables"].docklocation_x %} {% set docklocation_y = printer["gcode_macro _User_Variables"].docklocation_y %} {% set docklocation_z = printer["gcode_macro _User_Variables"].docklocation_z %} {% set attachmove_x = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} {% set attachmove_y = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} {% set attachmove_z = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z|float %} {% set xytravel_feedrate = printer["gcode_macro _User_Variables"].xytravel_speed * 60 %} {% set ztravel_feedrate = printer["gcode_macro _User_Variables"].ztravel_speed * 60 %} {% set xydock_feedrate = printer["gcode_macro _User_Variables"].xydock_speed * 60 %} {% set zdock_feedrate = printer["gcode_macro _User_Variables"].zdock_speed * 60 %} {% set xyrelease_feedrate = printer["gcode_macro _User_Variables"].xyrelease_speed * 60 %} {% set zrelease_feedrate = printer["gcode_macro _User_Variables"].zrelease_speed * 60 %} {% set z_drop_feedrate = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} {% if dockmove_x == dockmove_y == dockmove_z == 0 %} { action_raise_error("No dockmove location!! To restore old behavior place 40 in dockmove_x") } {% endif %} {% if attachmove_x == attachmove_y == attachmove_z == 0 %} { action_raise_error("No attachmove location!! To restore old behavior place dockarmslenght value in dockmove_x") } {% endif %} {% if not 'xyz' in printer.toolhead.homed_axes %} { action_raise_error("Must Home X, Y and Z Axis First!") } {% endif %} _entry_point function=Dock_Probe {% if probe_attached and not probe_lock %} {% if verbose %} M118 Docking Probe {% endif %} {% if printer.toolhead.position.z < safe_z %} G0 Z{safe_z} F{z_drop_feedrate} {% endif %} _Umbilical_Path {% if printer.toolhead.position.y > (docklocation_y|float - attachmove_y|float) %} G0 Y{docklocation_y|float - attachmove_y|float} F{xytravel_feedrate} G0 X{docklocation_x|float - attachmove_x|float} F{xytravel_feedrate} {% else %} G0 X{docklocation_x|float - attachmove_x|float} Y{docklocation_y|float - attachmove_y|float} F{xytravel_feedrate} {% endif %} {% if docklocation_z != -128 %} G0 Z{docklocation_z|float - attachmove_z|float} F{zdock_feedrate} {% endif %} G0 X{docklocation_x} Y{docklocation_y} F{xydock_feedrate} {% if docklocation_z != -128 %} G0 Z{docklocation_z} F{zdock_feedrate} {% endif %} {% if docklocation_z != -128 %} G0 Z{docklocation_z|float + dockmove_z|float} F{zrelease_feedrate} {% endif %} G0 X{docklocation_x|float + dockmove_x|float} Y{docklocation_y|float + dockmove_y|float} F{xyrelease_feedrate} {% if printer.toolhead.position.z < safe_z %} G0 Z{safe_z} F{z_drop_feedrate} {% endif %} _Park_Toolhead G4 P1000 _CheckProbe action=dock {% elif probe_lock %} {% if verbose %} M118 Probe locked {% endif %} _CheckProbe action=query {% else %} {% if verbose %} M118 Probe already docked {% endif %} _CheckProbe action=query {% endif %} _exit_point function=Dock_Probe move={goback} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=Dock_Probe {% endif %} [gcode_macro PROBE_CALIBRATE] description = Calibrate the probes z_offset with klicky automount rename_existing = _PROBE_CALIBRATE_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PROBE_CALIBRATE func_params='"{rawparams|string}"' {% endif %} {% set z_drop_feedrate = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} {% set xytravel_feedrate = printer["gcode_macro _User_Variables"].xytravel_speed * 60 %} {% set ztravel_feedrate = printer["gcode_macro _User_Variables"].ztravel_speed * 60 %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z|float %} {% set max_x = printer["gcode_macro _User_Variables"].max_bed_x %} {% set max_y = printer["gcode_macro _User_Variables"].max_bed_y %} {% set probe_offset_x = printer['configfile'].config["probe"]["x_offset"]|float %} {% set probe_offset_y = printer['configfile'].config["probe"]["y_offset"]|float %} {% if not 'xyz' in printer.toolhead.homed_axes %} { action_raise_error("Must Home X, Y and Z Axis First!") } {% endif %} {% if printer['gcode_move'].position.y > (max_y - probe_offset_y) or printer['gcode_move'].position.y < probe_offset_y or printer['gcode_move'].position.x > (max_x - probe_offset_x) or printer['gcode_move'].position.x < probe_offset_x %} { action_raise_error("Must perform PROBE_CALIBRATE with the probe above the BED!") } {% endif%} _entry_point function=PROBE_CALIBRATE _CheckProbe action=query Attach_Probe back=1 _PROBE_CALIBRATE_STOCK {% for p in params %}{'%s=%s ' % (p, params[p])}{% endfor %} Dock_Probe back=1 _exit_point function=PROBE_CALIBRATE move=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PROBE_CALIBRATE {% endif %} [gcode_macro PROBE_ACCURACY] description = Probe Z-height accuracy at current XY position with klicky automount uses [probe] section configs for non passed vars rename_existing = _PROBE_ACCURACY_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PROBE_ACCURACY func_params='"{rawparams|string}"' {% endif %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z|float %} {% set z_drop_feedrate = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} {% set xytravel_feedrate = printer["gcode_macro _User_Variables"].xytravel_speed %} {% set ztravel_feedrate = printer["gcode_macro _User_Variables"].ztravel_speed %} {% set max_x = printer["gcode_macro _User_Variables"].max_bed_x %} {% set max_y = printer["gcode_macro _User_Variables"].max_bed_y %} {% set probe_offset_x = printer['configfile'].config["probe"]["x_offset"]|float %} {% set probe_offset_y = printer['configfile'].config["probe"]["y_offset"]|float %} {% if not 'xyz' in printer.toolhead.homed_axes %} { action_raise_error("Must Home X, Y and Z Axis First!") } {% endif %} _entry_point function=PROBE_ACCURACY {% if printer['gcode_move'].position.y > (max_y - probe_offset_y) or printer['gcode_move'].position.y < probe_offset_y or printer['gcode_move'].position.x > (max_x - probe_offset_x) or printer['gcode_move'].position.x < probe_offset_x %} { action_raise_error("Must perform PROBE_ACCURACY with the probe above the BED!") } {% endif%} _CheckProbe action=query Attach_Probe back=1 _PROBE_ACCURACY_STOCK {% for p in params %}{'%s=%s ' % (p, params[p])}{% endfor %} Dock_Probe back=1 _exit_point function=PROBE_ACCURACY move=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PROBE_ACCURACY {% endif %} [force_move] enable_force_move = True [homing_override] axes = xyz gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=homing_override func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"homing"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> homing <<< {% endif %} _User_Variables {% set verbose = printer["gcode_macro _User_Variables"].verbose %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z|float %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z %} {% set enable_z_hop = printer["gcode_macro _User_Variables"].enable_z_hop %} {% set attachmove_x = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} {% set attachmove_y = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} {% set attachmove_z = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} {% set z_drop_feedrate = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} _klicky_check_variables_version {% if attachmove_x == attachmove_y == attachmove_z == 0 %} { action_raise_error("No attachmove location!") } {% endif %} _CheckProbe action=query {% set home_x, home_y, home_z = False, False, False %} {% if not 'X' in params and not 'Y' in params and not 'Z' in params %} {% set home_x, home_y, home_z = True, True, True %} {% else %} {% if 'X' in params %} {% set home_x = True %} {% endif %} {% if 'Y' in params %} {% set home_y = True %} {% endif %} {% if 'Z' in params %} {% set home_z = True %} {% endif %} {% if 'X' in params and 'Y' in params and 'Z' in params %} _Homing_Variables reset=1 {% endif %} {% endif %} _entry_point function=homing_override {% if 'z' not in printer.toolhead.homed_axes %} {% if not enable_z_hop %} {% set safe_z = 0 %} {% endif %} {% endif %} {% if home_z %} {% if 'z' in printer.toolhead.homed_axes %} {% if printer.toolhead.position.z < safe_z %} {% if verbose %} M118 Z too low, performing ZHOP {% endif %} G0 Z{safe_z} F{z_drop_feedrate} {% endif %} {% else %} {% if verbose %} M118 Z not homed, forcing full G28 {% endif %} SET_KINEMATIC_POSITION X=0 Y=0 Z=0 G0 Z{safe_z} F{z_drop_feedrate} {% set home_x, home_y, home_z = True, True, True %} {% endif %} {% endif %} {% if attachmove_y == 0 %} {% if home_y %} {% if verbose %} M118 Homing Y {% endif %} G28 Y0 {% endif %} {% set home_y = False %} {% endif %} {% if home_x %} {% if verbose %} M118 Homing X {% endif %} G28 X0 {% endif %} {% if home_y %} {% if verbose %} M118 Homing Y {% endif %} G28 Y0 {% endif %} {% if home_z %} {% if verbose %} M118 Homing Z {% endif %} {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} Attach_Probe {% else %} Dock_Probe {% endif %} _Home_Z {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} Dock_Probe {% endif %} {% endif %} _CheckProbe action=query _Park_Toolhead _exit_point function=homing_override SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"homed"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> homed <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=homing_override {% endif %} [gcode_macro _Umbilical_Path] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_Umbilical_Path func_params='"{rawparams|string}"' {% endif %} {% set umbilical = printer["gcode_macro _User_Variables"].umbilical %} {% set umbilical_x = printer["gcode_macro _User_Variables"].umbilical_x %} {% set umbilical_y = printer["gcode_macro _User_Variables"].umbilical_y %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z|float %} {% set xytravel_feedrate = printer["gcode_macro _User_Variables"].xytravel_speed * 60 %} {% set ztravel_feedrate = printer["gcode_macro _User_Variables"].ztravel_speed * 60 %} {% if umbilical %} _entry_point function=Umbilical_Path G0 X{umbilical_x} Y{umbilical_y} F{xytravel_feedrate} G0 Z{safe_z} F{ztravel_feedrate} _exit_point function=Umbilical_Path {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_Umbilical_Path {% endif %} [gcode_macro _Home_Z] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_Home_Z func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"z_homing"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> z_homing <<< {% endif %} {% set z_endstop_x = printer["gcode_macro _Probe_Variables"].z_endstop_x %} {% set z_endstop_y = printer["gcode_macro _Probe_Variables"].z_endstop_y %} {% set safe_z = printer["gcode_macro _User_Variables"].safe_z|float %} {% set xytravel_feedrate = printer["gcode_macro _User_Variables"].xytravel_speed * 60 %} {% set ztravel_feedrate = printer["gcode_macro _User_Variables"].ztravel_speed * 60 %} {% set z_drop_feedrate = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} {% set verbose = printer["gcode_macro _User_Variables"].verbose %} _entry_point function=Home_Z {% if not 'xy' in printer.toolhead.homed_axes %} { action_raise_error("Must Home X and Y Axis First!") } {% else %} {% if not 'z' in printer.toolhead.homed_axes %} {% if verbose %} M118 Resetting Z position to zero {% endif %} SET_KINEMATIC_POSITION Z=0 {% endif %} G0 X{z_endstop_x} Y{z_endstop_y} F{xytravel_feedrate} G28 Z0 G0 Z{safe_z} F{z_drop_feedrate} {% endif %} _exit_point function=Home_Z SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"z_homed"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> z_homed <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_Home_Z {% endif %} [gcode_macro _CheckProbe] variable_probe_state = 0 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_CheckProbe func_params='"{rawparams|string}"' {% endif %} Query_Probe _SetProbeState action={ params.ACTION } {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_CheckProbe {% endif %} [gcode_macro _SetProbeState] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_SetProbeState func_params='"{rawparams|string}"' {% endif %} {% set query_probe_triggered = printer.probe.last_query %} {% set action = params.ACTION|default('') %} {% if query_probe_triggered %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ False } {% else %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ True } {% endif %} {% if action == 'query' %} SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_state VALUE={ query_probe_triggered } {% endif %} {% if not query_probe_triggered and action == 'dock' %} { action_raise_error("Probe dock failed!") } {% endif %} {% if query_probe_triggered and action == 'attach' %} { action_raise_error("Probe attach failed!") } {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_SetProbeState {% endif %} [gcode_macro _Park_Toolhead] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_Park_Toolhead func_params='"{rawparams|string}"' {% endif %} {% set park_toolhead = printer["gcode_macro _User_Variables"].park_toolhead %} {% set parkposition_x = printer["gcode_macro _User_Variables"].parkposition_x %} {% set parkposition_y = printer["gcode_macro _User_Variables"].parkposition_y %} {% set parkposition_z = printer["gcode_macro _User_Variables"].parkposition_z %} {% set xytravel_feedrate = printer["gcode_macro _User_Variables"].xytravel_speed * 60 %} {% set ztravel_feedrate = printer["gcode_macro _User_Variables"].ztravel_speed * 60 %} {% set verbose = printer["gcode_macro _User_Variables"].verbose %} _entry_point function=Park_Toolhead {% if park_toolhead and 'xyz' in printer.toolhead.homed_axes %} {% if verbose %} M118 Parking Toolhead {% endif %} G0 X{parkposition_x} Y{parkposition_y} F{xytravel_feedrate} G0 Z{parkposition_z} F{ztravel_feedrate} {% else %} {% if verbose %} M118 Toolhead Parking Disabled... {% endif %} {% endif %} _exit_point function=Park_Toolhead {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_Park_Toolhead {% endif %} [gcode_macro BED_MESH_CALIBRATE] description = Perform Mesh Bed Leveling with klicky automount rename_existing = _BED_MESH_CALIBRATE_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=BED_MESH_CALIBRATE func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"bed_meshing"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> bed_meshing <<< {% endif %} {% if printer["gcode_macro _User_Variables"].verbose %} M118 Bed Mesh Calibrate {% endif %} _ENSURE_QGL _CheckProbe action=query Attach_Probe {% if printer["gcode_macro _klicky_vars"].klicky_verb_info %} M118 >>> ____ BED_MESH_CALIBRATE_STOCK {rawparams} <<< {% endif %} _BED_MESH_CALIBRATE_STOCK {% for p in params %}{'%s=%s ' % (p, params[p])}{% endfor %} Dock_Probe SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"bed_meshed"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> bed_meshed <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=BED_MESH_CALIBRATE {% endif %} [gcode_macro QUAD_GANTRY_LEVEL] rename_existing = _QUAD_GANTRY_LEVEL_STOCK description = Conform a moving, twistable gantry to the shape of a stationary bed with klicky automount - rehomez z thereafter gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=QUAD_GANTRY_LEVEL func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"qgling"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> QGL'g <<< {% endif %} {% set V = printer["gcode_macro _User_Variables"].verbose %} {% if V %} M118 QG Level {% endif %} _ENSURE_HOMED _CheckProbe action=query Attach_Probe {% if printer["gcode_macro _klicky_vars"].klicky_verb_info %} M118 >>> ____ QUAD_GANTRY_LEVEL_STOCK {rawparams} <<< {% endif %} _QUAD_GANTRY_LEVEL_STOCK {% for p in params %}{'%s=%s ' % (p, params[p])}{% endfor %} G28 Z Dock_Probe SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"qgled"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> QGL'd <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=QUAD_GANTRY_LEVEL {% endif %} [gcode_macro PROBE_Z_ACCURACY] rename_existing = _PROBE_Z_ACCURACY_STOCK description = adapts an undocumented FW routine to test z_endstop accuracy variable_entryexit_z = 15 variable_entryexit_zrate = 900 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PROBE_Z_ACCURACY func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"pza'g"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> pza'g <<< {% endif %} _ENSURE_QGL M117 PROBE_Z_ACCURACY G0 Z{entryexit_z} F{entryexit_zrate} _PROBE_Z_ACCURACY_STOCK {% for p in params %}{'%s=%s ' % (p, params[p])}{% endfor %} G0 Z{entryexit_z} F{entryexit_zrate} M117 SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"pza'd"' {% if printer["gcode_macro _klicky_vars"].klicky_verb_status %} M118 >>> PZA'd <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PROBE_Z_ACCURACY {% endif %} [z_calibration] probe_nozzle_x = 231.3 probe_nozzle_y = 349.0 probe_switch_x = 226 probe_switch_y = 330.5 probe_bed_x = 175 probe_bed_y = 175 switch_offset = 0.675 max_deviation = 1.5 samples = 5 samples_tolerance = 0.01 samples_tolerance_retries = 3 samples_result = median clearance = 5 speed = 250 lift_speed = 25 probing_retract_dist = 2 probing_first_fast = true start_gcode = Dock_Probe_Unlock before_switch_gcode = Attach_Probe end_gcode = Dock_Probe [gcode_macro CALIBRATE_Z] variable_entryexit_z = 15 variable_entryexit_zfeedrate = 900 description = Automatically calibrates the nozzles offset to the print surface and, possibly/optionally dock/undock Klicky rename_existing = _CALIBRATE_Z_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=CALIBRATE_Z func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"z_calibrating"' {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 z_calibrating {% endif %} {% set force = params.FORCE|default(0)|int %} {% if printer.save_variables.variables.z_axis_cal and force == 0 %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 Z-AutoCalibration already completed, skipping... {% endif %} {% else %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 Z-Cal'g {% endif %} _ENSURE_QGL M117 Z-Calibration G0 Z{entryexit_z} F{entryexit_zfeedrate} _CALIBRATE_Z_STOCK G0 Z{entryexit_z} F{entryexit_zfeedrate} M117 SAVE_VARIABLE VARIABLE=z_axis_cal VALUE=1 SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"z_calibrated"' {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 z_calibrated {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=CALIBRATE_Z {% endif %} [gcode_macro _linadv_vars] description = led effects module variables variable_linadv_verb_error = 1 variable_linadv_verb_info = 0 variable_linadv_verb_status = 0 variable_linadv_verb_debug = 0 variable_linadv_verb_codeflow = 0 variable_dynamic_pa_enable = 0 gcode = [gcode_macro M900] description = Set Pressure Advance - Param K=K-Factor|float, other params are ignored gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=M900 func_params='"{rawparams|string}"' {% endif %} {% if 'K' in params %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_info %} M118 M900 - {'PA:' + params.K|float|string + ' ST:' + printer.extruder.smooth_time|float|string} {% endif %} SET_PRESSURE_ADVANCE ADVANCE={params.K|float} {% else %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_error %} M118 >>> M900: No PA K-factor passed... <<< {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=M900 {% endif %} [delayed_gcode _linadv_module_start] initial_duration = 0.5 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_linadv_module_start func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_codeflow %} M118 >>> _linadv_module_start Start <<< {% endif %} SAVE_VARIABLE VARIABLE=module_linadv_loaded VALUE=1 SAVE_VARIABLE VARIABLE=linadv_err_flag VALUE=0 {% if printer["gcode_macro _linadv_vars"].linadv_verb_codeflow %} M118 >>> _linadv_module_start End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_linadv_module_start {% endif %} [gcode_macro _SetDynamicPA] description = Used to set klipper's PA based on specific mesh types passed in gcode variable_mesh_name = ["Unknown", "Perimeter", "External perimeter", "Overhang perimeter", "Internal infill", "Solid infill", "Top solid infill", "Ironing", "Bridge infill", "Gap fill", "Skirt/Brim", "Support material", "Support material interface", "Wipe tower", "Custom", "Mixed" ] variable_mesh_kval = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] variable_mesh_smtm = [0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040 ] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_SetDynamicPA func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _linadv_vars"].dynamic_pa_enable %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_codeflow %} M118 >>> _SetDynamicPA Start <<< {% endif %} {% set sdpa = namespace(pa_unset=true) %} {% set sdpb = namespace(matches=0) %} {% for mesh_idx in range(printer["gcode_macro _SetDynamicPA"].mesh_name|length) %} {% if params.MESH|string|lower == printer["gcode_macro _SetDynamicPA"].mesh_name[mesh_idx|int]|string|lower %} SET_PRESSURE_ADVANCE ADVANCE={printer["gcode_macro _SetDynamicPA"].mesh_kval[mesh_idx|int]|float} SMOOTH_TIME={printer["gcode_macro _SetDynamicPA"].mesh_smtm[mesh_idx|int]|float} {% set sdpa.pa_unset = false %} {% set sdpb.matches = sdpb.matches + 1 %} {% endif %} {% endfor %} {% if sdpa.pa_unset %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_error %} M118 >>> _SetDynamicPA|UNKNOWN MESH: {params.MESH|string|lower} <<< {% endif %} M300 S200 P50 {% endif %} {% if sdpb.matches > 1 %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_error %} M118 >>> _SetDynamicPA|Multiple matches on MESH: {params.MESH|string|lower} - matched {sdpb.matches} times <<< {% endif %} M300 S200 P50 {% endif %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_codeflow %} M118 >>> _SetDynamicPA End <<< {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_SetDynamicPA {% endif %} [gcode_macro SET_PRESSURE_ADVANCE] description = wrapper for FW proc rename_existing = _SET_PRESSURE_ADVANCE_STOCK gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=SET_PRESSURE_ADVANCE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _linadv_vars"].linadv_verb_codeflow %} M118 >>> SET_PRESSURE_ADVANCE Start ... {% endif %} _SET_PRESSURE_ADVANCE_STOCK {rawparams} {% if printer["gcode_macro _linadv_vars"].linadv_verb_codeflow %} M118 ... SET_PRESSURE_ADVANCE End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=SET_PRESSURE_ADVANCE {% endif %} [firmware_retraction] retract_length = 0.4 retract_speed = 45 unretract_extra_length = 0 unretract_speed = 22.5 [gcode_arcs] resolution = 1.0 [gcode_macro _park_head] description = procs for post canx/end parking of heads gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_park_head func_params='"{rawparams|string}"' {% endif %} {% set th = printer.toolhead %} {% set entry_ptr_state = params.ENTRY|string %} {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 _____ _park_head | entry_ptr_state:{entry_ptr_state} _____ {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 >>> _park_head - entry_ptr_state: {entry_ptr_state} <<< {% endif %} {% set x_park = th.axis_maximum.x//2|float %} {% set y_park = th.axis_maximum.y|float %} {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 _____ _park_head | x_park:{x_park} y_park:{y_park} _____ {% endif %} {% set max_z = th.axis_maximum.z|float %} {% set act_z = th.position.z|float %} {% if act_z < (max_z - 20.0) %} {% set max_deltaz = 20.0 %} {% else %} {% set max_deltaz = max_z - act_z %} {% endif %} {% set tgt_deltaz = svv.maxz|float + 15.0 - act_z %} {% set min_deltaz = svv.maxz|float + 10.0 - act_z %} {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 >>> MaxZ: {svv.maxz} MaxDeltaZ: {max_deltaz} TgtDeltaZ: {tgt_deltaz} MinDeltaZ: {min_deltaz} <<< {% endif %} {% if tgt_deltaz > max_deltaz %} {% set final_deltaz = min_deltaz %} {% else %} {% set final_deltaz = tgt_deltaz %} {% endif %} {% if entry_ptr_state|string == "print_paused" %} {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 _____ _park_head print_paused | G0 X{x_park} Y{y_park} F15000 _____ {% endif %} G0 X{x_park} Y{y_park} F15000 {% endif %} go_relative G1 Z{final_deltaz} F900 go_absolute {% if entry_ptr_state|string == "print_ending" or entry_ptr_state|string == "print_started" or entry_ptr_state|string == "print_resumed" or entry_ptr_state|string == "print_cancelling" %} {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 _____ _park_head B | G0 X{x_park} Y{y_park} F15000 _____ {% endif %} G0 X{x_park} Y{y_park} F15000 {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_park_head {% endif %} [gcode_macro _gcodeproc_vars] description = module variables variable_gcodeproc_verb_error = 1 variable_gcodeproc_verb_info = 0 variable_gcodeproc_verb_status = 0 variable_gcodeproc_verb_debug = 0 variable_gcodeproc_verb_codeflow = 0 variable_dynamic_extrate_enable = 0 variable_dynamic_spdrate_enable = 0 gcode = [delayed_gcode _gcodeproc_module_start] initial_duration = 0.5 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_gcodeproc_module_start func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _gcodeproc_module_start Start <<< {% endif %} SAVE_VARIABLE VARIABLE=module_gcodeproc_loaded VALUE=1 SAVE_VARIABLE VARIABLE=gcodeproc_err_flag VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_modload %} M118 >>> _gcodeproc_module_start End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_gcodeproc_module_start {% endif %} [gcode_macro _SetSlicerVar] description = Used to runtime set slicer variables contained in gcode (done at slice time w/ regex post processing) gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_SetSlicerVar func_params='"{rawparams|string}"' {% endif %} {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_codeflow %} M118 >>> _SetSlicerVar Start <<< {% endif %} {% if params.VARIABLE|string == "TYPE" %} {% set mesh_name = params.VALUE|string %} {% if svv.module_linadv_loaded %} {% if printer["gcode_macro _linadv_vars"].dynamic_pa_enable %} _SetDynamicPA MESH={mesh_name} {% else %} {% endif %} {% endif %} {% if printer["gcode_macro _gcodeproc_vars"].dynamic_extrate_enable %} _SetDynamicExtRate MESH={mesh_name} {% else %} {% endif %} {% if printer["gcode_macro _gcodeproc_vars"].dynamic_spdrate_enable %} _SetDynamicSpdRate MESH={mesh_name} {% else %} {% endif %} {% endif %} {% if params.VARIABLE|string == "maxz" %} {% set svv_VALUE = params.VALUE|replace("\"","")|float %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 >>> maxz raw:{params.VALUE} val:{svv_VALUE} <<< {% endif %} {% if svv.maxz|float < svv_VALUE|float %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 >>> SAVING MAXZ:{svv.maxz|float} THIS:{svv_VALUE|float} <<< {% endif %} SAVE_VARIABLE VARIABLE={params.VARIABLE|string} VALUE={svv_VALUE|float} {% else %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 >>> SKIPPED MAXZ UPDATE - SAVED:{svv.maxz|float} THIS:{params.VALUE|float} <<< {% endif %} {% endif %} {% else %} {% if params.VALUE|replace("\"","")|int|string == params.VALUE|replace("\"","")|string %} {% set svv_VALUE = params.VALUE|replace("\"","")|int %} SAVE_VARIABLE VARIABLE={params.VARIABLE|string} VALUE={svv_VALUE} {% elif params.VALUE|replace("\"","")|float|string == params.VALUE|replace("\"","")|string %} {% set svv_VALUE = params.VALUE|replace("\"","")|float %} SAVE_VARIABLE VARIABLE={params.VARIABLE|string} VALUE={svv_VALUE} {% else %} {% set svv_VALUE = "'\"" + params.VALUE|string + "\"'" %} SAVE_VARIABLE {rawparams} {% endif %} {% endif %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_codeflow %} M118 >>> _SetSlicerVar End <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_SetSlicerVar {% endif %} [gcode_macro _SetDynamicExtRate] description = Used to set klipper's Extrusion Rate Multiplier based on specific mesh types passed in gcode variable_mesh_name = ["Unknown", "Perimeter", "External perimeter", "Overhang perimeter", "Internal infill", "Solid infill", "Top solid infill", "Ironing", "Bridge infill", "Gap fill", "Skirt/Brim", "Support material", "Support material interface", "Wipe tower", "Custom", "Mixed" ] variable_mesh_extrate = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_SetDynamicExtRate func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _gcodeproc_vars"].dynamic_extrate_enable %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_codeflow %} M118 >>> _SetDynamicExtRate Start <<< {% endif %} {% set this1 = namespace(pa_unset=true) %} {% set this2 = namespace(matches=0) %} {% for mesh_idx in range(printer["gcode_macro _SetDynamicExtRate"].mesh_name|length) %} {% if params.MESH|string|lower == printer["gcode_macro _SetDynamicExtRate"].mesh_name[mesh_idx|int]|string|lower %} M221 S{(printer["gcode_macro _SetDynamicExtRate"].mesh_extrate[mesh_idx|int]|float * 100)|int} {% set this1.pa_unset = false %} {% set this2.matches = this2.matches + 1 %} {% endif %} {% endfor %} {% if this1.pa_unset %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_error %} M118 >>> _SetDynamicExtRate|UNKNOWN MESH: {params.MESH|string|lower} <<< {% endif %} M300 S200 P50 {% endif %} {% if this2.matches > 1 %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_error %} M118 >>> _SetDynamicExtRate|Multiple matches on MESH: {params.MESH|string|lower} - matched {this2.matches} times <<< {% endif %} M300 S200 P50 {% endif %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_codeflow %} M118 >>> _SetDynamicExtRate End <<< {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_SetDynamicExtRate {% endif %} [gcode_macro _SetDynamicSpdRate] description = Used to set klipper's Speed Rate Multiplier based on specific mesh types passed in gcode variable_mesh_name = ["Unknown", "Perimeter", "External perimeter", "Overhang perimeter", "Internal infill", "Solid infill", "Top solid infill", "Ironing", "Bridge infill", "Gap fill", "Skirt/Brim", "Support material", "Support material interface", "Wipe tower", "Custom", "Mixed" ] variable_mesh_spdrate = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_SetDynamicSpdRate func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _gcodeproc_vars"].dynamic_spdrate_enable %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_codeflow %} M118 >>> _SetDynamicSpdRate Start <<< {% endif %} {% set this1 = namespace(pa_unset=true) %} {% set this2 = namespace(matches=0) %} {% for mesh_idx in range(printer["gcode_macro _SetDynamicSpdRate"].mesh_name|length) %} {% if params.MESH|string|lower == printer["gcode_macro _SetDynamicSpdRate"].mesh_name[mesh_idx|int]|string|lower %} M220 S{(printer["gcode_macro _SetDynamicSpdRate"].mesh_spdrate[mesh_idx|int]|float * 100)|int} {% set this1.pa_unset = false %} {% set this2.matches = this2.matches + 1 %} {% endif %} {% endfor %} {% if this1.pa_unset %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_error %} M118 >>> _SetDynamicSpdRate|UNKNOWN MESH: {params.MESH|string|lower} <<< {% endif %} M300 S200 P50 {% endif %} {% if this2.matches > 1 %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_error %} M118 >>> _SetDynamicSpdRate|Multiple matches on MESH: {params.MESH|string|lower} - matched {this2.matches} times <<< {% endif %} M300 S200 P50 {% endif %} {% if printer["gcode_macro _gcodeproc_vars"].gcodeproc_verb_codeflow %} M118 >>> _SetDynamicSpdRate End <<< {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_SetDynamicSpdRate {% endif %} [gcode_macro PRINT_START] gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PRINT_START func_params='"{rawparams|string}"' {% endif %} {% set th = printer.toolhead %} SAVE_VARIABLE VARIABLE=maxz VALUE=0.0 SAVE_VARIABLE VARIABLE=ercf_swaps VALUE=0 M220 S100 M221 S100 M104 S{params.EXTRUDER|int} M140 S{params.BED|int} {% if svv.module_ercf_loaded|int %} {% if printer["gcode_macro _ERCF_VAR"].clog_detection|int == 1 %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 {% endif %} {% if svv.module_linadv_loaded %} {% if printer["gcode_macro _linadv_vars"].dynamic_pa_enable %} M118 -- Mesh-Specific Dynamic PA Enabled -- {% else %} M118 -- Mesh-Specific Dynamic PA DISABLED -- {% endif %} {% endif %} {% if svv.module_gcodeproc_loaded %} {% if printer["gcode_macro _gcodeproc_vars"].dynamic_extrate_enable %} M118 -- Mesh-Specific Dynamic ExtRate Enabled -- {% else %} M118 -- Mesh-Specific Dynamic ExtRate DISABLED -- {% endif %} {% endif %} {% if svv.module_gcodeproc_loaded %} {% if printer["gcode_macro _gcodeproc_vars"].dynamic_spdrate_enable %} M118 -- Mesh-Specific Dynamic SpdRate Enabled -- {% else %} M118 -- Mesh-Specific Dynamic SpdRate DISABLED -- {% endif %} {% endif %} {% if printer["gcode_macro _ERCF_VAR"].test_ercf_load_seq_at_print %} M118 PrintStart ERCF Fil Load Test Seq Starting ERCF_TEST_LOAD_SEQUENCE LOOP=1 M118 PrintStart ERCF Fil Load Test Seq Completed {% endif %} {% endif %} {% if svv.v2_2526_slicer_check != "mhz_cura" and svv.v2_2526_slicer_check != "mhz_ps" %} M117 Houston, We have a problem... SAVE_VARIABLE VARIABLE=v2_2526_slicer_check VALUE='"NULL"' {action_raise_error("WRONG SLICER AND/OR CONFIGURATION USED: " + svv.v2_2526_slicer_check|string) } {% else %} M118 { "Slicer Check Passed: " ~ svv.v2_2526_slicer_check } {% endif %} {% if svv.module_ledeff_loaded %} _set_ledeff_mode CHAIN=chamber_lights EFFECT=normal RESET=1 _set_ledeff_mode CHAIN=lcd_lights EFFECT=normal RESET=1 ; _set_ledeff_mode CHAIN=ercf_lights EFFECT=off RESET=1 ; _set_ledeff_mode CHAIN=dash_lights EFFECT=off RESET=1 {% else %} ChLts_Normal LcdLts_Normal ; ERCFLts_off ; DBLts_off {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Print Starting <<< {% endif %} {% if svv.module_debug_loaded %} _disable_save_var_debug {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_starting"' snd_PrintStart {% if svv.module_ercf_loaded %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int == 1 %} UPDATE_DELAYED_GCODE ID=disable_heater DURATION=0 SET_GCODE_VARIABLE MACRO=_ERCF_PAUSE VARIABLE=is_paused VALUE=0 {% endif %} {% endif %} reset_noz_cam CLEAR_PAUSE _HOURMETER_ON _PrintLED_On M106 S26 M141 S60 go_absolute G0 F15000 _ENSURE_QGL CLEAN_NOZZLE G28 Z {% if svv.v2_2526_slicer_check == "mhz_ps" %} M109 S{params.EXTRUDER|int} {% endif %} {% if svv.v2_2526_slicer_check != "mhz_ps" %} {% if svv.module_ercf_loaded and printer['filament_switch_sensor toolhead_sensor'].filament_detected != False %} {% else %} _print_purge {% endif %} {% endif %} {% if svv.v2_2526_slicer_check == "mhz_ps" %} M190 S{params.BED|int} {% endif %} {% if svv.module_ercf_loaded %} {% if printer["gcode_macro _ERCF_VAR"].clog_detection|int == 1 %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1 {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Temps are up - Printing <<< {% endif %} M118 PRINT_START @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} M117 Printing SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_started"' _start_bounds_checking {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PRINT_START {% endif %} [gcode_macro print_start_purge] description = purge at start of print, if param.TOWER gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=print_start_purge func_params='"{rawparams|string}"' {% endif %} {% if params.TOWER|default(0)|int %} _print_purge {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=print_start_purge {% endif %} [gcode_macro _print_purge] description = purge with return to entry position variable_verbose = False variable_purge_temp_min = 180 variable_purge_len = 30 variable_purge_spd = 750 variable_purge_ret = 0.2 variable_ooze_dwell = 1 variable_wipe_zheight = 0.05 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_print_purge func_params='"{rawparams|string}"' {% endif %} {% set svv = printer.save_variables.variables %} {% set th = printer.toolhead %} {% set z_entry = th.position.z|float %} save_gcode_state NAME=print_purge_entry {% if ( printer['filament_switch_sensor toolhead_sensor'].filament_detected == True and printer.extruder.temperature >= purge_temp_min ) or printer['filament_switch_sensor toolhead_sensor'].filament_detected == False %} go_relative G1 Z5.0 F3000 go_absolute G1 X{range(6,70)|random} Y350 F20000 G1 Z{wipe_zheight} F3000 go_relative M400 {% if verbose %} M118 {"Purging " ~ purge_len ~ "mm @ " ~ purge_spd ~ "mm/min..."} {% endif %} G1 E{purge_len} F{purge_spd} go_absolute _reset_extruder G1 Y340 G0 Z15 CLEAN_NOZZLE {% else %} M118 No Purge due to Low Temp... {% endif %} G0 Z{z_entry} restore_gcode_state NAME=print_purge_entry MOVE=1 MOVE_SPEED=250 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_print_purge {% endif %} [pause_resume] recover_velocity = 300.0 [delayed_gcode pause_alarm] initial_duration = 0 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=pause_alarm func_params='"{rawparams|string}"' {% endif %} _PrintLED_Off M300 P100 S3000 M300 P100 S3000 M300 P100 S3000 _PrintLED_On UPDATE_DELAYED_GCODE ID=pause_alarm DURATION=30 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=pause_alarm {% endif %} [gcode_macro start_pause_alarm] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=start_pause_alarm func_params='"{rawparams|string}"' {% endif %} UPDATE_DELAYED_GCODE ID=pause_alarm DURATION=1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=start_pause_alarm {% endif %} [gcode_macro stop_pause_alarm] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=stop_pause_alarm func_params='"{rawparams|string}"' {% endif %} UPDATE_DELAYED_GCODE ID=pause_alarm DURATION=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=stop_pause_alarm {% endif %} [gcode_macro PAUSE] description = Pause the actual running print rename_existing = _PAUSE_STOCK gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PAUSE func_params='"{rawparams|string}"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Pausing <<< {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_pausing"' {% if svv.ercf_err_flag %} save_variable VARIABLE=pause_ercf_error VALUE=1 {% else %} SAVE_GCODE_STATE NAME=State_Save_Pause save_variable VARIABLE=pause_ercf_error VALUE=0 {% endif %} _HOURMETER_OFF _PrintLED_Off {% if printer.save_variables.variables.module_ledeff_loaded %} _set_ledeff_mode CHAIN=chamber_lights EFFECT=normal RESET=1 _set_ledeff_mode CHAIN=lcd_lights EFFECT=normal RESET=1 ; _set_ledeff_mode CHAIN=ercf_lights EFFECT=off RESET=1 ; _set_ledeff_mode CHAIN=dash_lights EFFECT=off RESET=1 {% else %} ChLts_Normal LcdLts_Normal ; ERCFLts_off ; DBLts_off {% endif %} {% set max_x = printer.toolhead.axis_maximum.x|float %} {% set max_y = printer.toolhead.axis_maximum.y|float %} {% set x = params.X|default(max_x//2)|float %} {% set y = params.Y|default(0)|float %} {% set z = params.Z|default(20)|float %} {% set e = params.E|default(printer["gcode_macro _printer_vars"].pause_retract_default|float)|float %} {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% set lift_z = z|abs %} {% if act_z < (max_z - lift_z) %} {% set z_safe = lift_z %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} M118 _PAUSE_STOCK @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} _PAUSE_STOCK go_relative REASON="Pause Extruder Retract and Z Lift" {% if printer.extruder.can_extrude|lower == 'true' %} G1 E-{e} F2100 REASON="resume deretract" {% else %} M118 No Pause Retract as Extruder not hot enough {% endif %} {% if "xyz" in printer.toolhead.homed_axes %} G1 Z{z_safe} go_absolute REASON="Extruder and Z Lift done, going abs for X/Y parking" G1 X{x} Y{y} F6000 {% else %} M118 Printer not homed {% endif %} go_absolute REASON="All Pause relative stuff done" snd_PrintPause start_pause_alarm M118 PAUSE @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Paused <<< {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_paused"' {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PAUSE {% endif %} [gcode_macro RESUME] description = Resume the actual running print - adapted for ERCF rename_existing = _RESUME_STOCK gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=RESUME func_params='"{rawparams|string}"' {% endif %} {% set resume_flag = 0|int %} {% if svv.module_ercf_loaded %} {% if printer["gcode_macro _ERCF_PAUSE"].is_paused|int != 0 %} M118 You can't resume the print without unlocking the ERCF first. M118 Run ERCF_UNLOCK and solve any issue before hitting Resume again {% else %} {% set resume_flag = 1|int %} {% if printer["gcode_macro _ERCF_VAR"].clog_detection|int == 1 %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1 {% endif %} {% endif %} {% else %} {% set resume_flag = 1|int %} {% endif %} {% if resume_flag %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Resuming <<< {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_resuming"' M118 RESUME @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} snd_PrintResume _HOURMETER_ON _PrintLED_On {% if svv.module_ledeff_loaded %} _set_ledeff_mode CHAIN=chamber_lights EFFECT=normal RESET=1 _set_ledeff_mode CHAIN=lcd_lights EFFECT=normal RESET=1 {% else %} ChLts_Normal LcdLts_Normal {% endif %} go_absolute REASON="forcing absolute before restoring gcode state" {% if svv.pause_ercf_error %} RESTORE_GCODE_STATE NAME=ERCF_state MOVE=1 MOVE_SPEED=300.0000 {% else %} RESTORE_GCODE_STATE NAME=State_Save_Pause MOVE=1 MOVE_SPEED=300.0000 {% endif %} {% set e = params.E|default(printer["gcode_macro _printer_vars"].pause_retract_default|float)|float %} {% if 'VELOCITY' in params|upper %} {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 >>> RESUME | Velocity param passed <<< {% endif %} {% set get_params = ('VELOCITY=' ~ params.VELOCITY) %} {%else %} {% set get_params = "" %} {% endif %} {% if printer.extruder.can_extrude|lower == 'true' %} go_relative REASON="resume extruder deretract" G1 E{e} F2100 REASON="resume deretract" {% else %} M118 No Resume Deretract as Extruder not hot enough {% endif %} go_absolute REASON="in case we are relative for deretract" stop_pause_alarm M300 P10 S1000 M300 P10 S2000 {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 >>> RESUME | _RESUME_STOCK {rawparams} <<< {% endif %} M118 _RESUME_STOCK @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} _RESUME_STOCK {get_params} CLEAR_PAUSE SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_resumed"' _start_bounds_checking {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Resumed <<< {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=RESUME {% endif %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=RESUME {% endif %} [gcode_macro CANCEL_PRINT] description = Cancel the actual running or paused print rename_existing = _CANCEL_PRINT_STOCK gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=CANCEL_PRINT func_params='"{rawparams|string}"' {% endif %} {% set th = printer.toolhead %} {% set canx_entry_ptr_state = svv.last_ptr_state %} {% if printer["gcode_macro _printer_vars"].ptr_verb_debug %} M118 _____ CANCEL_PRINT | canx_entry_ptr_state: {canx_entry_ptr_state} _____ {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> Canceling Print <<< {% endif %} M118 CANCEL_PRINT @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_canceling"' stop_pause_alarm M300 P10 S3000 M300 P10 S2000 M300 P10 S1000 M106 S26 {% if svv.module_ercf_loaded %} SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} ERCF_EJECT FINAL=1 {% endif %} {% endif %} {% if svv.module_ledeff_loaded %} _set_ledeff_mode CHAIN=chamber_lights EFFECT=normal _set_ledeff_mode CHAIN=lcd_lights EFFECT=normal {% else %} ChLts_Normal LcdLts_Normal {% endif %} TURN_OFF_HEATERS CLEAR_PAUSE SDCARD_RESET_FILE _park_head ENTRY='{canx_entry_ptr_state|string}' _CANCEL_PRINT_STOCK _HOURMETER_OFF _PrintLED_Off SAVE_VARIABLE VARIABLE=final_maxz VALUE={svv.maxz} SAVE_VARIABLE VARIABLE=maxz VALUE=0.0 SAVE_VARIABLE VARIABLE=has_wipe_tower VALUE=-1 SAVE_VARIABLE VARIABLE=v2_2526_slicer_check VALUE='"NULL"' SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_canceled"' SAVE_VARIABLE VARIABLE=last_saved_gcode_state VALUE='"NULL"' {% if 1 %} {% if svv.module_ercf_loaded %} M118 { ">>> Print canceled after " ~ svv.ercf_swaps ~ " swaps. <<<" } M117 Canx - {svv.ercf_swaps} swaps. {% else %} M118 >>> Print Canceled <<< M117 Print Canceled {% endif %} {% endif %} snd_PrintCancel SAVE_VARIABLE VARIABLE=ercf_swaps_last_canx_print VALUE={svv.ercf_swaps} SAVE_VARIABLE VARIABLE=ercf_swaps VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=CANCEL_PRINT {% endif %} [gcode_macro PRINT_END] variable_retract_temp_min = 180 variable_print_end_scrub = False gcode = {% set svv = printer.save_variables.variables %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=PRINT_END func_params='"{rawparams|string}"' {% endif %} {% set th = printer.toolhead %} {% set entry_ptr_state = svv.last_ptr_state %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 >>> Print Ending - svv.maxz:{svv.maxz} th.z:{th.position.z|float} <<< {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_ending"' {% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %} {% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %} {% set z_safe = [(th.position.z|float + 1), th.axis_maximum.z|float]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END _reset_extruder {% if printer.extruder.temperature|int >= retract_temp_min|int %} G1 E-0.4 F3600 {% else %} M118 No print_end retract due to Low Temp... {% endif %} G0 X{x_safe} Y{y_safe} Z{z_safe} F15000 M400 _park_head ENTRY='print_ending' {% if params.UNLOAD|default(0)|int %} ERCF_EJECT FINAL=1 {% endif %} ; {% if print_end_scrub or params.SCRUB|default(0)|int %} ; ; G0 Z15 F1500 ; CLEAN_NOZZLE DX={th.axis_maximum.x//2|float} DY={th.axis_maximum.y|float} DZ=15.0 ; {% endif %} M107 _HOURMETER_OFF _PrintLED_Off RESTORE_GCODE_STATE NAME=STATE_PRINT_END M117 Print Completed M220 S100 M221 S100 M106 S26 M141 S40 TURN_OFF_HEATERS CLEAR_PAUSE M118 PRINT_END @ {printer.virtual_sdcard.file_position} - {(printer.virtual_sdcard.progress*100)|round(2,'common')}%: X:{printer.toolhead.position.x} Y:{printer.toolhead.position.y} Z:{printer.toolhead.position.z} M300 P10 S1000 M300 P10 S2000 M300 P10 S3000 {% if svv.module_ledeff_loaded %} _set_ledeff_mode CHAIN=chamber_lights EFFECT=normal RESET=1 _set_ledeff_mode CHAIN=lcd_lights EFFECT=normal RESET=1 ; _set_ledeff_mode CHAIN=ercf_lights EFFECT=off RESET=1 ; _set_ledeff_mode CHAIN=dash_lights EFFECT=off RESET=1 {% else %} ChLts_Normal LcdLts_Normal ; ERCFLts_off ; DBLts_off {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"print_ended"' SAVE_VARIABLE VARIABLE=final_maxz VALUE={svv.maxz} SAVE_VARIABLE VARIABLE=maxz VALUE=0.0 SAVE_VARIABLE VARIABLE=has_wipe_tower VALUE=-1 SAVE_VARIABLE VARIABLE=v2_2526_slicer_check VALUE='"NULL"' SAVE_VARIABLE VARIABLE=last_saved_gcode_state VALUE='"NULL"' {% if 1 %} {% if svv.module_ercf_loaded %} {% if svv.ercf_swaps > 1 %} M118 { ">>> Print Complete - " ~ svv.ercf_swaps ~ " swaps. <<<" } M117 Done - {svv.ercf_swaps} swaps. {% else %} M118 { ">>> Print Complete - " ~ svv.ercf_swaps ~ " swap. <<<" } M117 Done - {svv.ercf_swaps} swap. {% endif %} {% else %} M118 >>> Print Complete <<< M117 Print Complete {% endif %} {% endif %} SAVE_VARIABLE VARIABLE=ercf_swaps_last_complete_print VALUE={svv.ercf_swaps} SAVE_VARIABLE VARIABLE=ercf_swaps VALUE=0 printer_config_backup {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=PRINT_END {% endif %} [delayed_gcode clear_display] gcode = M117 [delayed_gcode welcome_msg] gcode = M117 Welcome! UPDATE_DELAYED_GCODE ID=clear_display DURATION=10 [delayed_gcode _startup_var_init] initial_duration = 0.1 gcode = _SAVE_VARIABLE_STOCK VARIABLE=proc_depth VALUE=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_startup_var_init func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"initializing"' SAVE_VARIABLE VARIABLE=module_ledeff_loaded VALUE=0 SAVE_VARIABLE VARIABLE=module_ercf_loaded VALUE=0 SAVE_VARIABLE VARIABLE=module_debug_loaded VALUE=0 SAVE_VARIABLE VARIABLE=module_linadv_loaded VALUE=0 SAVE_VARIABLE VARIABLE=module_scrub_loaded VALUE=0 SAVE_VARIABLE VARIABLE=module_klicky_loaded VALUE=0 SAVE_VARIABLE VARIABLE=module_gcodeproc_loaded VALUE=0 SAVE_VARIABLE VARIABLE=extruder_temp_setting VALUE=0 SAVE_VARIABLE VARIABLE=heater_bed_temp_setting VALUE=0 SAVE_VARIABLE VARIABLE=ercf_he_temp_restore_val VALUE=0 SAVE_VARIABLE VARIABLE=maxz VALUE=0.0 SAVE_VARIABLE VARIABLE=has_wipe_tower VALUE=-1 SAVE_VARIABLE VARIABLE=z_axis_cal VALUE=0 SAVE_VARIABLE VARIABLE=v2_2526_slicer_check VALUE='"NULL"' SAVE_VARIABLE VARIABLE=last_saved_gcode_state VALUE='"NULL"' SAVE_VARIABLE VARIABLE=ercf_selector_homed VALUE=0 SAVE_VARIABLE VARIABLE=ercf_he_temp_restore_val VALUE=0 ; SAVE_VARIABLE VARIABLE=ercf_gear_direction VALUE=0 ; SAVE_VARIABLE VARIABLE=ercf_encoder_count VALUE=0 SAVE_VARIABLE VARIABLE=last_chamber_lights_effect VALUE='"off"' SAVE_VARIABLE VARIABLE=last_dash_lights_effect VALUE='"off"' SAVE_VARIABLE VARIABLE=last_ercf_lights_effect VALUE='"off"' SAVE_VARIABLE VARIABLE=last_lcd_lights_effect VALUE='"off"' save_variable VARIABLE=total_toolchanges VALUE=0 SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"initialized"' {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_startup_var_init {% endif %} [delayed_gcode printer_startup] initial_duration = 1.0 gcode = {% set svv = printer.save_variables.variables %} ; {% if svv.module_debug_loaded %} _enable_trace_debug REASON='"Startup Testing"' {% endif %} ; {% if svv.module_debug_loaded %} _enable_gmove_debug REASON='"Startup Testing"' {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=printer_startup func_params='"{rawparams|string}"' {% endif %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"starting"' SAVE_VARIABLE VARIABLE=last_spd_fact VALUE=1.0 {% if svv.module_ercf_loaded %} _ERCF_SERVO_UP {% endif %} {% if svv.module_ledeff_loaded %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> LED CONTROL: LED_EFFECT <<< {% endif %} STOP_LED_EFFECTS _set_ledeff_mode CHAIN=chamber_lights EFFECT=normal RESET=1 _set_ledeff_mode CHAIN=lcd_lights EFFECT=normal RESET=1 _set_ledeff_mode CHAIN=ercf_lights EFFECT=off RESET=1 _set_ledeff_mode CHAIN=dash_lights EFFECT=off RESET=1 {% else %} {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 >>> LED CONTROL: KLIPPER <<< {% endif %} ChLts_Normal LcdLts_Normal ; ERCFLts_off ; DBLts_off {% endif %} printer_config_restore M106 S26 UPDATE_DELAYED_GCODE ID=welcome_msg DURATION=5 sng_startup _IdleLED_On _PwrLED_Off {% if printer["gcode_macro set_startup_bedtemp"].heat_on_start %} set_startup_bedtemp {% endif %} RUN_SHELL_COMMAND CMD=set_cam_config {% if svv.module_ercf_loaded %} _ercf_ptr_startup {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=printer_startup {% endif %} _start_bounds_checking ; {% if svv.module_debug_loaded %} _disable_gmove_debug {% endif %} ; {% if svv.module_debug_loaded %} _disable_trace_debug {% endif %} {% if svv.debug_err_flag == 0 and svv.ercf_err_flag == 0 and svv.klicky_err_flag == 0 and svv.ledeff_err_flag == 0 and svv.linadv_err_flag == 0 and svv.gcodeproc_err_flag == 0 and svv.scrub_err_flag == 0 %} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"started"' M118 Printer state: Ready {% else %} M118 Printer state: NOT Ready - an error is asserted: M118 - svv.debug_err_flag: {svv.debug_err_flag} M118 - svv.ercf_err_flag: {svv.ercf_err_flag} M118 - svv.klicky_err_flag: {svv.klicky_err_flag} M118 - svv.ledeff_err_flag: {svv.ledeff_err_flag} M118 - svv.linadv_err_flag: {svv.linadv_err_flag} M118 - svv.gcodeproc_err_flag: {svv.gcodeproc_err_flag} M118 - svv.scrub_err_flag: {svv.scrub_err_flag} SAVE_VARIABLE VARIABLE=last_ptr_state VALUE='"error"' {% endif %} [gcode_macro set_startup_bedtemp] description = Set bed temp at startup variable_heat_on_start = 0 variable_ptrstartup_bedtemp = 120 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=set_startup_bedtemp func_params='"{rawparams|string}"' {% endif %} M140 S{printer["gcode_macro set_startup_bedtemp"].ptrstartup_bedtemp|int} G4 P500 M300 S659.255 P125 {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 Heating Bed to {printer["gcode_macro set_startup_bedtemp"].ptrstartup_bedtemp|int} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=set_startup_bedtemp {% endif %} [gcode_macro corexy_gantry_speed_test] description = ~MHz's CoreXY Speed Test [spdidx=float 1.0 to 20.0] 1 is slow, 6 is fast, >10 PPE advised... gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=corexy_gantry_speed_test func_params='"{rawparams|string}"' {% endif %} {% set axialrate_multiplier = 1.414166667|float %} {% set max_x = printer.toolhead.axis_maximum.x|int %} {% set max_y = printer.toolhead.axis_maximum.y|int %} {% set max_frxy = printer.toolhead.max_velocity|int * 60 %} {% set min_x_test = 10|int %} {% set min_y_test = 10|int %} {% set max_x_test = max_x - 10|int %} {% set max_y_test = max_y - 10|int %} {% set test_x_origin = max_x_test|int %} {% set test_Y_origin = max_y_test|int %} {% set test_preprateidx = 1|int %} {% set spdidx = params.SPDIDX|default(4)|float %} {% if spdidx >= 50.0 %} {% set spdidx = (spdidx/50.0) %} {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_info %} M118 corexy_gantry_speed_test params: {rawparams} {% endif %} {% set spdidx_min = 1|int %} {% set spdidx_max = 20|int %} {% if spdidx < spdidx_min or spdidx > spdidx_max %} M118 Passed spdidx parameter out of bounds - aborting { action_raise_error("Bounds: 1.0>=spdidx>=20.0 OR 50.0>=spdidx>=1000.0") } {% endif %} {% set test_axialfr = (spdidx*3000*axialrate_multiplier)|int %} {% set test_angularfr = (spdidx*3000)|int %} M118 {'PrinterMaxFeedrate:\t' + max_frxy|int|string + ' mm/min | ' + (max_frxy/60)|int|string + ' mm/s' } M118 {'TestAxialFeedrate:\t' + test_axialfr|int|string + ' mm/min | ' + (test_axialfr/60)|int|string + ' mm/s' } M118 {'TestAngularFeedrate:\t' + test_angularfr|int|string + ' mm/min | ' + (test_angularfr/60)|int|string + ' mm/s' } {% if test_axialfr > max_frxy %} { action_raise_error("Passed spdidx parameter imputes a speed exceedance - aborting") } {% endif %} {% set test_preprate = 3000|int %} go_absolute _ENSURE_HOMED {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 corexy_gantry_speed_test Commencing {% endif %} G0 X{test_x_origin} Y{test_Y_origin} F{test_preprate} G4 P500 GET_POSITION G0 X{max_x_test} Y{min_y_test} F{test_axialfr} G0 X{min_x_test} Y{max_y_test} F{test_angularfr} G0 X{max_x_test} Y{min_y_test} F{test_angularfr} G0 X{min_x_test} Y{min_y_test} F{test_axialfr} G0 X{max_x_test} Y{max_y_test} F{test_angularfr} G0 X{min_x_test} Y{min_y_test} F{test_angularfr} G0 X{min_x_test} Y{max_y_test} F{test_axialfr} G0 X{max_x_test} Y{max_y_test} F{test_axialfr} G0 X{min_x_test} Y{min_y_test} F{test_angularfr} G0 X{max_x_test} Y{max_y_test} F{test_angularfr} G0 X{min_x_test} Y{max_y_test} F{test_axialfr} G0 X{max_x_test} Y{min_y_test} F{test_angularfr} G0 X{min_x_test} Y{max_y_test} F{test_angularfr} G0 X{min_x_test} Y{min_y_test} F{test_axialfr} G0 X{max_x_test} Y{min_y_test} F{test_axialfr} G0 X{max_x_test} Y{max_y_test} F{test_axialfr} G0 X{test_x_origin} Y{test_Y_origin} F{test_preprate} G4 P500 GET_POSITION {% if printer["gcode_macro _printer_vars"].ptr_verb_status %} M118 corexy_gantry_speed_test Complete {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=corexy_gantry_speed_test {% endif %} [gcode_macro _bounds_vars] description = vars for bounds checking variable_bounds_alarm_duration = 1000 variable_bounds_alarm_recurse_period = 1800 variable_bounds_check_period = 60 variable_h2o_flow_rpm_min = 375 variable_h2o_flow_rpm_max = 1500 variable_h2o_pump_rpm_min = 1500 variable_h2o_pump_rpm_max = 4500 variable_h2o_radfan_rpm_min = 1000 variable_h2o_radfan_rpm_max = 3000 variable_h2o_temp_min = 10 variable_h2o_temp_max = 100 gcode = [gcode_macro _fire_warble_alarm] description = gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_fire_warble_alarm func_params='"{rawparams|string}"' {% endif %} SET_PIN PIN=_Alarm_pin VALUE=1 G4 P{printer["gcode_macro _bounds_vars"].bounds_alarm_duration} SET_PIN PIN=_Alarm_pin VALUE=0 M118 M118 ___ H2O Cooling Exceedance Alert Alarm ___ M118 M118 run _stop_bounds_alarm to cancel Exceedance Alert Alarm once issue is resolved M118 or _stop_bounds_checking to defeat automatic H2O parameter checking entirely M118 and _start_bounds_checking to reenable automatic H2O parameter checking when appropriate M118 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_fire_warble_alarm {% endif %} [delayed_gcode _recursive_bounds_alarm] initial_duration = 0 gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_recursive_bounds_alarm func_params='"{rawparams|string}"' {% endif %} {% if printer.extruder.target > 0 %} M118 H2O cooling parameters Exceedance ALERT _fire_warble_alarm UPDATE_DELAYED_GCODE ID=_recursive_bounds_alarm DURATION={printer["gcode_macro _bounds_vars"].bounds_alarm_recurse_period|float} {% else %} M118 H2O cooling parameters Exceedance Alert CANCELED _stop_bounds_alarm {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_recursive_bounds_alarm {% endif %} [gcode_macro _start_bounds_alarm] description = Alert and then set recursive reentry gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_start_bounds_alarm func_params='"{rawparams|string}"' {% endif %} M118 H2O cooling parameters Exceedance ALERT _fire_warble_alarm UPDATE_DELAYED_GCODE ID=_recursive_bounds_alarm DURATION={printer["gcode_macro _bounds_vars"].bounds_alarm_recurse_period|float} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_start_bounds_alarm {% endif %} [gcode_macro _stop_bounds_alarm] description = cancels the bound exceedance alarm gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_stop_bounds_alarm func_params='"{rawparams|string}"' {% endif %} UPDATE_DELAYED_GCODE ID=_recursive_bounds_alarm DURATION=0 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_stop_bounds_alarm {% endif %} [gcode_macro _emit_hho_parameters] description = emits H2O Cooling Parameters and Bounds on same to console gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_emit_hho_parameters func_params='"{rawparams|string}"' {% endif %} {% set H2O_Flow_RPM = printer['heater_fan H2O_Flow'].rpm %} {% set H2O_Pump_RPM = printer['heater_fan H2O_Pump'].rpm %} {% set H2O_RadFan_RPM = printer['heater_fan H2O_RadFan'].rpm %} {% set H2O_Temp = printer['temperature_sensor Hotend_H2O'].temperature %} M118 M118 H2O Cooling Parameters: M118 H2O_Flow_RPM: {printer["gcode_macro _bounds_vars"].h2o_flow_rpm_min|int} <= {H2O_Flow_RPM|int} <= {printer["gcode_macro _bounds_vars"].h2o_flow_rpm_max|int} M118 H2O_Pump_RPM: {printer["gcode_macro _bounds_vars"].h2o_pump_rpm_min|int} <= {H2O_Pump_RPM|int} <= {printer["gcode_macro _bounds_vars"].h2o_pump_rpm_max|int} M118 H2O_RadFan_RPM: {printer["gcode_macro _bounds_vars"].h2o_radfan_rpm_min|int} <= {H2O_RadFan_RPM|int} <= {printer["gcode_macro _bounds_vars"].h2o_radfan_rpm_max|int} M118 H2O_Temp: {printer["gcode_macro _bounds_vars"].h2o_temp_min|int} <= {H2O_Temp|int} <= {printer["gcode_macro _bounds_vars"].h2o_temp_max|int} M118 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_emit_hho_parameters {% endif %} [gcode_macro _check_bounds] description = runtime (during printing) proc to check various parameters and initiate a pause & bound_alarm on an exceedence gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_check_bounds func_params='"{rawparams|string}"' {% endif %} {% set H2O_Flow_RPM = printer['heater_fan H2O_Flow'].rpm %} {% set H2O_Pump_RPM = printer['heater_fan H2O_Pump'].rpm %} {% set H2O_RadFan_RPM = printer['heater_fan H2O_RadFan'].rpm %} {% set H2O_Temp = printer['temperature_sensor Hotend_H2O'].temperature %} {% if printer.extruder.target > 0 and ( (H2O_Flow_RPM > printer["gcode_macro _bounds_vars"].h2o_flow_rpm_max) or (H2O_Flow_RPM < printer["gcode_macro _bounds_vars"].h2o_flow_rpm_min) or (H2O_Pump_RPM > printer["gcode_macro _bounds_vars"].h2o_pump_rpm_max) or (H2O_Pump_RPM < printer["gcode_macro _bounds_vars"].h2o_pump_rpm_min) or (H2O_RadFan_RPM > printer["gcode_macro _bounds_vars"].h2o_radfan_rpm_max) or (H2O_RadFan_RPM < printer["gcode_macro _bounds_vars"].h2o_radfan_rpm_min) or (H2O_Temp > printer["gcode_macro _bounds_vars"].h2o_temp_max) or (H2O_Temp < printer["gcode_macro _bounds_vars"].h2o_temp_min) ) %} M118 ... H2O cooling parameters Exceedance ALERT _emit_hho_parameters _start_bounds_alarm M118 Pausing to enable resolution of H2O cooling parameters Exceedance pause {% else %} M118 ... H2O cooling parameters OK {% if params.REPORT|default(0) %} _emit_hho_parameters {% endif %} _stop_bounds_alarm {% endif %} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_check_bounds {% endif %} [delayed_gcode check_bounds] initial_duration = 0 gcode = M118 H2O cooling automatic parameter check... {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=check_bounds func_params='"{rawparams|string}"' {% endif %} _check_bounds UPDATE_DELAYED_GCODE ID=check_bounds DURATION={printer["gcode_macro _bounds_vars"].bounds_check_period|int} {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=check_bounds {% endif %} [gcode_macro _start_bounds_checking] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_start_bounds_checking func_params='"{rawparams|string}"' {% endif %} _stop_bounds_alarm M118 H2O cooling automatic parameter check Enabled UPDATE_DELAYED_GCODE ID=check_bounds DURATION=0.1 {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_start_bounds_checking {% endif %} [gcode_macro _stop_bounds_checking] gcode = {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_start function=_stop_bounds_checking func_params='"{rawparams|string}"' {% endif %} UPDATE_DELAYED_GCODE ID=check_bounds DURATION=0 M118 H2O cooling automatic parameter check Disabled {% if printer["gcode_macro _printer_vars"].ptr_verb_codeflow %} _proc_end function=_stop_bounds_checking {% endif %} [bed_mesh 110_Soaked_Klicky] version = 1 points = 0.050000, 0.050000, 0.082500, 0.080000, 0.117500 -0.032500, 0.030000, 0.015000, 0.017500, 0.075000 -0.007500, -0.007500, 0.000000, 0.035000, 0.060000 0.010000, 0.040000, 0.050000, 0.045000, 0.070000 0.052500, 0.092500, 0.077500, 0.052500, 0.080000 tension = 0.2 min_x = 40.0 algo = bicubic y_count = 5 mesh_y_pps = 2 min_y = 40.0 x_count = 5 max_y = 330.0 mesh_x_pps = 2 max_x = 330.0 [bed_mesh 120_MAGPROBE] version = 1 points = 0.072344, 0.080781, 0.059531, 0.050000, 0.092656 -0.000312, 0.005313, -0.015156, -0.017969, 0.021406 0.018281, 0.020781, 0.000000, -0.006719, 0.027656 0.023594, 0.035469, 0.021562, 0.000156, 0.040625 0.098594, 0.130625, 0.104375, 0.088594, 0.120937 tension = 0.2 mesh_x_pps = 2 algo = bicubic min_x = 40.0 min_y = 40.0 y_count = 5 mesh_y_pps = 2 x_count = 5 max_x = 330.0 max_y = 330.0 [bed_mesh HOT_KLICKY] version = 1 points = 0.115938, 0.114063, 0.075000, 0.093594, 0.175313 0.097500, 0.040938, -0.007344, 0.026875, 0.090625 0.040313, 0.013750, 0.000000, 0.019687, 0.044062 0.098750, 0.049687, 0.012812, 0.045000, 0.078750 0.157812, 0.171719, 0.125000, 0.133594, 0.200312 tension = 0.2 min_x = 40.0 algo = bicubic y_count = 5 mesh_y_pps = 2 min_y = 40.0 x_count = 5 max_y = 330.0 mesh_x_pps = 2 max_x = 330.0 [bed_mesh COLD_KLICKY] version = 1 points = 0.003281, 0.035625, 0.063438, 0.025781, -0.020937 -0.007344, 0.030469, 0.021719, -0.021094, -0.020000 -0.035156, 0.006406, 0.000000, -0.013906, -0.055625 -0.013750, 0.044375, 0.014375, -0.021875, -0.044375 -0.032813, 0.016875, -0.002188, -0.035781, -0.036250 tension = 0.2 min_x = 40.0 algo = bicubic y_count = 5 mesh_y_pps = 2 min_y = 40.0 x_count = 5 max_y = 330.0 mesh_x_pps = 2 max_x = 330.0 [bed_mesh SOAKED] version = 1 points = 0.155000, 0.122500, 0.122500, 0.132500, 0.202500 0.092500, 0.082500, 0.035000, 0.037500, 0.112500 0.097500, 0.035000, 0.000000, 0.035000, 0.080000 0.122500, 0.102500, 0.067500, 0.072500, 0.125000 0.215000, 0.207500, 0.157500, 0.162500, 0.225000 tension = 0.2 mesh_x_pps = 2 algo = bicubic min_x = 40.0 min_y = 40.0 y_count = 5 mesh_y_pps = 2 x_count = 5 max_x = 330.0 max_y = 330.0 [bed_mesh 110_Klicky_NoSoak] version = 1 points = -0.045000, -0.025000, 0.002500, -0.045000, -0.060000 -0.075000, -0.000000, -0.010000, -0.050000, -0.025000 -0.007500, -0.002500, 0.000000, 0.000000, -0.022500 -0.007500, 0.027500, 0.040000, 0.010000, -0.010000 -0.002500, 0.057500, 0.040000, -0.015000, -0.022500 tension = 0.2 min_x = 40.0 algo = bicubic y_count = 5 mesh_y_pps = 2 min_y = 40.0 x_count = 5 max_y = 330.0 mesh_x_pps = 2 max_x = 330.0 [bed_mesh NoSoak] version = 1 points = -0.080000, -0.057500, -0.070000, -0.115000, -0.157500 -0.072500, -0.027500, -0.040000, -0.040000, -0.082500 -0.020000, -0.000000, 0.000000, -0.007500, -0.025000 -0.027500, 0.035000, 0.010000, 0.007500, -0.010000 -0.052500, 0.037500, 0.032500, 0.002500, -0.020000 tension = 0.2 min_x = 40.0 algo = bicubic y_count = 5 mesh_y_pps = 2 min_y = 40.0 x_count = 5 max_y = 330.0 mesh_x_pps = 2 max_x = 330.0 [bed_mesh UberSoaked] version = 1 points = 0.167500, 0.120000, 0.085000, 0.085000, 0.155000 0.055000, 0.040000, -0.010000, 0.037500, 0.102500 0.070000, 0.010000, 0.000000, 0.027500, 0.077500 0.082500, 0.082500, 0.030000, 0.057500, 0.107500 0.157500, 0.182500, 0.152500, 0.160000, 0.217500 tension = 0.2 mesh_x_pps = 2 algo = bicubic min_x = 40.0 min_y = 40.0 y_count = 5 mesh_y_pps = 2 x_count = 5 max_x = 330.0 max_y = 330.0 [bed_mesh default] version = 1 points = 0.137500, 0.090000, 0.082500, 0.122500, 0.170000 0.055000, 0.040000, 0.005000, 0.047500, 0.102500 0.052500, 0.017500, 0.000000, 0.017500, 0.090000 0.082500, 0.055000, 0.020000, 0.020000, 0.072500 0.140000, 0.155000, 0.122500, 0.105000, 0.165000 tension = 0.2 min_x = 40.0 algo = bicubic y_count = 5 mesh_y_pps = 2 min_y = 40.0 x_count = 5 max_y = 330.0 mesh_x_pps = 2 max_x = 330.0 ======================= Extruder max_extrude_ratio=20.787584 mcu 'mcu': Starting serial connect webhooks client 140047008911104: New connection webhooks client 140047008911104: Client info {'program': 'Moonraker', 'version': 'v0.7.1-560-g11beaa7'} mcu 'mcu': got {'#receive_time': 244060.393312579, u'next_clock': 2667618816, u'oid': 28, u'value': 31245, '#name': u'analog_in_state', '#sent_time': 244060.391163084} mcu 'mcu': got {'#receive_time': 244060.433326947, u'next_clock': 2674818816, u'oid': 32, u'value': 7553, '#name': u'analog_in_state', '#sent_time': 244060.391163084} mcu 'mcu': got {'#receive_time': 244060.453295644, u'next_clock': 2678418816, u'oid': 34, u'value': 30778, '#name': u'analog_in_state', '#sent_time': 244060.442289605} mcu 'mcu': got {'#receive_time': 244060.473314672, u'next_clock': 2682018816, u'oid': 36, u'value': 22718, '#name': u'analog_in_state', '#sent_time': 244060.442289605} mcu 'mcu': got {'#receive_time': 244060.493279997, u'next_clock': 2685618816, u'oid': 38, u'value': 31170, '#name': u'analog_in_state', '#sent_time': 244060.442289605} mcu 'mcu': got {'#receive_time': 244060.583318424, u'next_clock': 2701818816, u'oid': 47, u'value': 6221, '#name': u'analog_in_state', '#sent_time': 244060.54507611} mcu 'mcu': got {'#receive_time': 244060.693378038, u'next_clock': 2721618816, u'oid': 28, u'value': 31240, '#name': u'analog_in_state', '#sent_time': 244060.648054341} Loaded MCU 'mcu' 94 commands (v0.10.0-184-gdd714fc7 / gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 2.34) MCU 'mcu' config: BUS_PINS_i2c1=PB6,PB7 BUS_PINS_i2c2=PB10,PB11 BUS_PINS_spi3a=PC11,PC12,PC10 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_i2c1a=PB8,PB9 RESERVE_PINS_USB=PA11,PA12 CLOCK_FREQ=180000000 BUS_PINS_spi1a=PB4,PB5,PB3 STATS_SUMSQ_BASE=256 BUS_PINS_spi3=PB4,PB5,PB3 STEPPER_BOTH_EDGE=1 ADC_MAX=4095 BUS_PINS_spi4=PE13,PE14,PE12 PWM_MAX=255 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi1=PA6,PA7,PA5 RESERVE_PINS_crystal=PH0,PH1 MCU=stm32f446xx mcu 'pico': Starting serial connect mcu 'mcu': got {'#receive_time': 244060.73329158, u'next_clock': 2728818816, u'oid': 32, u'value': 7551, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244060.753293291, u'next_clock': 2732418816, u'oid': 34, u'value': 30777, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244060.77330099, u'next_clock': 2736018816, u'oid': 36, u'value': 22720, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244060.793340717, u'next_clock': 2739618816, u'oid': 38, u'value': 31164, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244060.883307291, u'next_clock': 2755818816, u'oid': 47, u'value': 6218, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244060.993305692, u'next_clock': 2775618816, u'oid': 28, u'value': 31243, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244061.03329408, u'next_clock': 2782818816, u'oid': 32, u'value': 7551, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244061.053278812, u'next_clock': 2786418816, u'oid': 34, u'value': 30781, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244061.07329654, u'next_clock': 2790018816, u'oid': 36, u'value': 22715, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'pico': got {u'count': 108476, '#receive_time': 244061.091743788, u'next_clock': 2768273505, u'oid': 2, '#name': u'counter_state', '#sent_time': 244061.081305545, u'count_clock': 3201006826} mcu 'mcu': got {'#receive_time': 244061.093278783, u'next_clock': 2793618816, u'oid': 38, u'value': 31165, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'pico': got {u'count': 73197, '#receive_time': 244061.111800132, u'next_clock': 2768513505, u'oid': 4, '#name': u'counter_state', '#sent_time': 244061.081305545, u'count_clock': 3196098826} mcu 'pico': got {'#receive_time': 244061.125849656, u'next_clock': 2772161505, u'oid': 11, u'value': 22212, '#name': u'analog_in_state', '#sent_time': 244061.081305545} mcu 'mcu': got {'#receive_time': 244061.183295716, u'next_clock': 2809818816, u'oid': 47, u'value': 6219, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244061.293341495, u'next_clock': 2829618816, u'oid': 28, u'value': 31243, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244061.333249777, u'next_clock': 2836818816, u'oid': 32, u'value': 7555, '#name': u'analog_in_state', '#sent_time': 244060.702649691} Loaded MCU 'pico' 89 commands (v0.10.0-184-gdd714fc7 / gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 2.34) MCU 'pico' config: BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 INITIAL_PINS=gpio2,!gpio3,!gpio12,gpio13 STEPPER_BOTH_EDGE=1 ADC_MAX=4095 PWM_MAX=255 CLOCK_FREQ=12000000 MCU=rp2040 BUS_PINS_spi1c=gpio24,gpio27,gpio26 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1a=gpio8,gpio11,gpio10 STATS_SUMSQ_BASE=256 mcu 'ercf': Starting serial connect mcu 'mcu': got {'#receive_time': 244061.35331983, u'next_clock': 2840418816, u'oid': 34, u'value': 30777, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244061.373338892, u'next_clock': 2844018816, u'oid': 36, u'value': 22719, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'mcu': got {'#receive_time': 244061.393333179, u'next_clock': 2847618816, u'oid': 38, u'value': 31165, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'pico': got {'#receive_time': 244061.425820619, u'next_clock': 2775761505, u'oid': 11, u'value': 22178, '#name': u'analog_in_state', '#sent_time': 244061.342400969} mcu 'mcu': got {'#receive_time': 244061.483312194, u'next_clock': 2863818816, u'oid': 47, u'value': 6218, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'pico': got {u'count': 10569, '#receive_time': 244061.493763235, u'next_clock': 2773121505, u'oid': 3, '#name': u'counter_state', '#sent_time': 244061.342400969, u'count_clock': 3204558826} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.559463712, u'next_clock': 2460259901, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.558496199, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.569638013, u'next_clock': 2460740381, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.558496199, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.579655856, u'next_clock': 2461220861, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.558496199, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.58969244, u'next_clock': 2461701341, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.558496199, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.593313444, u'next_clock': 2883618816, u'oid': 28, u'value': 31246, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.599703215, u'next_clock': 2462181821, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.558496199, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.609632385, u'next_clock': 2462662301, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.558496199, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.619670156, u'next_clock': 2463142781, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.609868325, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.62972303, u'next_clock': 2463623261, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.609868325, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.63332266, u'next_clock': 2890818816, u'oid': 32, u'value': 7550, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.63973841, u'next_clock': 2464103741, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.609868325, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.649763769, u'next_clock': 2464584221, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.609868325, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.65338951, u'next_clock': 2894418816, u'oid': 34, u'value': 30778, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.659789318, u'next_clock': 2465064701, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.609868325, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.66982239, u'next_clock': 2465545181, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.661186193, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.673373316, u'next_clock': 2898018816, u'oid': 36, u'value': 22717, '#name': u'analog_in_state', '#sent_time': 244060.702649691} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.67977386, u'next_clock': 2466025661, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.661186193, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.68977307, u'next_clock': 2466506141, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.661186193, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.693343768, u'next_clock': 2901618816, u'oid': 38, u'value': 31166, '#name': u'analog_in_state', '#sent_time': 244061.687308913} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.699818765, u'next_clock': 2466986621, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.661186193, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.709776477, u'next_clock': 2467467101, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.661186193, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.719913472, u'next_clock': 2467947581, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.712776236, u'count_clock': 2923649238} mcu 'pico': got {'#receive_time': 244061.72585938, u'next_clock': 2779361505, u'oid': 11, u'value': 22159, '#name': u'analog_in_state', '#sent_time': 244061.342400969} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.729891101, u'next_clock': 2468428061, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.712776236, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.739859959, u'next_clock': 2468908541, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.712776236, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.749848412, u'next_clock': 2469389021, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.712776236, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.759848528, u'next_clock': 2469869501, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.712776236, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.769950665, u'next_clock': 2470349981, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.764055009, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.779956692, u'next_clock': 2470830461, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.764055009, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.783315497, u'next_clock': 2917818816, u'oid': 47, u'value': 6219, '#name': u'analog_in_state', '#sent_time': 244061.687308913} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.789926592, u'next_clock': 2471310941, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.764055009, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.799926166, u'next_clock': 2471791421, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.764055009, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.809920559, u'next_clock': 2472271901, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.764055009, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.819794445, u'next_clock': 2472752381, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.815354535, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.829991358, u'next_clock': 2473232861, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.815354535, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.839968042, u'next_clock': 2473713341, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.815354535, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.849963938, u'next_clock': 2474193821, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.815354535, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.860009793, u'next_clock': 2474674301, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.815354535, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.869974535, u'next_clock': 2475154781, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.867144941, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.880064783, u'next_clock': 2475635261, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.867144941, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.890015586, u'next_clock': 2476115741, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.867144941, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.893347999, u'next_clock': 2937618816, u'oid': 28, u'value': 31246, '#name': u'analog_in_state', '#sent_time': 244061.687308913} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.899968998, u'next_clock': 2476596221, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.867144941, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.910046794, u'next_clock': 2477076701, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.867144941, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.920073446, u'next_clock': 2477557181, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.918548366, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.930047927, u'next_clock': 2478037661, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.918548366, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.933306001, u'next_clock': 2944818816, u'oid': 32, u'value': 7553, '#name': u'analog_in_state', '#sent_time': 244061.687308913} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.940021148, u'next_clock': 2478518141, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.918548366, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.950056535, u'next_clock': 2478998621, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.918548366, u'count_clock': 2923649238} mcu 'mcu': got {'#receive_time': 244061.953338361, u'next_clock': 2948418816, u'oid': 34, u'value': 30780, '#name': u'analog_in_state', '#sent_time': 244061.687308913} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.960100912, u'next_clock': 2479479101, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.918548366, u'count_clock': 2923649238} mcu 'ercf': got {u'count': 12, '#receive_time': 244061.969996721, u'next_clock': 2479959581, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.918548366, u'count_clock': 2923649238} Loaded MCU 'ercf' 95 commands (v0.10.0-235-gf97fd7c6-dirty-20220126_035429-thow3d / gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 2.34) MCU 'ercf' config: STEPPER_BOTH_EDGE=1 ADC_MAX=4095 RESERVE_PINS_USB=PA24,PA25 CLOCK_FREQ=48000000 PWM_MAX=255 MCU=samd21g18a STATS_SUMSQ_BASE=256 mcu 'mcu': got {'#receive_time': 244061.973131683, u'next_clock': 2952018816, u'oid': 36, u'value': 22716, '#name': u'analog_in_state', '#sent_time': 244061.972759719} mcu_temperature 'mcu' nominal base=-269.446640 slope=1294.861660 mcu 'ercf': got {u'count': 12, '#receive_time': 244061.979957737, u'next_clock': 2480440061, u'oid': 7, '#name': u'counter_state', '#sent_time': 244061.972856267, u'count_clock': 2923649238} Configured MCU 'mcu' (1024 moves) mcu 'pico': got {u'query_ticks': 61, u'buffered': 0, u'limit_count': 0, '#receive_time': 244061.98526392, u'clock': 2778961065, u'oid': 6, u'next_sequence': 0, u'fifo': 0, '#name': u'adxl345_status', '#sent_time': 244061.985078188} Configured MCU 'pico' (1024 moves) Configured MCU 'ercf' (1024 moves) Starting heater checks for heater_bed bed_mesh: generated points Index | Tool Adjusted | Probe 0 | (40.0, 20.2) | (40.0, 40.0) 1 | (112.5, 20.2) | (112.5, 40.0) 2 | (185.0, 20.2) | (185.0, 40.0) 3 | (257.5, 20.2) | (257.5, 40.0) 4 | (330.0, 20.2) | (330.0, 40.0) 5 | (330.0, 92.8) | (330.0, 112.5) 6 | (257.5, 92.8) | (257.5, 112.5) 7 | (185.0, 92.8) | (185.0, 112.5) 8 | (112.5, 92.8) | (112.5, 112.5) 9 | (40.0, 92.8) | (40.0, 112.5) 10 | (40.0, 165.2) | (40.0, 185.0) 11 | (112.5, 165.2) | (112.5, 185.0) 12 | (185.0, 165.2) | (185.0, 185.0) 13 | (257.5, 165.2) | (257.5, 185.0) 14 | (330.0, 165.2) | (330.0, 185.0) 15 | (330.0, 237.8) | (330.0, 257.5) 16 | (257.5, 237.8) | (257.5, 257.5) 17 | (185.0, 237.8) | (185.0, 257.5) 18 | (112.5, 237.8) | (112.5, 257.5) 19 | (40.0, 237.8) | (40.0, 257.5) 20 | (40.0, 310.2) | (40.0, 330.0) 21 | (112.5, 310.2) | (112.5, 330.0) 22 | (185.0, 310.2) | (185.0, 330.0) 23 | (257.5, 310.2) | (257.5, 330.0) 24 | (330.0, 310.2) | (330.0, 330.0) bed_mesh: relative_reference_index 12 is (185.00, 185.00) Starting heater checks for extruder Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved Variable Saved webhooks: registering remote method 'shutdown_machine' for connection id: 140047008911104 webhooks: registering remote method 'reboot_machine' for connection id: 140047008911104 webhooks: registering remote method 'pause_job_queue' for connection id: 140047008911104 webhooks: registering remote method 'start_job_queue' for connection id: 140047008911104 webhooks: registering remote method 'set_device_power' for connection id: 140047008911104 Variable Saved Variable Saved Stats 244063.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000007 mcu_task_stddev=0.000005 bytes_write=6853 bytes_read=7405 bytes_retransmit=9 bytes_invalid=0 send_seq=335 receive_seq=334 retransmit_seq=2 srtt=0.001 rttvar=0.001 rto=0.025 ready_bytes=6 stalled_bytes=431 freq=180005431 pico: mcu_awake=0.006 mcu_task_avg=0.000013 mcu_task_stddev=0.000028 bytes_write=2038 bytes_read=3937 bytes_retransmit=9 bytes_invalid=0 send_seq=120 receive_seq=120 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=1073 freq=12000439 adj=11999720 ercf: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1346 bytes_read=6691 bytes_retransmit=0 bytes_invalid=0 send_seq=136 receive_seq=136 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=8 freq=47999889 adj=47997823 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.22 cputime=4.309 memavail=14632948 print_time=3096.319 buffer_time=0.441 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 webhooks: Error sending server data, closing socket webhooks client 140047008911104: Disconnected H2O cooling automatic parameter check Enabled Variable Saved Printer state: Ready H2O cooling automatic parameter check... ... H2O cooling parameters OK webhooks client 140047020664384: New connection Stats 244064.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000007 mcu_task_stddev=0.000005 bytes_write=7407 bytes_read=7809 bytes_retransmit=9 bytes_invalid=0 send_seq=348 receive_seq=348 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=29 freq=180005523 pico: mcu_awake=0.006 mcu_task_avg=0.000013 mcu_task_stddev=0.000028 bytes_write=3237 bytes_read=4177 bytes_retransmit=9 bytes_invalid=0 send_seq=145 receive_seq=145 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=16 stalled_bytes=0 freq=12000223 adj=12000265 ercf: mcu_awake=0.041 mcu_task_avg=0.000030 mcu_task_stddev=0.000025 bytes_write=1365 bytes_read=8510 bytes_retransmit=0 bytes_invalid=0 send_seq=138 receive_seq=138 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000143 adj=47998661 Hotend_H2O: temp=25.2 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.36 cputime=4.453 memavail=14629960 print_time=3097.233 buffer_time=0.354 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 webhooks client 140047020664384: Client info {'program': 'Moonraker', 'version': 'v0.7.1-560-g11beaa7'} webhooks: registering remote method 'shutdown_machine' for connection id: 140047020664384 webhooks: registering remote method 'reboot_machine' for connection id: 140047020664384 webhooks: registering remote method 'pause_job_queue' for connection id: 140047020664384 webhooks: registering remote method 'start_job_queue' for connection id: 140047020664384 webhooks: registering remote method 'set_device_power' for connection id: 140047020664384 Stats 244065.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000007 mcu_task_stddev=0.000005 bytes_write=7566 bytes_read=8148 bytes_retransmit=9 bytes_invalid=0 send_seq=355 receive_seq=355 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180005141 pico: mcu_awake=0.006 mcu_task_avg=0.000013 mcu_task_stddev=0.000028 bytes_write=3264 bytes_read=4317 bytes_retransmit=9 bytes_invalid=0 send_seq=147 receive_seq=147 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000175 adj=11999777 ercf: mcu_awake=0.041 mcu_task_avg=0.000030 mcu_task_stddev=0.000025 bytes_write=1371 bytes_read=10326 bytes_retransmit=0 bytes_invalid=0 send_seq=139 receive_seq=139 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000233 adj=47999027 Hotend_H2O: temp=25.5 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.36 cputime=4.578 memavail=14628824 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 webhooks: Error sending server data, closing socket webhooks client 140047020664384: Disconnected webhooks client 140047015965632: New connection webhooks client 140047015965632: Client info {'program': 'Moonraker', 'version': 'v0.7.1-560-g11beaa7'} Stats 244066.7: gcodein=0 mcu: mcu_awake=0.018 mcu_task_avg=0.000019 mcu_task_stddev=0.000041 bytes_write=8050 bytes_read=8495 bytes_retransmit=9 bytes_invalid=0 send_seq=366 receive_seq=366 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004994 pico: mcu_awake=0.006 mcu_task_avg=0.000013 mcu_task_stddev=0.000028 bytes_write=3270 bytes_read=4437 bytes_retransmit=9 bytes_invalid=0 send_seq=148 receive_seq=148 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000133 adj=11999744 ercf: mcu_awake=0.041 mcu_task_avg=0.000030 mcu_task_stddev=0.000025 bytes_write=1377 bytes_read=12142 bytes_retransmit=0 bytes_invalid=0 send_seq=140 receive_seq=140 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000061 adj=47999384 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.36 cputime=4.683 memavail=14629724 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 webhooks: registering remote method 'shutdown_machine' for connection id: 140047015965632 webhooks: registering remote method 'reboot_machine' for connection id: 140047015965632 webhooks: registering remote method 'pause_job_queue' for connection id: 140047015965632 webhooks: registering remote method 'start_job_queue' for connection id: 140047015965632 webhooks: registering remote method 'set_device_power' for connection id: 140047015965632 Stats 244067.7: gcodein=0 mcu: mcu_awake=0.018 mcu_task_avg=0.000019 mcu_task_stddev=0.000041 bytes_write=8120 bytes_read=8844 bytes_retransmit=9 bytes_invalid=0 send_seq=369 receive_seq=369 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=10 stalled_bytes=0 freq=180004901 pico: mcu_awake=0.006 mcu_task_avg=0.000013 mcu_task_stddev=0.000028 bytes_write=3276 bytes_read=4557 bytes_retransmit=9 bytes_invalid=0 send_seq=149 receive_seq=149 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000105 adj=11999693 ercf: mcu_awake=0.041 mcu_task_avg=0.000030 mcu_task_stddev=0.000025 bytes_write=1383 bytes_read=13958 bytes_retransmit=0 bytes_invalid=0 send_seq=141 receive_seq=141 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=47999958 adj=47998966 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.36 cputime=4.835 memavail=14627352 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244068.7: gcodein=0 mcu: mcu_awake=0.018 mcu_task_avg=0.000019 mcu_task_stddev=0.000041 bytes_write=8205 bytes_read=9168 bytes_retransmit=9 bytes_invalid=0 send_seq=373 receive_seq=373 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180005104 pico: mcu_awake=0.003 mcu_task_avg=0.000017 mcu_task_stddev=0.000035 bytes_write=3282 bytes_read=4706 bytes_retransmit=9 bytes_invalid=0 send_seq=150 receive_seq=150 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000088 adj=11999663 ercf: mcu_awake=0.041 mcu_task_avg=0.000030 mcu_task_stddev=0.000025 bytes_write=1389 bytes_read=15774 bytes_retransmit=0 bytes_invalid=0 send_seq=142 receive_seq=142 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000095 adj=47998720 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.36 cputime=4.927 memavail=14628872 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244069.7: gcodein=0 mcu: mcu_awake=0.018 mcu_task_avg=0.000019 mcu_task_stddev=0.000041 bytes_write=8275 bytes_read=9444 bytes_retransmit=9 bytes_invalid=0 send_seq=376 receive_seq=376 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180005001 pico: mcu_awake=0.003 mcu_task_avg=0.000017 mcu_task_stddev=0.000035 bytes_write=3288 bytes_read=4826 bytes_retransmit=9 bytes_invalid=0 send_seq=151 receive_seq=151 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000084 adj=11999603 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1395 bytes_read=17606 bytes_retransmit=0 bytes_invalid=0 send_seq=143 receive_seq=143 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000053 adj=47998913 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.33 cputime=4.998 memavail=14628840 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244070.7: gcodein=0 mcu: mcu_awake=0.018 mcu_task_avg=0.000019 mcu_task_stddev=0.000041 bytes_write=8588 bytes_read=9799 bytes_retransmit=9 bytes_invalid=0 send_seq=384 receive_seq=384 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004915 pico: mcu_awake=0.003 mcu_task_avg=0.000017 mcu_task_stddev=0.000035 bytes_write=3294 bytes_read=4946 bytes_retransmit=9 bytes_invalid=0 send_seq=152 receive_seq=152 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000077 adj=11999650 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1401 bytes_read=19422 bytes_retransmit=0 bytes_invalid=0 send_seq=144 receive_seq=144 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000077 adj=47998833 Hotend_H2O: temp=25.4 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.33 cputime=5.073 memavail=14628808 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244071.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000024 bytes_write=8658 bytes_read=10133 bytes_retransmit=9 bytes_invalid=0 send_seq=387 receive_seq=387 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004848 pico: mcu_awake=0.003 mcu_task_avg=0.000017 mcu_task_stddev=0.000035 bytes_write=3300 bytes_read=5081 bytes_retransmit=9 bytes_invalid=0 send_seq=153 receive_seq=153 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000075 adj=11999671 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1407 bytes_read=21238 bytes_retransmit=0 bytes_invalid=0 send_seq=145 receive_seq=145 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000171 adj=47998960 Hotend_H2O: temp=25.1 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.33 cputime=5.152 memavail=14628744 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244072.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000024 bytes_write=8743 bytes_read=10428 bytes_retransmit=9 bytes_invalid=0 send_seq=391 receive_seq=391 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004828 pico: mcu_awake=0.003 mcu_task_avg=0.000017 mcu_task_stddev=0.000035 bytes_write=3306 bytes_read=5201 bytes_retransmit=9 bytes_invalid=0 send_seq=154 receive_seq=154 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000073 adj=11999701 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1413 bytes_read=23054 bytes_retransmit=0 bytes_invalid=0 send_seq=146 receive_seq=146 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000146 adj=47999295 Hotend_H2O: temp=25.5 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.33 cputime=5.227 memavail=14628712 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244073.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000024 bytes_write=8813 bytes_read=10777 bytes_retransmit=9 bytes_invalid=0 send_seq=394 receive_seq=394 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004801 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3312 bytes_read=5333 bytes_retransmit=9 bytes_invalid=0 send_seq=155 receive_seq=155 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000070 adj=11999734 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1419 bytes_read=24870 bytes_retransmit=0 bytes_invalid=0 send_seq=147 receive_seq=147 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000127 adj=47999124 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.33 cputime=5.304 memavail=14628648 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244074.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000024 bytes_write=8883 bytes_read=11096 bytes_retransmit=9 bytes_invalid=0 send_seq=397 receive_seq=397 retransmit_seq=2 srtt=0.001 rttvar=0.001 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004764 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3318 bytes_read=5468 bytes_retransmit=9 bytes_invalid=0 send_seq=156 receive_seq=156 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000070 adj=11999737 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1425 bytes_read=26702 bytes_retransmit=0 bytes_invalid=0 send_seq=148 receive_seq=148 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000106 adj=47999012 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.39 cputime=5.381 memavail=14628616 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244075.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000024 bytes_write=8953 bytes_read=11386 bytes_retransmit=9 bytes_invalid=0 send_seq=400 receive_seq=400 retransmit_seq=2 srtt=0.001 rttvar=0.001 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004731 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3324 bytes_read=5588 bytes_retransmit=9 bytes_invalid=0 send_seq=157 receive_seq=157 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000078 adj=11999750 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1431 bytes_read=28518 bytes_retransmit=0 bytes_invalid=0 send_seq=149 receive_seq=149 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000099 adj=47998929 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.39 cputime=5.457 memavail=14628584 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244076.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000016 bytes_write=9038 bytes_read=11770 bytes_retransmit=9 bytes_invalid=0 send_seq=404 receive_seq=404 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004703 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3330 bytes_read=5708 bytes_retransmit=9 bytes_invalid=0 send_seq=158 receive_seq=158 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000073 adj=11999797 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1437 bytes_read=30334 bytes_retransmit=0 bytes_invalid=0 send_seq=150 receive_seq=150 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000093 adj=47998916 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.39 cputime=5.539 memavail=14628856 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244077.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000016 bytes_write=9108 bytes_read=12074 bytes_retransmit=9 bytes_invalid=0 send_seq=407 receive_seq=407 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004665 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3336 bytes_read=5843 bytes_retransmit=9 bytes_invalid=0 send_seq=159 receive_seq=159 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000072 adj=11999774 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1443 bytes_read=32150 bytes_retransmit=0 bytes_invalid=0 send_seq=151 receive_seq=151 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000101 adj=47998906 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.39 cputime=5.614 memavail=14629084 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244078.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000016 bytes_write=9178 bytes_read=12379 bytes_retransmit=9 bytes_invalid=0 send_seq=410 receive_seq=410 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004648 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3342 bytes_read=5975 bytes_retransmit=9 bytes_invalid=0 send_seq=160 receive_seq=160 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000070 adj=11999775 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1449 bytes_read=33966 bytes_retransmit=0 bytes_invalid=0 send_seq=152 receive_seq=152 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000093 adj=47998977 Hotend_H2O: temp=25.1 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.39 cputime=5.688 memavail=14629052 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Filament Sensor toolhead_sensor: insert event detected, Time 244079.44 --> TH_filsw_prs Stats 244079.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000016 bytes_write=9256 bytes_read=12743 bytes_retransmit=9 bytes_invalid=0 send_seq=414 receive_seq=414 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004682 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3348 bytes_read=6095 bytes_retransmit=9 bytes_invalid=0 send_seq=161 receive_seq=161 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000068 adj=11999769 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1461 bytes_read=35798 bytes_retransmit=0 bytes_invalid=0 send_seq=154 receive_seq=153 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000088 adj=47998927 Hotend_H2O: temp=25.3 Host: temp=45.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.36 cputime=5.766 memavail=14629084 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244080.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000016 bytes_write=9584 bytes_read=13077 bytes_retransmit=9 bytes_invalid=0 send_seq=423 receive_seq=423 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004713 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3354 bytes_read=6230 bytes_retransmit=9 bytes_invalid=0 send_seq=162 receive_seq=162 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000067 adj=11999747 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1467 bytes_read=37630 bytes_retransmit=0 bytes_invalid=0 send_seq=155 receive_seq=155 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000094 adj=47998957 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.36 cputime=5.846 memavail=14629088 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244081.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000022 bytes_write=9654 bytes_read=13397 bytes_retransmit=9 bytes_invalid=0 send_seq=426 receive_seq=426 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004683 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3360 bytes_read=6350 bytes_retransmit=9 bytes_invalid=0 send_seq=163 receive_seq=163 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000067 adj=11999731 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1473 bytes_read=39446 bytes_retransmit=0 bytes_invalid=0 send_seq=156 receive_seq=156 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000078 adj=47998792 Hotend_H2O: temp=25.4 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.36 cputime=5.927 memavail=14629056 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244082.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000022 bytes_write=9724 bytes_read=13746 bytes_retransmit=9 bytes_invalid=0 send_seq=429 receive_seq=429 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004642 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3366 bytes_read=6470 bytes_retransmit=9 bytes_invalid=0 send_seq=164 receive_seq=164 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000065 adj=11999745 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1479 bytes_read=41262 bytes_retransmit=0 bytes_invalid=0 send_seq=157 receive_seq=157 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000062 adj=47998763 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.36 cputime=6.004 memavail=14629056 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244083.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000022 bytes_write=9802 bytes_read=14065 bytes_retransmit=9 bytes_invalid=0 send_seq=433 receive_seq=433 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004625 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3372 bytes_read=6617 bytes_retransmit=9 bytes_invalid=0 send_seq=165 receive_seq=165 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000063 adj=11999754 ercf: mcu_awake=0.045 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1485 bytes_read=43078 bytes_retransmit=0 bytes_invalid=0 send_seq=158 receive_seq=158 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000055 adj=47998756 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.36 cputime=6.080 memavail=14629024 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244084.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000022 bytes_write=9887 bytes_read=14375 bytes_retransmit=9 bytes_invalid=0 send_seq=437 receive_seq=437 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004610 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3378 bytes_read=6737 bytes_retransmit=9 bytes_invalid=0 send_seq=166 receive_seq=166 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000063 adj=11999752 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1491 bytes_read=44910 bytes_retransmit=0 bytes_invalid=0 send_seq=159 receive_seq=159 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000045 adj=47998760 Hotend_H2O: temp=25.0 Host: temp=45.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.33 cputime=6.157 memavail=14629024 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Filament Sensor toolhead_sensor: insert event detected, Time 244084.84 --> TH_filsw_prs Stats 244085.7: gcodein=0 mcu: mcu_awake=0.003 mcu_task_avg=0.000010 mcu_task_stddev=0.000022 bytes_write=9965 bytes_read=14739 bytes_retransmit=9 bytes_invalid=0 send_seq=441 receive_seq=441 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004592 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3384 bytes_read=6857 bytes_retransmit=9 bytes_invalid=0 send_seq=167 receive_seq=167 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000062 adj=11999754 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1497 bytes_read=46726 bytes_retransmit=0 bytes_invalid=0 send_seq=160 receive_seq=160 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000044 adj=47998741 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.33 cputime=6.235 memavail=14629024 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244086.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10035 bytes_read=15058 bytes_retransmit=9 bytes_invalid=0 send_seq=444 receive_seq=444 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004580 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3390 bytes_read=6992 bytes_retransmit=9 bytes_invalid=0 send_seq=168 receive_seq=168 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000061 adj=11999757 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1503 bytes_read=48542 bytes_retransmit=0 bytes_invalid=0 send_seq=161 receive_seq=161 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000042 adj=47998780 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.33 cputime=6.316 memavail=14629284 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244087.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10113 bytes_read=15378 bytes_retransmit=9 bytes_invalid=0 send_seq=448 receive_seq=448 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004570 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3396 bytes_read=7112 bytes_retransmit=9 bytes_invalid=0 send_seq=169 receive_seq=169 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000060 adj=11999756 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1509 bytes_read=50340 bytes_retransmit=0 bytes_invalid=0 send_seq=162 receive_seq=162 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000043 adj=47998805 Hotend_H2O: temp=25.1 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.33 cputime=6.397 memavail=14629228 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244088.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10183 bytes_read=15727 bytes_retransmit=9 bytes_invalid=0 send_seq=451 receive_seq=451 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=10 stalled_bytes=0 freq=180004557 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3402 bytes_read=7244 bytes_retransmit=9 bytes_invalid=0 send_seq=170 receive_seq=170 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000059 adj=11999761 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1515 bytes_read=52156 bytes_retransmit=0 bytes_invalid=0 send_seq=163 receive_seq=163 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000049 adj=47998828 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.33 cputime=6.474 memavail=14629228 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Filament Sensor toolhead_sensor: insert event detected, Time 244088.85 --> TH_filsw_prs Stats 244089.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10276 bytes_read=16051 bytes_retransmit=9 bytes_invalid=0 send_seq=456 receive_seq=456 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004549 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3408 bytes_read=7379 bytes_retransmit=9 bytes_invalid=0 send_seq=171 receive_seq=171 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000059 adj=11999763 ercf: mcu_awake=0.045 mcu_task_avg=0.000029 mcu_task_stddev=0.000020 bytes_write=1521 bytes_read=53988 bytes_retransmit=0 bytes_invalid=0 send_seq=164 receive_seq=164 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000048 adj=47998894 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.38 cputime=6.552 memavail=14629356 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244090.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10346 bytes_read=16356 bytes_retransmit=9 bytes_invalid=0 send_seq=459 receive_seq=459 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004536 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3414 bytes_read=7499 bytes_retransmit=9 bytes_invalid=0 send_seq=172 receive_seq=172 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000059 adj=11999765 ercf: mcu_awake=0.045 mcu_task_avg=0.000029 mcu_task_stddev=0.000020 bytes_write=1527 bytes_read=55804 bytes_retransmit=0 bytes_invalid=0 send_seq=165 receive_seq=165 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000044 adj=47998887 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.38 cputime=6.626 memavail=14629356 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244091.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10419 bytes_read=16730 bytes_retransmit=9 bytes_invalid=0 send_seq=462 receive_seq=462 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004540 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3420 bytes_read=7619 bytes_retransmit=9 bytes_invalid=0 send_seq=173 receive_seq=173 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000059 adj=11999768 ercf: mcu_awake=0.045 mcu_task_avg=0.000029 mcu_task_stddev=0.000020 bytes_write=1533 bytes_read=57620 bytes_retransmit=0 bytes_invalid=0 send_seq=166 receive_seq=166 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000042 adj=47998875 Hotend_H2O: temp=25.4 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.38 cputime=6.705 memavail=14629356 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244092.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10489 bytes_read=17034 bytes_retransmit=9 bytes_invalid=0 send_seq=465 receive_seq=465 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004525 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3426 bytes_read=7754 bytes_retransmit=9 bytes_invalid=0 send_seq=174 receive_seq=174 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000058 adj=11999759 ercf: mcu_awake=0.045 mcu_task_avg=0.000029 mcu_task_stddev=0.000020 bytes_write=1539 bytes_read=59436 bytes_retransmit=0 bytes_invalid=0 send_seq=167 receive_seq=167 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000041 adj=47998843 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.38 cputime=6.785 memavail=14629324 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244093.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10574 bytes_read=17330 bytes_retransmit=9 bytes_invalid=0 send_seq=469 receive_seq=469 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004518 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3432 bytes_read=7886 bytes_retransmit=9 bytes_invalid=0 send_seq=175 receive_seq=175 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000058 adj=11999764 ercf: mcu_awake=0.045 mcu_task_avg=0.000029 mcu_task_stddev=0.000020 bytes_write=1545 bytes_read=61252 bytes_retransmit=0 bytes_invalid=0 send_seq=168 receive_seq=168 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000040 adj=47998861 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.38 cputime=6.865 memavail=14629356 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244094.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10644 bytes_read=17662 bytes_retransmit=9 bytes_invalid=0 send_seq=472 receive_seq=472 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004519 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3438 bytes_read=8006 bytes_retransmit=9 bytes_invalid=0 send_seq=176 receive_seq=176 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000057 adj=11999763 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1551 bytes_read=63084 bytes_retransmit=0 bytes_invalid=0 send_seq=169 receive_seq=169 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000037 adj=47998858 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.35 cputime=6.942 memavail=14629356 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244095.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10714 bytes_read=17966 bytes_retransmit=9 bytes_invalid=0 send_seq=475 receive_seq=475 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004514 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3444 bytes_read=8141 bytes_retransmit=9 bytes_invalid=0 send_seq=177 receive_seq=177 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000057 adj=11999759 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1557 bytes_read=64918 bytes_retransmit=0 bytes_invalid=0 send_seq=170 receive_seq=170 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000030 adj=47998826 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.35 cputime=7.017 memavail=14629356 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244096.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10784 bytes_read=18286 bytes_retransmit=9 bytes_invalid=0 send_seq=478 receive_seq=478 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004507 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3450 bytes_read=8261 bytes_retransmit=9 bytes_invalid=0 send_seq=178 receive_seq=178 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000057 adj=11999759 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1563 bytes_read=66734 bytes_retransmit=0 bytes_invalid=0 send_seq=171 receive_seq=171 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000026 adj=47998791 Hotend_H2O: temp=25.5 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.35 cputime=7.097 memavail=14629292 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244097.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10869 bytes_read=18640 bytes_retransmit=9 bytes_invalid=0 send_seq=482 receive_seq=482 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004501 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3456 bytes_read=8381 bytes_retransmit=9 bytes_invalid=0 send_seq=179 receive_seq=179 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000056 adj=11999760 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1569 bytes_read=68550 bytes_retransmit=0 bytes_invalid=0 send_seq=172 receive_seq=172 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000024 adj=47998782 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.35 cputime=7.175 memavail=14629540 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244098.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=10939 bytes_read=18944 bytes_retransmit=9 bytes_invalid=0 send_seq=485 receive_seq=485 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004494 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3462 bytes_read=8528 bytes_retransmit=9 bytes_invalid=0 send_seq=180 receive_seq=180 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000056 adj=11999756 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1575 bytes_read=70332 bytes_retransmit=0 bytes_invalid=0 send_seq=173 receive_seq=173 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000021 adj=47998784 Hotend_H2O: temp=25.4 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.35 cputime=7.250 memavail=14629508 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244099.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=11009 bytes_read=19249 bytes_retransmit=9 bytes_invalid=0 send_seq=488 receive_seq=488 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004521 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3468 bytes_read=8648 bytes_retransmit=9 bytes_invalid=0 send_seq=181 receive_seq=181 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000055 adj=11999760 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1581 bytes_read=72063 bytes_retransmit=0 bytes_invalid=0 send_seq=174 receive_seq=174 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000019 adj=47998785 Hotend_H2O: temp=25.4 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.32 cputime=7.321 memavail=14629444 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244100.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=11079 bytes_read=19598 bytes_retransmit=9 bytes_invalid=0 send_seq=491 receive_seq=491 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004514 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3474 bytes_read=8783 bytes_retransmit=9 bytes_invalid=0 send_seq=182 receive_seq=182 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000055 adj=11999740 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1587 bytes_read=73790 bytes_retransmit=0 bytes_invalid=0 send_seq=175 receive_seq=175 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000015 adj=47998714 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.32 cputime=7.395 memavail=14629412 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.8 pwm=0.000 Stats 244101.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000018 bytes_write=11164 bytes_read=19922 bytes_retransmit=9 bytes_invalid=0 send_seq=495 receive_seq=495 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004505 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3486 bytes_read=8919 bytes_retransmit=9 bytes_invalid=0 send_seq=184 receive_seq=184 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000054 adj=11999745 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1593 bytes_read=75505 bytes_retransmit=0 bytes_invalid=0 send_seq=176 receive_seq=176 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000011 adj=47998726 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.32 cputime=7.473 memavail=14629348 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244102.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000018 bytes_write=11234 bytes_read=20227 bytes_retransmit=9 bytes_invalid=0 send_seq=498 receive_seq=498 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004501 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3492 bytes_read=9039 bytes_retransmit=9 bytes_invalid=0 send_seq=185 receive_seq=185 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000054 adj=11999746 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1599 bytes_read=77220 bytes_retransmit=0 bytes_invalid=0 send_seq=177 receive_seq=177 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000011 adj=47998733 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.32 cputime=7.544 memavail=14629316 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244103.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000018 bytes_write=11304 bytes_read=20576 bytes_retransmit=9 bytes_invalid=0 send_seq=501 receive_seq=501 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004495 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3498 bytes_read=9186 bytes_retransmit=9 bytes_invalid=0 send_seq=186 receive_seq=186 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000054 adj=11999751 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1605 bytes_read=78935 bytes_retransmit=0 bytes_invalid=0 send_seq=178 receive_seq=178 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000009 adj=47998757 Hotend_H2O: temp=25.4 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.32 cputime=7.619 memavail=14629252 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244104.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000018 bytes_write=11374 bytes_read=20880 bytes_retransmit=9 bytes_invalid=0 send_seq=504 receive_seq=504 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004488 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3504 bytes_read=9306 bytes_retransmit=9 bytes_invalid=0 send_seq=187 receive_seq=187 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000054 adj=11999756 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1611 bytes_read=80743 bytes_retransmit=0 bytes_invalid=0 send_seq=179 receive_seq=179 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000007 adj=47998769 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.30 cputime=7.690 memavail=14629220 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244105.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000018 bytes_write=11459 bytes_read=21204 bytes_retransmit=9 bytes_invalid=0 send_seq=508 receive_seq=508 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004483 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3510 bytes_read=9426 bytes_retransmit=9 bytes_invalid=0 send_seq=188 receive_seq=188 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000054 adj=11999758 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1617 bytes_read=82577 bytes_retransmit=0 bytes_invalid=0 send_seq=180 receive_seq=180 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000005 adj=47998779 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.30 cputime=7.762 memavail=14629288 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244106.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=11529 bytes_read=21554 bytes_retransmit=9 bytes_invalid=0 send_seq=511 receive_seq=511 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004471 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3516 bytes_read=9561 bytes_retransmit=9 bytes_invalid=0 send_seq=189 receive_seq=189 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000054 adj=11999760 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1623 bytes_read=84393 bytes_retransmit=0 bytes_invalid=0 send_seq=181 receive_seq=181 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=48000002 adj=47998781 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.30 cputime=7.842 memavail=14629432 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244107.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=11599 bytes_read=21858 bytes_retransmit=9 bytes_invalid=0 send_seq=514 receive_seq=514 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004469 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3522 bytes_read=9681 bytes_retransmit=9 bytes_invalid=0 send_seq=190 receive_seq=190 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000056 adj=11999767 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1629 bytes_read=86209 bytes_retransmit=0 bytes_invalid=0 send_seq=182 receive_seq=182 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=47999999 adj=47998791 Hotend_H2O: temp=25.1 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.30 cputime=7.919 memavail=14629120 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244108.7: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=11669 bytes_read=22177 bytes_retransmit=9 bytes_invalid=0 send_seq=517 receive_seq=517 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004467 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3528 bytes_read=9813 bytes_retransmit=9 bytes_invalid=0 send_seq=191 receive_seq=191 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000056 adj=11999784 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1635 bytes_read=88025 bytes_retransmit=0 bytes_invalid=0 send_seq=183 receive_seq=183 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=47999994 adj=47998774 Hotend_H2O: temp=25.1 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.27 cputime=7.991 memavail=14629120 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.0 pwm=0.000 Stats 244109.8: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=11754 bytes_read=22517 bytes_retransmit=9 bytes_invalid=0 send_seq=521 receive_seq=521 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004465 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3534 bytes_read=9948 bytes_retransmit=9 bytes_invalid=0 send_seq=192 receive_seq=192 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000055 adj=11999777 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1641 bytes_read=89875 bytes_retransmit=0 bytes_invalid=0 send_seq=184 receive_seq=184 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=47999992 adj=47998742 Hotend_H2O: temp=25.4 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.27 cputime=8.063 memavail=14629024 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000 Stats 244110.8: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000017 bytes_write=11824 bytes_read=22821 bytes_retransmit=9 bytes_invalid=0 send_seq=524 receive_seq=524 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004458 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3540 bytes_read=10068 bytes_retransmit=9 bytes_invalid=0 send_seq=193 receive_seq=193 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000055 adj=11999768 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1647 bytes_read=91691 bytes_retransmit=0 bytes_invalid=0 send_seq=185 receive_seq=185 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=47999991 adj=47998740 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.4 pwm=0.000 sysload=0.27 cputime=8.136 memavail=14628992 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=26.1 pwm=0.000 Stats 244111.8: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000018 bytes_write=11894 bytes_read=23170 bytes_retransmit=9 bytes_invalid=0 send_seq=527 receive_seq=527 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004456 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3546 bytes_read=10188 bytes_retransmit=9 bytes_invalid=0 send_seq=194 receive_seq=194 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000055 adj=11999770 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1653 bytes_read=93507 bytes_retransmit=0 bytes_invalid=0 send_seq=186 receive_seq=186 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=47999990 adj=47998760 Hotend_H2O: temp=25.2 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.27 cputime=8.211 memavail=14628960 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.8 pwm=0.000 Stats 244112.8: gcodein=0 mcu: mcu_awake=0.002 mcu_task_avg=0.000008 mcu_task_stddev=0.000018 bytes_write=11964 bytes_read=23490 bytes_retransmit=9 bytes_invalid=0 send_seq=530 receive_seq=530 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=180004447 pico: mcu_awake=0.001 mcu_task_avg=0.000005 mcu_task_stddev=0.000004 bytes_write=3552 bytes_read=10323 bytes_retransmit=9 bytes_invalid=0 send_seq=195 receive_seq=195 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=12000055 adj=11999769 ercf: mcu_awake=0.044 mcu_task_avg=0.000028 mcu_task_stddev=0.000020 bytes_write=1659 bytes_read=95323 bytes_retransmit=0 bytes_invalid=0 send_seq=187 receive_seq=187 retransmit_seq=0 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 stalled_bytes=0 freq=47999997 adj=47998775 Hotend_H2O: temp=25.3 Host: temp=44.0 heater_bed: target=0 temp=26.3 pwm=0.000 sysload=0.27 cputime=8.287 memavail=14628960 print_time=3097.233 buffer_time=0.000 print_stall=0 extruder: target=0 temp=25.9 pwm=0.000