Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-I', '/home/pi/printer_data/comms/klippy.serial', '-l', '/home/pi/printer_data/logs/klippy.log', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-210-g0539e9f2' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Sun Jun 4 15:09:57 2023 (1685916597.5 2907.9) ===== Config file ===== [virtual_sdcard] path = /home/pi/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] recover_velocity = 25 [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if not macro_found else "" if client.park_at_cancel_x is not defined else "X=" + client.park_at_cancel_x|string if client.park_at_cancel_x is not none %} {% set park_y = "" if not macro_found else "" if client.park_at_cancel_y is not defined else "Y=" + client.park_at_cancel_y|string if client.park_at_cancel_y is not none %} {% set custom_park = True if (park_x|length > 0 or park_y|length > 0) else False %} {% 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 gcode = SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{printer[printer.toolhead.extruder].target}" PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = 0 gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} M109 S{last_extruder_temp} _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 %} {action_respond_info("%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 %} {action_respond_info("%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 macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else 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 %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.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 %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 [stepper_x] step_pin = PC2 dir_pin = PB9 enable_pin = !PC3 microsteps = 16 rotation_distance = 40 endstop_pin = !PA5 position_endstop = -4 position_max = 254 position_min = -4 homing_speed = 50 [stepper_y] step_pin = PB8 dir_pin = PB7 enable_pin = !PC3 microsteps = 16 rotation_distance = 40 endstop_pin = !PA6 position_endstop = -2 position_max = 235 position_min = -2 homing_speed = 50 [stepper_z] step_pin = PB6 dir_pin = !PB5 enable_pin = !PC3 microsteps = 16 rotation_distance = 8 endstop_pin = probe:z_virtual_endstop position_max = 270 position_min = -4 [extruder] step_pin = PB4 dir_pin = PB3 enable_pin = !PC3 microsteps = 16 gear_ratio = 42:12 rotation_distance = 26.359 nozzle_diameter = 0.600 filament_diameter = 1.750 heater_pin = PA1 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC5 control = pid pid_kp = 23.561 pid_ki = 1.208 pid_kd = 114.859 min_temp = 0 max_temp = 300 [heater_bed] heater_pin = PA7 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 control = pid pid_kp = 71.867 pid_ki = 1.536 pid_kd = 840.843 min_temp = 0 max_temp = 100 [heater_fan hotend_fan] pin = PC0 fan_speed = 0.6 [fan] pin = PA0 [printer] kinematics = cartesian max_velocity = 500 max_accel = 3000 max_accel_to_decel = 3000 max_z_velocity = 5 square_corner_velocity = 5.0 max_z_accel = 100 [bltouch] sensor_pin = ^PC14 control_pin = PC13 x_offset = -48 y_offset = 0 probe_with_touch_mode = true stow_on_each_sample = false z_offset = 1.290 [bed_mesh] speed = 120 mesh_min = 35, 35 mesh_max = 205, 205 probe_count = 7,7 algorithm = bicubic [safe_z_home] home_xy_position = 165, 116 speed = 75 z_hop = 10 z_hop_speed = 5 move_to_previous = true [filament_switch_sensor RunoutSensor] pause_on_runout = False runout_gcode = PAUSE insert_gcode = RESUME switch_pin = !PC15 [bed_screws] screw1 = 20, 29 screw2 = 195, 29 screw3 = 195, 198 screw4 = 20, 198 [screws_tilt_adjust] screw1 = 76, 30 screw1_name = Front left screw2 = 250, 30 screw2_name = Front right screw3 = 250, 200 screw3_name = Back right screw4 = 76, 200 screw4_name = Back left screw_thread = CW-M4 horizontal_move_z = 10 speed = 50 [gcode_macro M600] description = Starts process of Filament Change gcode = {% if printer.extruder.temperature < 180 %} {action_respond_info("Extruder temperature too low")} {% else %} PAUSE_MACRO _DISABLE_FS UNLOAD_FILAMENT {% endif %} [gcode_macro PAUSE_MACRO] description = Pauses Print gcode = PAUSE SET_IDLE_TIMEOUT TIMEOUT={ 30 * 60 } [gcode_macro FC_RESUME] description = Resume print after Filament Change gcode = {% set E = printer["gcode_macro PAUSE"].extrude|float %} SET_IDLE_TIMEOUT TIMEOUT={ 10 * 60 } G1 E-{ E } G92 E0 RESUME [gcode_macro UNLOAD_FILAMENT] description = Unloads Filament from extruder gcode = {% if printer.extruder.temperature < 180 %} {action_respond_info("Extruder temperature too low")} {% else %} SAVE_GCODE_STATE NAME=UNLOAD_state {% set z_lift = params.z_lift|default(50)|int %} {% set axis_max = printer.toolhead.axis_maximum %} {% set pos = printer.toolhead.position %} {% set z_diff = axis_max.z - pos.z %} {% set z_safe_lift = [ z_lift, z_diff ] | min%} G91 G0 Z{ z_safe_lift } G92 E0 G1 E5.0 F300 G1 E-50 F{ 10 * 60 } G1 E-50 F{ 5 * 60 } RESTORE_GCODE_STATE NAME=UNLOAD_state {% endif %} [gcode_macro PURGE] description = Extrudes filament, used to clean out previous filament gcode = {% if printer.extruder.temperature < 180 %} {action_respond_info("Extruder temperature too low")} {% else %} SAVE_GCODE_STATE NAME=PURGE_state G91 G1 E45.0 F{ 5 * 60 } RESTORE_GCODE_STATE NAME=PURGE_state {% endif %} [gcode_macro LOAD_FILAMENT] description = Loads filament into the extruder gcode = {% if printer.extruder.temperature < 180 %} {action_respond_info("Extruder temperature too low")} {% else %} SAVE_GCODE_STATE NAME=LOAD_state G91 G1 E50 F{ 5 * 60 } G4 P{ 0.9 * 1000 } G1 E25.0 F{ 5 * 60 } _ENABLE_FS RESTORE_GCODE_STATE NAME=LOAD_state {% endif %} [gcode_macro _DISABLE_FS] description = placeholder, disables filament sensor that might trigger an M600 in the middle of a load/unload/M600... gcode = SET_FILAMENT_SENSOR SENSOR=RunoutSensor ENABLE=0 [gcode_macro _ENABLE_FS] description = placeholder, enables filament sensor gcode = SET_FILAMENT_SENSOR SENSOR=RunoutSensor ENABLE=1 [gcode_macro HEAT] description = Heats up the extruder to get ready for Filament Change gcode = SET_HEATER_TEMPERATURE HEATER=extruder TARGET=200 HOME_CHECK G1 Z10 F3000 [gcode_macro COOL] description = Turns off all heaters gcode = TURN_OFF_HEATERS [gcode_macro BED_TRAMMING_1] description = Heats bed and starts process to level the bed with the screws gcode = M140 S60 HOME_CHECK M190 S60 SCREWS_TILT_CALCULATE [gcode_macro BED_TRAMMING_2] description = Continues the bed screw leveling process gcode = SCREWS_TILT_CALCULATE [gcode_macro BED_MESH] description = Heats bed, makes a mesh and saves it gcode = M140 S60 HOME_CHECK M190 S60 BED_MESH_CLEAR BED_MESH_CALIBRATE TURN_OFF_HEATERS SAVE_CONFIG [gcode_macro DISABLE_STEPPERS] description = Disables the printers stepper motors gcode = M84 X Y E [gcode_macro PID_EXTRUDER] description = PID Tune for the Extruder gcode = PID_CALIBRATE HEATER=extruder TARGET=200 TURN_OFF_HEATERS SAVE_CONFIG [gcode_macro PID_BED] description = PID Tune for the Bed gcode = PID_CALIBRATE HEATER=heater_bed TARGET=60 TURN_OFF_HEATERS SAVE_CONFIG [gcode_macro NOZZLE_MID] description = Moves nozzle to the center of the bed gcode = HOME_CHECK G1 X110 Y110 Z10 F6000 [gcode_macro home_check] description = Checks if the printer is homed, it not it homes the printer gcode = {% if printer.toolhead.homed_axes != "xyz" %} G28 {% endif %} [gcode_macro SHOW_PRINT] description = Moves the extruder out of the way and bed forward gcode = HOME_CHECK {% set z_lift = params.z_lift|default(50)|int %} {% set axis_max = printer.toolhead.axis_maximum %} {% set pos = printer.toolhead.position %} {% set z_diff = axis_max.z - pos.z %} {% set z_safe_lift = [ z_lift, z_diff ] | min%} G1 Z{ z_safe_lift } G1 X10 Y220 F4000 [gcode_macro ZOffset_Setup] description = Starts Z-Offset Calibration, under 30 degrees Celsius gcode = {% if printer.heater_bed.temperature > 30 %} {action_respond_info("Bed temperature too high")} {% elif printer.extruder.temperature > 30 %} {action_respond_info("Extruder temperature too High")} {% else %} G28 PROBE_CALIBRATE {% endif %} [gcode_macro Z_Down_01] description = Moves Z down by 0.1 gcode = TESTZ Z=-.1 [gcode_macro Z_Up_01] description = Moves Z up by 0.1 gcode = TESTZ Z=+.1 [gcode_macro Z_Low_Half] description = Sets Z between current value and previous lower value gcode = TESTZ Z=- [gcode_macro Z_High_Half] description = Sets Z between current value and previous higher value gcode = TESTZ Z=+ [gcode_macro Accept_Save] description = Accepts the Z-Offset and saves the config gcode = ACCEPT SAVE_CONFIG [gcode_macro Abort_Setup] description = Aborts the Z-Offset calibration gcode = ABORT [bed_mesh Textured PEI] version = 1 points = 0.027500, 0.022500, 0.050000, -0.015000, -0.067500 0.070000, 0.017500, -0.077500, -0.137500, -0.247500 0.005000, 0.015000, 0.022500, -0.005000, -0.027500 0.042500, 0.050000, 0.062500, 0.027500, 0.057500 -0.005000, 0.032500, 0.065000, 0.100000, 0.095000 x_count = 5 y_count = 5 mesh_x_pps = 2 mesh_y_pps = 2 algo = bicubic tension = 0.2 min_x = 35.0 max_x = 205.0 min_y = 35.0 max_y = 205.0 [bed_mesh Smooth PEI] version = 1 points = -0.015000, 0.095000, 0.087500, 0.032500, 0.075000 0.072500, 0.040000, -0.045000, -0.142500, -0.157500 -0.010000, 0.035000, 0.025000, 0.022500, 0.075000 0.002500, 0.067500, 0.085000, 0.085000, 0.190000 0.040000, 0.097500, 0.105000, 0.105000, 0.162500 x_count = 5 y_count = 5 mesh_x_pps = 2 mesh_y_pps = 2 algo = bicubic tension = 0.2 min_x = 35.0 max_x = 205.0 min_y = 35.0 max_y = 205.0 [bed_mesh G10 Bed] version = 1 points = 0.475000, 0.410000, 0.460000, 0.470000, 0.440000, 0.447500, 0.402500 0.327500, 0.292500, 0.327500, 0.357500, 0.300000, 0.375000, 0.287500 0.280000, 0.222500, 0.300000, 0.315000, 0.287500, 0.382500, 0.315000 0.350000, 0.305000, 0.345000, 0.385000, 0.320000, 0.402500, 0.332500 0.362500, 0.287500, 0.365000, 0.350000, 0.307500, 0.405000, 0.347500 0.392500, 0.337500, 0.365000, 0.402500, 0.310000, 0.392500, 0.320000 0.460000, 0.335000, 0.392500, 0.395000, 0.320000, 0.370000, 0.295000 x_count = 7 y_count = 7 mesh_x_pps = 2 mesh_y_pps = 2 algo = bicubic tension = 0.2 min_x = 35.0 max_x = 204.97 min_y = 35.0 max_y = 204.97 [bed_mesh default] version = 1 points = 0.060000, 0.052500, 0.057500, 0.122500, 0.065000, 0.082500, 0.085000 -0.077500, -0.060000, -0.067500, 0.005000, -0.052500, 0.032500, -0.040000 -0.095000, -0.110000, -0.085000, -0.027500, -0.062500, 0.020000, -0.030000 -0.047500, -0.042500, -0.045000, 0.032500, -0.025000, 0.057500, -0.002500 -0.020000, -0.050000, -0.020000, 0.010000, -0.027500, 0.057500, 0.015000 0.020000, 0.005000, -0.007500, 0.060000, -0.027500, 0.045000, -0.015000 0.095000, 0.025000, 0.042500, 0.080000, 0.005000, 0.050000, -0.010000 x_count = 7 y_count = 7 mesh_x_pps = 2 mesh_y_pps = 2 algo = bicubic tension = 0.2 min_x = 35.0 max_x = 204.97 min_y = 35.0 max_y = 204.97 [bed_mesh G10 Bed ] version = 1 points = 0.052500, 0.062500, 0.055000, 0.152500, 0.085000, 0.092500, 0.120000 -0.042500, -0.027500, -0.042500, 0.022500, -0.020000, 0.032500, 0.005000 -0.087500, -0.080000, -0.062500, 0.022500, -0.027500, 0.055000, 0.032500 -0.040000, -0.030000, -0.022500, 0.055000, 0.007500, 0.077500, 0.060000 -0.020000, -0.025000, -0.010000, 0.047500, -0.010000, 0.077500, 0.065000 -0.022500, -0.017500, -0.022500, 0.060000, -0.005000, 0.062500, 0.057500 0.055000, 0.002500, 0.005000, 0.092500, -0.002500, 0.045000, 0.032500 x_count = 7 y_count = 7 mesh_x_pps = 2 mesh_y_pps = 2 algo = bicubic tension = 0.2 min_x = 35.0 max_x = 204.97 min_y = 35.0 max_y = 204.97 ======================= Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0' webhooks client 4124152496: New connection webhooks client 4124152496: Client info {'program': 'Moonraker', 'version': 'v0.8.0-46-gd623163'}