Starting Klippy... Args: ['/home/biqu/klipper/klippy/klippy.py', '/home/biqu/printer_data/config/printer.cfg', '-I', '/home/biqu/printer_data/comms/klippy.serial', '-l', '/home/biqu/printer_data/logs/klippy.log', '-a', '/home/biqu/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]' Building C code module c_helper.so Start printer at Fri Oct 27 00:02:02 2023 (1698379322.4 913.7) ===== Config file ===== [mcu] serial = /dev/serial/by-id/ [printer] kinematics = none max_velocity = 1000 max_accel = 1000 ======================= mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' MCU error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] ^^^^^^^^^^^ File "/home/biqu/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect No build file /home/biqu/klipper/klippy/../.config No build file /home/biqu/klipper/klippy/../out/klipper.dict No build file /home/biqu/klipper/klippy/../out/klipper.elf webhooks client 4147022064: New connection webhooks client 4147022064: Client info {'program': 'Moonraker', 'version': 'v0.8.0-188-ga71c5c1'} webhooks client 4147022064: Disconnected webhooks client 4134612720: New connection webhooks client 4134612720: Client info {'program': 'Moonraker', 'version': 'v0.8.0-188-ga71c5c1'} Starting Klippy... Args: ['/home/biqu/klipper/klippy/klippy.py', '/home/biqu/printer_data/config/printer.cfg', '-I', '/home/biqu/printer_data/comms/klippy.serial', '-l', '/home/biqu/printer_data/logs/klippy.log', '-a', '/home/biqu/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]' Start printer at Fri Oct 27 00:20:17 2023 (1698380417.0 18.6) ===== Config file ===== [virtual_sdcard] path = /home/biqu/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/serial/by-id/ [printer] kinematics = none max_velocity = 1000 max_accel = 1000 ======================= mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' webhooks client 4129309520: New connection webhooks client 4129309520: Client info {'program': 'Moonraker', 'version': 'v0.8.0-188-ga71c5c1'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' MCU error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] ^^^^^^^^^^^ File "/home/biqu/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect No build file /home/biqu/klipper/klippy/../.config No build file /home/biqu/klipper/klippy/../out/klipper.dict No build file /home/biqu/klipper/klippy/../out/klipper.elf Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/biqu/klippy-env/lib/python3.11/site-packages/serial/serialposix.py", line 265, in open self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial/by-id/' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] ^^^^^^^^^^^ File "/home/biqu/klipper/klippy/mcu.py", line 951, in _firmware_restart self._restart_arduino() File "/home/biqu/klipper/klippy/mcu.py", line 911, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/biqu/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/biqu/klippy-env/lib/python3.11/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/biqu/klippy-env/lib/python3.11/site-packages/serial/serialposix.py", line 268, in open raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg)) serial.serialutil.SerialException: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' Restarting printer Start printer at Fri Oct 27 00:23:30 2023 (1698380610.3 196.6) ===== Config file ===== [gcode_macro global] variable_xy_run_current = 0.8 variable_xy_home_current = 0.6 gcode = [virtual_sdcard] path = /home/biqu/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] canbus_uuid = ca80e9052a14 [temperature_sensor mcu_temp] sensor_type = temperature_mcu [mcu toolhead] canbus_uuid = 51279b4eb876 [temperature_sensor toolhead_temp] sensor_type = temperature_mcu sensor_mcu = toolhead min_temp = 0 max_temp = 100 [board_pins toolhead] mcu = toolhead aliases = TOOLHEAD_PWM=PB13, TOOLHEAD_THERMISTOR=PA3, TOOLHEAD_HEATSINKFAN=PA0, TOOLHEAD_PARTFAN=PA1, TOOLHEAD_MAXCS=PA4, TOOLHEAD_MAXSCLK=PA5, TOOLHEAD_MAXMISO=PA6, TOOLHEAD_MAXMOSI=PA7, TOOLHEAD_ENDSTOP5V=<5V>, TOOLHEAD_ENDSTOPGND=, TOOLHEAD_ENDSTOP1=PB6, TOOLHEAD_ENDSTOP2=PB5, TOOLHEAD_ENDSTOP3=PB7, TOOLHEAD_BLGND1=, TOOLHEAD_BL5V=<5V>, TOOLHEAD_BLSERVO=PB9, TOOLHEAD_BLGND2=, TOOLHEAD_BLPROBE=PB8, TOOLHEAD_TMCEN=PD2, TOOLHEAD_TMCSTEP=PD0, TOOLHEAD_TMCDIR=PD1, TOOLHEAD_TMCUART=PA15, TOOLHEAD_TMCDIAG=PB12, TOOLHEAD_ADXLCS=PB12, TOOLHEAD_ADXLSCLK=PB10, TOOLHEAD_ADXLMISO=PB2, TOOLHEAD_ADXLMOSI=PB11, TOOLHEAD_LEDGND=, TOOLHEAD_LEDSERIAL=PD3, TOOLHEAD_LED5V=<5V>, TOOLHEAD_I2C5V=<5V>, TOOLHEAD_I2CGND=, TOOLHEAD_I2CSCL=PB3, TOOLHEAD_I2CSDA=PB4, TOOLHEAD_CANTX=PB1, TOOLHEAD_CANRX=PB0, TOOLHEAD_USBDP=PA12, TOOLHEAD_USBDM=PA11 [printer] kinematics = corexy max_velocity = 150 max_accel = 3000 max_z_velocity = 12 max_z_accel = 25 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [temperature_fan rpi_fan] pin = PE6 sensor_type = temperature_host control = watermark min_temp = 0 max_temp = 100 target_temp = 30.0 [controller_fan controllerFan0] pin = PE0 max_power = 1.0 fan_speed = 1 kick_start_time = 0 stepper = stepper_x [controller_fan controllerFan1] pin = PC12 max_power = 1.0 fan_speed = 1 kick_start_time = 0 stepper = stepper_x [controller_fan controllerFan2] pin = PE5 max_power = 1.0 fan_speed = 1 kick_start_time = 0 stepper = stepper_x [extruder] step_pin = toolhead:TOOLHEAD_TMCSTEP dir_pin = !toolhead:TOOLHEAD_TMCDIR enable_pin = !toolhead:TOOLHEAD_TMCEN microsteps = 16 rotation_distance = 7.86 nozzle_diameter = 0.400 filament_diameter = 1.750 max_extrude_only_distance = 125 pressure_advance = 0.009 pressure_advance_smooth_time = 0.040 heater_pin = toolhead:TOOLHEAD_PWM sensor_type = EPCOS 100K B57560G104F sensor_pin = toolhead:TOOLHEAD_THERMISTOR pullup_resistor = 4700 control = pid pid_kp = 26.456 pid_ki = 1.603 pid_kd = 109.132 min_temp = 0 max_temp = 290 max_extrude_cross_section = 5 [tmc2209 extruder] uart_pin = toolhead:TOOLHEAD_TMCUART run_current = 0.6 hold_current = 0.2 sense_resistor = 0.110 stealthchop_threshold = 999999 [heater_fan EBB_fan] pin = toolhead:TOOLHEAD_HEATSINKFAN max_power = 1.0 fan_speed = 0.3 kick_start_time = 0 heater = extruder heater_temp = 30 [heater_bed] heater_pin = PB7 sensor_pin = PA0 sensor_type = EPCOS 100K B57560G104F pullup_resistor = 4700 control = pid pid_kp = 67.552 pid_ki = 1.603 pid_kd = 711.829 min_temp = 0 max_temp = 130 [verify_heater heater_bed] check_gain_time = 150 [fan] pin = toolhead:TOOLHEAD_PARTFAN [gcode_macro _HOME_X] gcode = SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_home_current} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_home_current} G4 P500 G28 X SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_run_current} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_run_current} G91 G1 X105 F1200 [gcode_macro _HOME_Y] gcode = SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_home_current} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_home_current} G4 P500 G28 Y SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_run_current} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_run_current} G91 G1 Y-132 F1200 [homing_override] axes = xyz gcode = {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} G28 Z QUAD_GANTRY_LEVEL G1 Z10 {% endif %} [stepper_x] dir_pin = !PB4 step_pin = PE2 enable_pin = !PC11 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_x:virtual_endstop homing_retract_dist = 0 position_min = -1 position_max = 221 position_endstop = -1 homing_speed = 25 [tmc2209 stepper_x] uart_pin = PC10 run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 999999 driver_sgthrs = 70 diag_pin = PF3 [stepper_y] dir_pin = PF11 step_pin = PF12 enable_pin = !PB3 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 position_min = -5 position_max = 250 position_endstop = 250 homing_speed = 25 [tmc2209 stepper_y] uart_pin = PF13 run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 999999 driver_sgthrs = 70 diag_pin = PF4 [stepper_z] dir_pin = !PC6 step_pin = PD8 enable_pin = !PC7 microsteps = 16 rotation_distance = 8 endstop_pin = probe:z_virtual_endstop position_min = -5 position_max = 200 homing_speed = 5 second_homing_speed = 3 homing_retract_dist = 10 [tmc2209 stepper_z] uart_pin = PD10 run_current = 1.0 sense_resistor = 0.110 stealthchop_threshold = 999999 [probe] pin = toolhead:TOOLHEAD_ENDSTOP1 x_offset = 18 y_offset = 14 z_offset = -5 speed = 3 [stepper_z1] dir_pin = !PD9 step_pin = PD11 enable_pin = !PD15 microsteps = 16 rotation_distance = 8 [tmc2209 stepper_z1] uart_pin = PD14 run_current = 1.0 sense_resistor = 0.110 stealthchop_threshold = 999999 [stepper_z2] dir_pin = !PA14 step_pin = PA10 enable_pin = !PA15 microsteps = 16 rotation_distance = 8 [tmc2209 stepper_z2] uart_pin = PF8 run_current = 1.0 sense_resistor = 0.110 stealthchop_threshold = 999999 [stepper_z3] dir_pin = !PC8 step_pin = PC9 enable_pin = !PD1 microsteps = 16 rotation_distance = 8 [tmc2209 stepper_z3] uart_pin = PD0 run_current = 1.0 sense_resistor = 0.110 stealthchop_threshold = 999999 [quad_gantry_level] gantry_corners = -220, -115 220, 205 points = 15, 5 15, 195 185, 195 185, 5 speed = 50 horizontal_move_z = 10 max_adjust = 4 retries = 7 retry_tolerance = 0.034 [bed_mesh] speed = 120 horizontal_move_z = 5 mesh_min = 20, 30 mesh_max = 205, 200 probe_count = 6, 6 [gcode_macro BED_MESH_CALIBRATE] rename_existing = BASE_BED_MESH_CALIBRATE gcode = BED_MESH_CLEAR QUAD_GANTRY_LEVEL G1 X0 Y0 Z5 F6000 BASE_BED_MESH_CALIBRATE ======================= Extruder max_extrude_ratio=2.078758 mcu 'mcu': Starting CAN connect Created a socket webhooks client 4118155728: New connection webhooks client 4118155728: Client info {'program': 'Moonraker', 'version': 'v0.8.0-188-ga71c5c1'} Loaded MCU 'mcu' 114 commands (v0.11.0-304-gf7567a0d / gcc: (15:12.2.rel1-1) 12.2.1 20221205 binutils: (2.39-8+rpi1+18) 2.39) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CANBUS_BRIDGE=1 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD12,PD13 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'toolhead': Starting CAN connect Created a socket Loaded MCU 'toolhead' 114 commands (v0.11.0-304-gf7567a0d / gcc: (15:12.2.rel1-1) 12.2.1 20221205 binutils: (2.39-8+rpi1+18) 2.39) MCU 'toolhead' config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CANBUS_FREQUENCY=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PB0,PB1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu_temperature 'mcu' nominal base=-269.710145 slope=1305.652174 mcu_temperature 'toolhead' nominal base=-268.843931 slope=1301.878613 Sending MCU 'mcu' printer configuration... Configured MCU 'mcu' (1024 moves) Sending MCU 'toolhead' printer configuration... Configured MCU 'toolhead' (1024 moves) Starting heater checks for heater_bed bed_mesh: generated points Index | Tool Adjusted | Probe 0 | (2.0, 16.0) | (20.0, 30.0) 1 | (39.0, 16.0) | (57.0, 30.0) 2 | (76.0, 16.0) | (94.0, 30.0) 3 | (113.0, 16.0) | (131.0, 30.0) 4 | (150.0, 16.0) | (168.0, 30.0) 5 | (187.0, 16.0) | (205.0, 30.0) 6 | (187.0, 50.0) | (205.0, 64.0) 7 | (150.0, 50.0) | (168.0, 64.0) 8 | (113.0, 50.0) | (131.0, 64.0) 9 | (76.0, 50.0) | (94.0, 64.0) 10 | (39.0, 50.0) | (57.0, 64.0) 11 | (2.0, 50.0) | (20.0, 64.0) 12 | (2.0, 84.0) | (20.0, 98.0) 13 | (39.0, 84.0) | (57.0, 98.0) 14 | (76.0, 84.0) | (94.0, 98.0) 15 | (113.0, 84.0) | (131.0, 98.0) 16 | (150.0, 84.0) | (168.0, 98.0) 17 | (187.0, 84.0) | (205.0, 98.0) 18 | (187.0, 118.0) | (205.0, 132.0) 19 | (150.0, 118.0) | (168.0, 132.0) 20 | (113.0, 118.0) | (131.0, 132.0) 21 | (76.0, 118.0) | (94.0, 132.0) 22 | (39.0, 118.0) | (57.0, 132.0) 23 | (2.0, 118.0) | (20.0, 132.0) 24 | (2.0, 152.0) | (20.0, 166.0) 25 | (39.0, 152.0) | (57.0, 166.0) 26 | (76.0, 152.0) | (94.0, 166.0) 27 | (113.0, 152.0) | (131.0, 166.0) 28 | (150.0, 152.0) | (168.0, 166.0) 29 | (187.0, 152.0) | (205.0, 166.0) 30 | (187.0, 186.0) | (205.0, 200.0) 31 | (150.0, 186.0) | (168.0, 200.0) 32 | (113.0, 186.0) | (131.0, 200.0) 33 | (76.0, 186.0) | (94.0, 200.0) 34 | (39.0, 186.0) | (57.0, 200.0) 35 | (2.0, 186.0) | (20.0, 200.0) Starting heater checks for extruder webhooks: registering remote method 'shutdown_machine' for connection id: 4118155728 webhooks: registering remote method 'reboot_machine' for connection id: 4118155728 webhooks: registering remote method 'pause_job_queue' for connection id: 4118155728 webhooks: registering remote method 'start_job_queue' for connection id: 4118155728