===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [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_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE={printer[printer.toolhead.extruder].target} {% 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 = 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 %} 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 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 %} {action_respond_info("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.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 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} [gcode_macro _HOME_X] gcode = G4 P2000 G28 X G91 G1 X-10 F1200 [gcode_macro _HOME_Y] gcode = G4 P2000 G28 Y G91 G1 Y-10 F1200 [gcode_macro _HOME_Z] gcode = G28 Z G91 G1 Z-10 F1200 [homing_override] gcode = {% if 'X' not in params and 'Y' not in params and 'Z' not in params %} _HOME_Z _HOME_X _HOME_Y {% else %} {% if 'Z' in params %} _HOME_Z {% endif %} {% if 'X' in params %} _HOME_X {% endif %}m {% if 'Y' in params %} _HOME_Y {% endif %} {% endif %} [mcu] [mcu EBB36] [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [printer] kinematics = corexy max_velocity = 700 max_accel = 12000 max_z_velocity = 15 max_z_accel = 45 square_corner_velocity = 5.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 121 position_max = 121 homing_speed = 40 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 1.1 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 85 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 119 position_max = 119 homing_speed = 40 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 1.1 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 88 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^gpio25 position_endstop = 114 position_max = 114 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.46 sense_resistor = 0.110 stealthchop_threshold = 0 [adxl345] cs_pin = EBB36: PB12 spi_software_sclk_pin = EBB36: PB10 spi_software_mosi_pin = EBB36: PB11 spi_software_miso_pin = EBB36: PB2 axes_map = x,y,z [resonance_tester] accel_chip = adxl345 probe_points = 60, 60, 20 [extruder] step_pin = EBB36: PD0 dir_pin = !EBB36: PD1 enable_pin = !EBB36: PD2 full_steps_per_rotation = 200 rotation_distance = 20.914 gear_ratio = 50:10 microsteps = 32 nozzle_diameter = 0.2500 filament_diameter = 1.750 heater_pin = EBB36: PB13 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = EBB36: PA3 control = pid pid_kp = 40.821 pid_ki = 5.670 pid_kd = 73.478 min_temp = 0 max_temp = 300 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 [tmc2209 extruder] uart_pin = EBB36: PA15 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 [fan] pin = EBB36: PA0 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = EBB36: PA1 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [heater_bed] heater_pin = gpio21 sensor_type = NTC 100K MGB18-104F39050L32 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.190 pid_ki = 2.455 pid_kd = 344.778 [temperature_fan host_fan] pin = gpio20 control = watermark max_delta = 3.0 sensor_type = temperature_host min_temp = 0 max_temp = 85 target_temp = 57.0 max_speed = 1.0 min_speed = 0.3 [idle_timeout] timeout = 1800 [bed_screws] screw1 = 60,05 screw1_name = front screw screw2 = 115,05 screw2_name = front right position screw3 = 05,115 screw3_name = back left screw screw4 = 10,05 screw4_name = front left position screw5 = 115,115 screw5_name = back right screw screw6 = 60,115 screw6_name = back position screw7 = 108,60 screw7_name = middle right position screw8 = 60,60 screw8_name = middle position screw9 = 05,60 screw9_name = middle left position [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G28 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [input_shaper] shaper_type_x = zv shaper_freq_x = 92.6 shaper_type_y = ei shaper_freq_y = 80.2 ======================= Config error Traceback (most recent call last): File "/home/mark/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/mark/klipper/klippy/klippy.py", line 139, in _read_config m.add_printer_objects(config) File "/home/mark/klipper/klippy/mcu.py", line 1026, in add_printer_objects printer.add_object('mcu', MCU(config.getsection('mcu'), mainsync)) File "/home/mark/klipper/klippy/mcu.py", line 575, in __init__ self._serialport = config.get('serial') File "/home/mark/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/mark/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'serial' in section 'mcu' must be specified webhooks client 548550775232: New connection webhooks client 548550775232: Client info {'program': 'Moonraker', 'version': 'v0.8.0-87-g8eddec8'} webhooks client 548550775232: Disconnected Restarting printer Start printer at Sat Jul 8 09:38:45 2023 (1688805525.5 469.9) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [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_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE={printer[printer.toolhead.extruder].target} {% 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 = 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 %} 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 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 %} {action_respond_info("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.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 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} [gcode_macro _HOME_X] gcode = G4 P2000 G28 X G91 G1 X-10 F1200 [gcode_macro _HOME_Y] gcode = G4 P2000 G28 Y G91 G1 Y-10 F1200 [gcode_macro _HOME_Z] gcode = G28 Z G91 G1 Z-10 F1200 [homing_override] gcode = {% if 'X' not in params and 'Y' not in params and 'Z' not in params %} _HOME_Z _HOME_X _HOME_Y {% else %} {% if 'Z' in params %} _HOME_Z {% endif %} {% if 'X' in params %} _HOME_X {% endif %}m {% if 'Y' in params %} _HOME_Y {% endif %} {% endif %} [mcu] canbus_uuid = fc7c3907fd17 [mcu EBB36] canbus_uuid = c80a2d7c1c33 [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [printer] kinematics = corexy max_velocity = 700 max_accel = 12000 max_z_velocity = 15 max_z_accel = 45 square_corner_velocity = 5.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 121 position_max = 121 homing_speed = 40 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 1.1 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 85 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 119 position_max = 119 homing_speed = 40 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 1.1 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 88 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^gpio25 position_endstop = 114 position_max = 114 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.46 sense_resistor = 0.110 stealthchop_threshold = 0 [adxl345] cs_pin = EBB36: PB12 spi_software_sclk_pin = EBB36: PB10 spi_software_mosi_pin = EBB36: PB11 spi_software_miso_pin = EBB36: PB2 axes_map = x,y,z [resonance_tester] accel_chip = adxl345 probe_points = 60, 60, 20 [extruder] step_pin = EBB36: PD0 dir_pin = !EBB36: PD1 enable_pin = !EBB36: PD2 full_steps_per_rotation = 200 rotation_distance = 20.914 gear_ratio = 50:10 microsteps = 32 nozzle_diameter = 0.2500 filament_diameter = 1.750 heater_pin = EBB36: PB13 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = EBB36: PA3 control = pid pid_kp = 40.821 pid_ki = 5.670 pid_kd = 73.478 min_temp = 0 max_temp = 300 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 [tmc2209 extruder] uart_pin = EBB36: PA15 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 [fan] pin = EBB36: PA0 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = EBB36: PA1 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [heater_bed] heater_pin = gpio21 sensor_type = NTC 100K MGB18-104F39050L32 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.190 pid_ki = 2.455 pid_kd = 344.778 [temperature_fan host_fan] pin = gpio20 control = watermark max_delta = 3.0 sensor_type = temperature_host min_temp = 0 max_temp = 85 target_temp = 57.0 max_speed = 1.0 min_speed = 0.3 [idle_timeout] timeout = 1800 [bed_screws] screw1 = 60,05 screw1_name = front screw screw2 = 115,05 screw2_name = front right position screw3 = 05,115 screw3_name = back left screw screw4 = 10,05 screw4_name = front left position screw5 = 115,115 screw5_name = back right screw screw6 = 60,115 screw6_name = back position screw7 = 108,60 screw7_name = middle right position screw8 = 60,60 screw8_name = middle position screw9 = 05,60 screw9_name = middle left position [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G28 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [input_shaper] shaper_type_x = zv shaper_freq_x = 92.6 shaper_type_y = ei shaper_freq_y = 80.2 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting CAN connect Created a socket webhooks client 548467702464: New connection webhooks client 548467702464: Client info {'program': 'Moonraker', 'version': 'v0.8.0-87-g8eddec8'} Loaded MCU 'mcu' 109 commands (v0.11.0-240-g6d48adf9 / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CANBUS_BRIDGE=1 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=gpio1,gpio0 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBB36': Starting CAN connect Created a socket Loaded MCU 'EBB36' 109 commands (v0.11.0-234-gd32a8334 / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'EBB36' 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=1000000 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=437.226612 slope=-1917.489831 Sending MCU 'mcu' printer configuration... Configured MCU 'mcu' (1024 moves) Sending MCU 'EBB36' printer configuration... Configured MCU 'EBB36' (1024 moves) TMC stepper_x failed to init: Unable to read tmc uart 'stepper_x' register IFCNT TMC stepper_y failed to init: Unable to read tmc uart 'stepper_y' register IFCNT TMC stepper_z failed to init: Unable to read tmc uart 'stepper_z' register IFCNT Starting heater checks for heater_bed Unable to obtain tmc stepper_z phase Starting heater checks for extruder webhooks: registering remote method 'shutdown_machine' for connection id: 548467702464 webhooks: registering remote method 'reboot_machine' for connection id: 548467702464 webhooks: registering remote method 'pause_job_queue' for connection id: 548467702464 webhooks: registering remote method 'start_job_queue' for connection id: 548467702464