Args: ['/home/Voron/klipper/klippy/klippy.py', '/home/Voron/printer_data/config/printer.cfg', '-l', '/home/Voron/printer_data/logs/klippy.log', '-I', '/home/Voron/printer_data/comms/klippy.serial', '-a', '/home/Voron/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-148-g52f4e20c' CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' =============== Log rollover at Sun Apr 30 16:53:04 2023 =============== webhooks client 4141878960: Disconnected Starting Klippy... Args: ['/home/Voron/klipper/klippy/klippy.py', '/home/Voron/printer_data/config/printer.cfg', '-l', '/home/Voron/printer_data/logs/klippy.log', '-I', '/home/Voron/printer_data/comms/klippy.serial', '-a', '/home/Voron/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-148-g52f4e20c' CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Building C code module c_helper.so Start printer at Sun Apr 30 16:53:44 2023 (1682891624.7 43.5) Unable to open config file /home/Voron/printer_data/config/printer.cfg Traceback (most recent call last): File "/home/Voron/klipper/klippy/configfile.py", line 158, in _read_config_file f = open(filename, 'r') FileNotFoundError: [Errno 2] No such file or directory: '/home/Voron/printer_data/config/printer.cfg' Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/configfile.py", line 158, in _read_config_file f = open(filename, 'r') FileNotFoundError: [Errno 2] No such file or directory: '/home/Voron/printer_data/config/printer.cfg' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 134, in _read_config config = pconfig.read_main_config() File "/home/Voron/klipper/klippy/configfile.py", line 279, in read_main_config data = self._read_config_file(filename) File "/home/Voron/klipper/klippy/configfile.py", line 164, in _read_config_file raise error(msg) configparser.Error: Unable to open config file /home/Voron/printer_data/config/printer.cfg webhooks client 4131917912: New connection webhooks client 4131917912: Client info {'program': 'Moonraker', 'version': 'v0.8.0-30-g110cbd1'} Starting Klippy... Args: ['/home/Voron/klipper/klippy/klippy.py', '/home/Voron/printer_data/config/printer.cfg', '-l', '/home/Voron/printer_data/logs/klippy.log', '-I', '/home/Voron/printer_data/comms/klippy.serial', '-a', '/home/Voron/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-190-g19877425' CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Building C code module c_helper.so Starting Klippy... Args: ['/home/Voron/klipper/klippy/klippy.py', '/home/Voron/printer_data/config/printer.cfg', '-l', '/home/Voron/printer_data/logs/klippy.log', '-I', '/home/Voron/printer_data/comms/klippy.serial', '-a', '/home/Voron/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-190-g19877425' CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Sun Apr 30 16:56:22 2023 (1682891782.4 182.9) Unable to open config file /home/Voron/printer_data/config/printer.cfg Traceback (most recent call last): File "/home/Voron/klipper/klippy/configfile.py", line 158, in _read_config_file f = open(filename, 'r') FileNotFoundError: [Errno 2] No such file or directory: '/home/Voron/printer_data/config/printer.cfg' Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/configfile.py", line 158, in _read_config_file f = open(filename, 'r') FileNotFoundError: [Errno 2] No such file or directory: '/home/Voron/printer_data/config/printer.cfg' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 134, in _read_config config = pconfig.read_main_config() File "/home/Voron/klipper/klippy/configfile.py", line 279, in read_main_config data = self._read_config_file(filename) File "/home/Voron/klipper/klippy/configfile.py", line 164, in _read_config_file raise error(msg) configparser.Error: Unable to open config file /home/Voron/printer_data/config/printer.cfg webhooks client 4134015064: New connection webhooks client 4134015064: Client info {'program': 'Moonraker', 'version': 'v0.8.0-30-g110cbd1'} webhooks client 4134015064: Disconnected webhooks client 4134016624: New connection webhooks client 4134016624: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} webhooks client 4134016624: Disconnected Restarting printer Start printer at Sun Apr 30 17:01:56 2023 (1682892116.9 517.4) ===== Config file ===== [mcu] serial = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:17 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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> [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/Voron/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 28, in load_config return PrinterHeaterBed(config) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 11, in __init__ self.heater = pheaters.setup_heater(config, 'B') File "/home/Voron/klipper/klippy/extras/heaters.py", line 263, in setup_heater sensor = self.setup_sensor(config) File "/home/Voron/klipper/klippy/extras/heaters.py", line 279, in setup_sensor sensor_type = config.get('sensor_type') File "/home/Voron/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/Voron/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'sensor_type' in section 'heater_bed' must be specified webhooks client 4133588920: New connection webhooks client 4133588920: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} Unable to issue reset command on MCU 'mcu' webhooks client 4133588920: Disconnected Restarting printer Start printer at Sun Apr 30 17:08:10 2023 (1682892490.2 890.7) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/Voron/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 28, in load_config return PrinterHeaterBed(config) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 11, in __init__ self.heater = pheaters.setup_heater(config, 'B') File "/home/Voron/klipper/klippy/extras/heaters.py", line 265, in setup_heater self.heaters[heater_name] = heater = Heater(config, sensor) File "/home/Voron/klipper/klippy/extras/heaters.py", line 50, in __init__ heater_pin = config.get('heater_pin') File "/home/Voron/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/Voron/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'heater_pin' in section 'heater_bed' must be specified webhooks client 4129829360: New connection webhooks client 4129829360: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} Unable to issue reset command on MCU 'mcu' webhooks client 4129829360: Disconnected Restarting printer Start printer at Sun Apr 30 17:09:15 2023 (1682892555.4 955.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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' webhooks client 4127507528: New connection webhooks client 4127507528: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' Unable to issue reset command on MCU 'mcu' webhooks client 4127507528: Disconnected Restarting printer Start printer at Sun Apr 30 17:09:34 2023 (1682892574.3 974.8) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' webhooks client 4127174416: New connection webhooks client 4127174416: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' webhooks client 4127174416: Disconnected Restarting printer Start printer at Sun Apr 30 17:09:44 2023 (1682892584.7 985.2) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' webhooks client 4127174488: New connection webhooks client 4127174488: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' Printer is not ready The klippy host software is attempting to connect. Please retry in a few moments. Klipper state: Not ready mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' Unable to issue reset command on MCU 'mcu' webhooks client 4127174488: Disconnected Restarting printer Start printer at Sun Apr 30 17:10:18 2023 (1682892618.4 1018.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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/Voron/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 28, in load_config return PrinterHeaterBed(config) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 11, in __init__ self.heater = pheaters.setup_heater(config, 'B') File "/home/Voron/klipper/klippy/extras/heaters.py", line 265, in setup_heater self.heaters[heater_name] = heater = Heater(config, sensor) File "/home/Voron/klipper/klippy/extras/heaters.py", line 50, in __init__ heater_pin = config.get('heater_pin') File "/home/Voron/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/Voron/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'heater_pin' in section 'heater_bed' must be specified webhooks client 4129366128: New connection webhooks client 4129366128: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} Unable to issue reset command on MCU 'mcu' webhooks client 4129366128: Disconnected Restarting printer Start printer at Sun Apr 30 17:11:12 2023 (1682892672.0 1072.5) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' webhooks client 4127173792: New connection webhooks client 4127173792: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' MCU error during connect Traceback (most recent call last): File "/home/Voron/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/Voron/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/Voron/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/Voron/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/Voron/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/Voron/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/Voron/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect No build file /home/Voron/klipper/klippy/../.config No build file /home/Voron/klipper/klippy/../out/klipper.dict No build file /home/Voron/klipper/klippy/../out/klipper.elf Unable to issue reset command on MCU 'mcu' webhooks client 4127173792: Disconnected Restarting printer Start printer at Sun Apr 30 17:13:05 2023 (1682892785.3 1185.8) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' webhooks client 4127172808: New connection webhooks client 4127172808: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00' MCU error during connect Traceback (most recent call last): File "/home/Voron/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/Voron/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/Voron/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/Voron/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/Voron/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/Voron/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/Voron/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect No build file /home/Voron/klipper/klippy/../.config No build file /home/Voron/klipper/klippy/../out/klipper.dict No build file /home/Voron/klipper/klippy/../out/klipper.elf Unable to issue reset command on MCU 'mcu' webhooks client 4127172808: Disconnected Starting Klippy... Args: ['/home/Voron/klipper/klippy/klippy.py', '/home/Voron/printer_data/config/printer.cfg', '-l', '/home/Voron/printer_data/logs/klippy.log', '-I', '/home/Voron/printer_data/comms/klippy.serial', '-a', '/home/Voron/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-190-g19877425' CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Sun Apr 30 17:02:43 2023 (1682892163.7 23.0) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/Voron/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 28, in load_config return PrinterHeaterBed(config) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 11, in __init__ self.heater = pheaters.setup_heater(config, 'B') File "/home/Voron/klipper/klippy/extras/heaters.py", line 265, in setup_heater self.heaters[heater_name] = heater = Heater(config, sensor) File "/home/Voron/klipper/klippy/extras/heaters.py", line 50, in __init__ heater_pin = config.get('heater_pin') File "/home/Voron/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/Voron/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'heater_pin' in section 'heater_bed' must be specified webhooks client 4129087464: New connection webhooks client 4129087464: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} Unable to issue reset command on MCU 'mcu' webhooks client 4129087464: Disconnected Restarting printer Start printer at Sun Apr 30 17:18:48 2023 (1682893128.5 170.2) ===== 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 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-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect webhooks client 4127360888: New connection webhooks client 4127360888: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/Voron/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/Voron/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/Voron/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/Voron/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/Voron/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed Unable to issue reset command on MCU 'mcu' webhooks client 4127360888: Disconnected Restarting printer Start printer at Sun Apr 30 17:20:10 2023 (1682893210.9 252.6) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' webhooks client 4110154360: New connection webhooks client 4110154360: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' Printer is not ready The klippy host software is attempting to connect. Please retry in a few moments. Klipper state: Not ready mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' Unable to issue reset command on MCU 'mcu' webhooks client 4110154360: Disconnected Restarting printer Start printer at Sun Apr 30 17:20:58 2023 (1682893258.7 300.4) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/Voron/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 28, in load_config return PrinterHeaterBed(config) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 11, in __init__ self.heater = pheaters.setup_heater(config, 'B') File "/home/Voron/klipper/klippy/extras/heaters.py", line 265, in setup_heater self.heaters[heater_name] = heater = Heater(config, sensor) File "/home/Voron/klipper/klippy/extras/heaters.py", line 50, in __init__ heater_pin = config.get('heater_pin') File "/home/Voron/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/Voron/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'heater_pin' in section 'heater_bed' must be specified webhooks client 4127361968: New connection webhooks client 4127361968: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} Starting Klippy... Args: ['/home/Voron/klipper/klippy/klippy.py', '/home/Voron/printer_data/config/printer.cfg', '-l', '/home/Voron/printer_data/logs/klippy.log', '-I', '/home/Voron/printer_data/comms/klippy.serial', '-a', '/home/Voron/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-190-g19877425' CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Sun Apr 30 17:50:43 2023 (1682895043.4 37.7) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/Voron/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 28, in load_config return PrinterHeaterBed(config) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 11, in __init__ self.heater = pheaters.setup_heater(config, 'B') File "/home/Voron/klipper/klippy/extras/heaters.py", line 265, in setup_heater self.heaters[heater_name] = heater = Heater(config, sensor) File "/home/Voron/klipper/klippy/extras/heaters.py", line 50, in __init__ heater_pin = config.get('heater_pin') File "/home/Voron/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/Voron/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'heater_pin' in section 'heater_bed' must be specified webhooks client 4123004904: New connection webhooks client 4123004904: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} Starting Klippy... Args: ['/home/Voron/klipper/klippy/klippy.py', '/home/Voron/printer_data/config/printer.cfg', '-l', '/home/Voron/printer_data/logs/klippy.log', '-I', '/home/Voron/printer_data/comms/klippy.serial', '-a', '/home/Voron/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-190-g19877425' CPU: 4 core ? Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Sun Apr 30 18:13:15 2023 (1682896395.1 22.0) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Config error Traceback (most recent call last): File "/home/Voron/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/Voron/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/Voron/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 28, in load_config return PrinterHeaterBed(config) File "/home/Voron/klipper/klippy/extras/heater_bed.py", line 11, in __init__ self.heater = pheaters.setup_heater(config, 'B') File "/home/Voron/klipper/klippy/extras/heaters.py", line 265, in setup_heater self.heaters[heater_name] = heater = Heater(config, sensor) File "/home/Voron/klipper/klippy/extras/heaters.py", line 50, in __init__ heater_pin = config.get('heater_pin') File "/home/Voron/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/Voron/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'heater_pin' in section 'heater_bed' must be specified webhooks client 4128722776: New connection webhooks client 4128722776: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} Unable to issue reset command on MCU 'mcu' webhooks client 4128722776: Disconnected Restarting printer Start printer at Sun Apr 30 18:14:56 2023 (1682896496.7 89.2) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' webhooks client 4127004536: New connection webhooks client 4127004536: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' MCU error during connect Traceback (most recent call last): File "/home/Voron/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/Voron/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/Voron/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/Voron/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/Voron/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/Voron/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/Voron/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/Voron/klipper/klippy/../.config(3180): Sun Apr 30 17:31:00 2023 ========= Last MCU build config ========= CONFIG_LOW_LEVEL_OPTIONS=y # CONFIG_MACH_AVR is not set # CONFIG_MACH_ATSAM is not set # CONFIG_MACH_ATSAMD is not set # CONFIG_MACH_LPC176X is not set CONFIG_MACH_STM32=y # CONFIG_MACH_HC32F460 is not set # CONFIG_MACH_RP2040 is not set # CONFIG_MACH_PRU is not set # CONFIG_MACH_AR100 is not set # CONFIG_MACH_LINUX is not set # CONFIG_MACH_SIMU is not set CONFIG_BOARD_DIRECTORY="stm32" CONFIG_MCU="stm32f446xx" CONFIG_CLOCK_FREQ=180000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x80000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x20000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8008000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set CONFIG_MACH_STM32F446=y # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set # CONFIG_MACH_STM32G0B1 is not set # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set # CONFIG_MACH_N32G452 is not set # CONFIG_MACH_N32G455 is not set CONFIG_MACH_STM32F4=y CONFIG_HAVE_STM32_USBOTG=y CONFIG_HAVE_STM32_CANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_8000=y # CONFIG_STM32_FLASH_START_10000 is not set # CONFIG_STM32_FLASH_START_0000 is not set # CONFIG_STM32_CLOCK_REF_8M is not set CONFIG_STM32_CLOCK_REF_12M=y # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=12000000 CONFIG_STM32F0_TRIM=16 CONFIG_STM32_USB_PA11_PA12=y # CONFIG_STM32_SERIAL_USART1 is not set # CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set # CONFIG_STM32_SERIAL_USART2 is not set # CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set # CONFIG_STM32_SERIAL_USART3 is not set # CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set # CONFIG_STM32_CANBUS_PA11_PA12 is not set # CONFIG_STM32_CANBUS_PA11_PB9 is not set # CONFIG_STM32_MMENU_CANBUS_PB8_PB9 is not set # CONFIG_STM32_MMENU_CANBUS_PI9_PH13 is not set # CONFIG_STM32_MMENU_CANBUS_PB5_PB6 is not set # CONFIG_STM32_MMENU_CANBUS_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_USBCANBUS_PA11_PA12 is not set CONFIG_USB=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER_CHIPID=y CONFIG_USB_SERIAL_NUMBER="12345" # # USB ids # # end of USB ids CONFIG_CANBUS_FREQUENCY=500000 CONFIG_INITIAL_PINS="" CONFIG_HAVE_GPIO=y CONFIG_HAVE_GPIO_ADC=y CONFIG_HAVE_GPIO_SPI=y CONFIG_HAVE_GPIO_SDIO=y CONFIG_HAVE_GPIO_I2C=y CONFIG_HAVE_GPIO_HARD_PWM=y CONFIG_HAVE_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/Voron/klipper/klippy/../out/klipper.dict(8399): Sun Apr 30 17:48:51 2023 Last MCU build version: v0.11.0-190-g19877425 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1=PB6,PB7 BUS_PINS_i2c1a=PB8,PB9 BUS_PINS_i2c2=PB10,PB11 BUS_PINS_i2c3=PA8,PC9 BUS_PINS_sdio=PC12,PD2,PC8,PC9,PC10,PC11 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 BUS_PINS_spi3a=PC11,PC12,PC10 BUS_PINS_spi4=PE13,PE14,PE12 CLOCK_FREQ=180000000 MCU=stm32f446xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PH0,PH1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/Voron/klipper/klippy/../out/klipper.elf(1264020): Sun Apr 30 17:49:00 2023 Unable to issue reset command on MCU 'mcu' webhooks client 4127004536: Disconnected Restarting printer Start printer at Sun Apr 30 18:16:35 2023 (1682896595.3 187.8) ===== 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 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 = usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' webhooks client 4126656712: New connection webhooks client 4126656712: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0: [Errno 2] No such file or directory: 'usb-STMicroelectronics_MARLIN_BIGTREE_OCTOPUS_V1_CDC_in_FS_Mode_205938335333-if00 -> ../../ttyACM0' Unable to issue reset command on MCU 'mcu' webhooks client 4126656712: Disconnected Restarting printer Start printer at Sun Apr 30 18:17:09 2023 (1682896630.0 222.5) ===== 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 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 = usb-Klipper_stm32f446xx_020024001650335331383520-if00 restart_method = command [printer] kinematics = corexy max_velocity = 300 max_accel = 3000 max_z_velocity = 15 max_z_accel = 350 square_corner_velocity = 5.0 [stepper_x] step_pin = PF13 dir_pin = !PF12 enable_pin = !PF14 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG6 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = PC4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_y] step_pin = PG0 dir_pin = !PG1 enable_pin = !PF15 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = PG9 position_min = 0 position_endstop = 350 position_max = 350 homing_speed = 25 homing_retract_dist = 5 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = PD11 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z] step_pin = PF11 dir_pin = !PG3 enable_pin = !PG5 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 endstop_pin = PG10 position_endstop = -0.5 position_max = 310 position_min = -5 homing_speed = 8 second_homing_speed = 3 homing_retract_dist = 3 [tmc2209 stepper_z] uart_pin = PC6 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z1] step_pin = PG4 dir_pin = PC1 enable_pin = !PA0 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z1] uart_pin = PC7 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z2] step_pin = PF9 dir_pin = !PF10 enable_pin = !PG2 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z2] uart_pin = PF2 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [stepper_z3] step_pin = PC13 dir_pin = PF0 enable_pin = !PF1 rotation_distance = 40 gear_ratio = 80:16 microsteps = 32 [tmc2209 stepper_z3] uart_pin = PE4 interpolate = false run_current = 0.8 sense_resistor = 0.110 stealthchop_threshold = 0 [extruder] step_pin = PE2 dir_pin = PE3 enable_pin = !PD4 rotation_distance = 22.6789511 gear_ratio = 50:10 microsteps = 32 full_steps_per_rotation = 200 nozzle_diameter = 0.400 filament_diameter = 1.75 heater_pin = PA2 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PF4 min_temp = 10 max_temp = 270 max_power = 1.0 min_extrude_temp = 170 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 [tmc2209 extruder] uart_pin = PE1 interpolate = false run_current = 0.5 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = PA3 sensor_type = Generic 3950 sensor_pin = PF3 max_power = 0.6 min_temp = 0 max_temp = 120 control = pid pid_kp = 58.437 pid_ki = 2.347 pid_kd = 363.769 [probe] pin = PG15 x_offset = 0 y_offset = 25.0 z_offset = 0 speed = 10.0 samples = 3 samples_result = median sample_retract_dist = 3.0 samples_tolerance = 0.006 samples_tolerance_retries = 3 [fan] pin = PA8 kick_start_time = 0.5 off_below = 0.10 [heater_fan hotend_fan] pin = PE5 max_power = 1.0 kick_start_time = 0.5 heater = extruder heater_temp = 50.0 [controller_fan controller_fan] pin = PD12 kick_start_time = 0.5 heater = heater_bed [heater_fan exhaust_fan] pin = PD13 max_power = 1.0 shutdown_speed = 0.0 kick_start_time = 5.0 heater = heater_bed heater_temp = 60 fan_speed = 1.0 [idle_timeout] timeout = 1800 [safe_z_home] home_xy_position = -10,-10 speed = 100 z_hop = 10 [quad_gantry_level] gantry_corners = -60,-10 410,420 points = 50,25 50,275 300,275 300,25 speed = 100 horizontal_move_z = 10 retries = 5 retry_tolerance = 0.0075 max_adjust = 10 [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 [neopixel btt_mini12864] pin = EXP1_6 chain_count = 3 initial_red = 0.1 initial_green = 0.5 initial_blue = 0.0 color_order = RGB [delayed_gcode setdisplayneopixel] initial_duration = 1 gcode = SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0 SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 [gcode_macro PARK] gcode = {% set th = printer.toolhead %} G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 [gcode_macro G32] gcode = SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 QUAD_GANTRY_LEVEL G28 PARK RESTORE_GCODE_STATE NAME=STATE_G32 [gcode_macro PRINT_START] gcode = G32 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = {% set th = printer.toolhead %} {% 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 + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 G92 E0 G1 E-5.0 F1800 TURN_OFF_HEATERS G90 G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 M107 BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00' webhooks client 4126660856: New connection webhooks client 4126660856: Client info {'program': 'Moonraker', 'version': 'v0.8.0-39-g6c7dfe5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port usb-Klipper_stm32f446xx_020024001650335331383520-if00: [Errno 2] No such file or directory: 'usb-Klipper_stm32f446xx_020024001650335331383520-if00'