=============== Log rollover at Fri Dec 1 16:13:02 2023 =============== Starting Klippy... Args: ['/home/biqu/klipper/klippy/klippy.py', '/home/biqu/printer_data/config/printer.cfg', '-I', '/home/biqu/printer_data/comms/klippy.serial', '-l', '/home/biqu/printer_data/logs/klippy.log', '-a', '/home/biqu/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-127-g4b1536d6' CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Fri Dec 1 16:13:13 2023 (1701447193.3 27.3) Config error Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/biqu/klipper/klippy/klippy.py", line 134, in _read_config config = pconfig.read_main_config() File "/home/biqu/klipper/klippy/configfile.py", line 281, in read_main_config regular_config = self._build_config_wrapper(regular_data, filename) File "/home/biqu/klipper/klippy/configfile.py", line 268, in _build_config_wrapper self._parse_config(data, filename, fileconfig, set()) File "/home/biqu/klipper/klippy/configfile.py", line 256, in _parse_config self._resolve_include(filename, include_spec, fileconfig, File "/home/biqu/klipper/klippy/configfile.py", line 229, in _resolve_include raise error("Include file '%s' does not exist" % (include_glob,)) configparser.Error: Include file '/home/biqu/printer_data/config/generic-bigtreetech-xxx.cfg' does not exist webhooks client 281473613737552: New connection webhooks client 281473613737552: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} webhooks client 281473613737552: Disconnected Restarting printer Start printer at Fri Dec 1 17:42:27 2023 (1701452547.6 5370.2) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [heater_fan nozzle_cooling_fan] pin = PC7 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = -2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= Config error Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/biqu/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/biqu/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/biqu/klipper/klippy/extras/bltouch.py", line 274, in load_config blt = BLTouchEndstopWrapper(config) File "/home/biqu/klipper/klippy/extras/bltouch.py", line 33, in __init__ self.position_endstop = config.getfloat('z_offset', minval=0.) File "/home/biqu/klipper/klippy/configfile.py", line 65, in getfloat return self._get_wrapper(self.fileconfig.getfloat, option, default, File "/home/biqu/klipper/klippy/configfile.py", line 44, in _get_wrapper raise error("Option '%s' in section '%s' must have minimum of %s" configparser.Error: Option 'z_offset' in section 'bltouch' must have minimum of 0.0 webhooks client 281473613734336: New connection webhooks client 281473613734336: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 265, in open self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK) FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 949, in _firmware_restart self._restart_arduino() File "/home/biqu/klipper/klippy/mcu.py", line 909, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/biqu/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 268, in open raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg)) serial.serialutil.SerialException: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' Restarting printer Start printer at Fri Dec 1 17:43:06 2023 (1701452586.4 5408.9) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [heater_fan nozzle_cooling_fan] pin = PC7 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Config error Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/biqu/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/biqu/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/biqu/klipper/klippy/extras/heater_fan.py", line 42, in load_config_prefix return PrinterHeaterFan(config) File "/home/biqu/klipper/klippy/extras/heater_fan.py", line 18, in __init__ self.fan = fan.Fan(config, default_shutdown_speed=1.) File "/home/biqu/klipper/klippy/extras/fan.py", line 27, in __init__ self.mcu_fan = ppins.setup_pin('pwm', config.get('pin')) File "/home/biqu/klipper/klippy/pins.py", line 117, in setup_pin pin_params = self.lookup_pin(pin_desc, can_invert, can_pullup) File "/home/biqu/klipper/klippy/pins.py", line 106, in lookup_pin raise error("pin %s used multiple times in config" % (pin,)) pins.error: pin PC7 used multiple times in config webhooks client 281473613891232: New connection webhooks client 281473613891232: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 265, in open self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK) FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 949, in _firmware_restart self._restart_arduino() File "/home/biqu/klipper/klippy/mcu.py", line 909, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/biqu/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 268, in open raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg)) serial.serialutil.SerialException: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' Restarting printer Start printer at Fri Dec 1 17:44:07 2023 (1701452647.9 5470.4) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' webhooks client 281473607583008: New connection webhooks client 281473607583008: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' MCU error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect No build file /home/biqu/klipper/klippy/../.config No build file /home/biqu/klipper/klippy/../out/klipper.dict No build file /home/biqu/klipper/klippy/../out/klipper.elf Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 265, in open self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK) FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 949, in _firmware_restart self._restart_arduino() File "/home/biqu/klipper/klippy/mcu.py", line 909, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/biqu/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 268, in open raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg)) serial.serialutil.SerialException: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' Restarting printer Start printer at Fri Dec 1 17:55:20 2023 (1701453320.6 6143.1) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' webhooks client 281473607170608: New connection webhooks client 281473607170608: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 265, in open self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK) FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 949, in _firmware_restart self._restart_arduino() File "/home/biqu/klipper/klippy/mcu.py", line 909, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/biqu/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/biqu/klippy-env/lib/python3.9/site-packages/serial/serialposix.py", line 268, in open raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg)) serial.serialutil.SerialException: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_stm32g0b1xx_300035000350415339373620-if00' Restarting printer Start printer at Fri Dec 1 17:55:34 2023 (1701453334.7 6157.2) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281473604693824: New connection webhooks client 281473604693824: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed webhooks client 281473604693824: Disconnected Restarting printer Start printer at Fri Dec 1 17:56:25 2023 (1701453385.3 6207.8) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281473607271760: New connection webhooks client 281473607271760: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} Starting Klippy... Args: ['/home/biqu/klipper/klippy/klippy.py', '/home/biqu/printer_data/config/printer.cfg', '-I', '/home/biqu/printer_data/comms/klippy.serial', '-l', '/home/biqu/printer_data/logs/klippy.log', '-a', '/home/biqu/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-127-g4b1536d6' CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Fri Dec 1 17:56:44 2023 (1701453404.1 20.8) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' webhooks client 281473572264352: New connection webhooks client 281473572264352: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed Attempting MCU 'mcu' reset webhooks client 281473572264352: Disconnected Restarting printer Start printer at Fri Dec 1 17:58:38 2023 (1701453518.3 123.4) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281473572736112: New connection webhooks client 281473572736112: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed webhooks client 281473572736112: Disconnected Restarting printer Start printer at Fri Dec 1 18:09:10 2023 (1701454150.3 755.5) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00' webhooks client 281473572709232: New connection webhooks client 281473572709232: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed Attempting MCU 'mcu' reset webhooks client 281473572709232: Disconnected Restarting printer Start printer at Fri Dec 1 18:15:35 2023 (1701454535.6 1140.7) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 360 position_max = 360 homing_speed = 50 full_steps_per_rotation = 200 position_min = 0 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 uart_address = 0 run_current = 0.45 stealthchop_threshold = 999999 diag_pin = PC0 driver_sgthrs = 100 interpolate = true sense_resistor = 0.110 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 365 position_max = 365 homing_speed = 50 homing_retract_dist = 0 full_steps_per_rotation = 200 position_min = 0 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 uart_address = 2 run_current = 0.57 stealthchop_threshold = 999999 diag_pin = PC1 driver_sgthrs = 110 interpolate = true sense_resistor = 0.110 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 microsteps = 16 rotation_distance = 4 endstop_pin = probe:z_virtual_endstop position_endstop = 0.0 position_max = 400 full_steps_per_rotation = 200 position_min = -5 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 run_current = 0.48 stealthchop_threshold = 999999 interpolate = true sense_resistor = 0.110 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 rotation_distance = 22.6789511 nozzle_diameter = 0.600 filament_diameter = 1.750 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 min_temp = 0 max_temp = 300 full_steps_per_rotation = 200 gear_ratio = 50:10 max_power = 1.0 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 run_current = 0.85 stealthchop_threshold = 0 interpolate = true hold_current = 0.100 sense_resistor = 0.11 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 min_temp = 0 max_temp = 125 [heater_fan heatbreak_cooling_fan] pin = PC7 [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_z_velocity = 10 max_z_accel = 100 max_accel_to_decel = 6000 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [gcode_arcs] [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Config error Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/biqu/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/biqu/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/biqu/klipper/klippy/extras/heater_fan.py", line 42, in load_config_prefix return PrinterHeaterFan(config) File "/home/biqu/klipper/klippy/extras/heater_fan.py", line 18, in __init__ self.fan = fan.Fan(config, default_shutdown_speed=1.) File "/home/biqu/klipper/klippy/extras/fan.py", line 27, in __init__ self.mcu_fan = ppins.setup_pin('pwm', config.get('pin')) File "/home/biqu/klipper/klippy/pins.py", line 117, in setup_pin pin_params = self.lookup_pin(pin_desc, can_invert, can_pullup) File "/home/biqu/klipper/klippy/pins.py", line 106, in lookup_pin raise error("pin %s used multiple times in config" % (pin,)) pins.error: pin PC7 used multiple times in config webhooks client 281473572374032: New connection webhooks client 281473572374032: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} Attempting MCU 'mcu' reset webhooks client 281473572374032: Disconnected Restarting printer Start printer at Fri Dec 1 18:15:43 2023 (1701454543.0 1148.2) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 360 position_max = 360 homing_speed = 50 full_steps_per_rotation = 200 position_min = 0 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 uart_address = 0 run_current = 0.45 stealthchop_threshold = 999999 diag_pin = PC0 driver_sgthrs = 100 interpolate = true sense_resistor = 0.110 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 365 position_max = 365 homing_speed = 50 homing_retract_dist = 0 full_steps_per_rotation = 200 position_min = 0 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 uart_address = 2 run_current = 0.57 stealthchop_threshold = 999999 diag_pin = PC1 driver_sgthrs = 110 interpolate = true sense_resistor = 0.110 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 microsteps = 16 rotation_distance = 4 endstop_pin = probe:z_virtual_endstop position_endstop = 0.0 position_max = 400 full_steps_per_rotation = 200 position_min = -5 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 run_current = 0.48 stealthchop_threshold = 999999 interpolate = true sense_resistor = 0.110 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 rotation_distance = 22.6789511 nozzle_diameter = 0.600 filament_diameter = 1.750 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 min_temp = 0 max_temp = 300 full_steps_per_rotation = 200 gear_ratio = 50:10 max_power = 1.0 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 run_current = 0.85 stealthchop_threshold = 0 interpolate = true hold_current = 0.100 sense_resistor = 0.11 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 min_temp = 0 max_temp = 125 [heater_fan heatbreak_cooling_fan] pin = PC7 [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_z_velocity = 10 max_z_accel = 100 max_accel_to_decel = 6000 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [gcode_arcs] [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= Starting Klippy... Args: ['/home/biqu/klipper/klippy/klippy.py', '/home/biqu/printer_data/config/printer.cfg', '-I', '/home/biqu/printer_data/comms/klippy.serial', '-l', '/home/biqu/printer_data/logs/klippy.log', '-a', '/home/biqu/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-127-g4b1536d6' CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Fri Dec 1 18:16:13 2023 (1701454573.4 36.0) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 360 position_max = 360 homing_speed = 50 full_steps_per_rotation = 200 position_min = 0 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 uart_address = 0 run_current = 0.45 stealthchop_threshold = 999999 diag_pin = PC0 driver_sgthrs = 100 interpolate = true sense_resistor = 0.110 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 microsteps = 16 rotation_distance = 40 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 365 position_max = 365 homing_speed = 50 homing_retract_dist = 0 full_steps_per_rotation = 200 position_min = 0 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 uart_address = 2 run_current = 0.57 stealthchop_threshold = 999999 diag_pin = PC1 driver_sgthrs = 110 interpolate = true sense_resistor = 0.110 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 microsteps = 16 rotation_distance = 4 endstop_pin = probe:z_virtual_endstop position_endstop = 0.0 position_max = 400 full_steps_per_rotation = 200 position_min = -5 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 run_current = 0.48 stealthchop_threshold = 999999 interpolate = true sense_resistor = 0.110 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 rotation_distance = 22.6789511 nozzle_diameter = 0.600 filament_diameter = 1.750 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 min_temp = 0 max_temp = 300 full_steps_per_rotation = 200 gear_ratio = 50:10 max_power = 1.0 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 run_current = 0.85 stealthchop_threshold = 0 interpolate = true hold_current = 0.100 sense_resistor = 0.11 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 min_temp = 0 max_temp = 125 [heater_fan heatbreak_cooling_fan] pin = PC7 [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_z_velocity = 10 max_z_accel = 100 max_accel_to_decel = 6000 square_corner_velocity = 20 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [gcode_arcs] [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Config error Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/biqu/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/biqu/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/biqu/klipper/klippy/extras/heater_fan.py", line 42, in load_config_prefix return PrinterHeaterFan(config) File "/home/biqu/klipper/klippy/extras/heater_fan.py", line 18, in __init__ self.fan = fan.Fan(config, default_shutdown_speed=1.) File "/home/biqu/klipper/klippy/extras/fan.py", line 27, in __init__ self.mcu_fan = ppins.setup_pin('pwm', config.get('pin')) File "/home/biqu/klipper/klippy/pins.py", line 117, in setup_pin pin_params = self.lookup_pin(pin_desc, can_invert, can_pullup) File "/home/biqu/klipper/klippy/pins.py", line 106, in lookup_pin raise error("pin %s used multiple times in config" % (pin,)) pins.error: pin PC7 used multiple times in config webhooks client 281473186174912: New connection webhooks client 281473186174912: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} Attempting MCU 'mcu' reset webhooks client 281473186174912: Disconnected Restarting printer Start printer at Fri Dec 1 18:20:38 2023 (1701454838.3 264.1) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281473177240096: New connection webhooks client 281473177240096: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 798, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 803, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed Starting Klippy... Args: ['/home/biqu/klipper/klippy/klippy.py', '/home/biqu/printer_data/config/printer.cfg', '-I', '/home/biqu/printer_data/comms/klippy.serial', '-l', '/home/biqu/printer_data/logs/klippy.log', '-a', '/home/biqu/printer_data/comms/klippy.sock'] Git version: 'v0.12.0-12-g38221df8' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Building C code module c_helper.so Start printer at Fri Dec 1 18:24:24 2023 (1701455064.5 490.4) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281472819298064: New connection webhooks client 281472819298064: Client info {'program': 'Moonraker', 'version': 'v0.8.0-29-g80920dd'} webhooks client 281472819298064: Disconnected mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed webhooks client 281472820052464: New connection webhooks client 281472820052464: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed Attempting MCU 'mcu' reset webhooks client 281472820052464: Disconnected Restarting printer Start printer at Fri Dec 1 18:28:18 2023 (1701455298.6 724.5) Unable to open config file /home/biqu/printer_data/config/printer.cfg Traceback (most recent call last): File "/home/biqu/klipper/klippy/configfile.py", line 158, in _read_config_file f = open(filename, 'r') FileNotFoundError: [Errno 2] No such file or directory: '/home/biqu/printer_data/config/printer.cfg' Config error Traceback (most recent call last): File "/home/biqu/klipper/klippy/configfile.py", line 158, in _read_config_file f = open(filename, 'r') FileNotFoundError: [Errno 2] No such file or directory: '/home/biqu/printer_data/config/printer.cfg' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/biqu/klipper/klippy/klippy.py", line 134, in _read_config config = pconfig.read_main_config() File "/home/biqu/klipper/klippy/configfile.py", line 282, in read_main_config data = self._read_config_file(filename) File "/home/biqu/klipper/klippy/configfile.py", line 164, in _read_config_file raise error(msg) configparser.Error: Unable to open config file /home/biqu/printer_data/config/printer.cfg webhooks client 281472821398448: New connection webhooks client 281472821398448: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} webhooks client 281472821398448: Disconnected Restarting printer Start printer at Fri Dec 1 18:28:49 2023 (1701455329.7 755.5) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Starting Klippy... Args: ['/home/biqu/klipper/klippy/klippy.py', '/home/biqu/printer_data/config/printer.cfg', '-I', '/home/biqu/printer_data/comms/klippy.serial', '-l', '/home/biqu/printer_data/logs/klippy.log', '-a', '/home/biqu/printer_data/comms/klippy.sock'] Git version: 'v0.12.0-12-g38221df8' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Fri Dec 1 18:29:07 2023 (1701455347.2 20.8) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 [display] lcd_type = emulated_st7920 spi_software_miso_pin = PD8 spi_software_mosi_pin = PD6 spi_software_sclk_pin = PB9 en_pin = PB8 encoder_pins = ^PA10, ^PA9 click_pin = ^!PA15 [output_pin beeper] pin = PB5 [board_pins] aliases = EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PD6, EXP1_10=<5V> ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281473315296688: New connection webhooks client 281473315296688: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed Attempting MCU 'mcu' reset webhooks client 281473315296688: Disconnected Restarting printer Start printer at Fri Dec 1 18:43:01 2023 (1701456181.0 842.8) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281473316201808: New connection webhooks client 281473316201808: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed Attempting MCU 'mcu' reset webhooks client 281473316201808: Disconnected Restarting printer Start printer at Fri Dec 1 18:47:53 2023 (1701456473.8 1135.5) ===== Config file ===== [respond] [gcode_macro _OBICO_LAYER_CHANGE] description = Run a scan across the current print area variable_current_layer = -1 variable_first_layer_scan_enabled = True variable_first_layer_scan_stepover = 10 variable_first_layer_scan_feedrate = 600 variable_first_layer_scan_zhop = 4 variable_first_layer_scan_retract = 6.5 variable_first_layer_scanning = False gcode = SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=current_layer VALUE={params.CURRENT_LAYER|int} {% if first_layer_scan_enabled and params.CURRENT_LAYER|int == 2 %} SAVE_GCODE_STATE NAME=current_print_state {% set current_x = printer.toolhead.position.x %} {% set current_y = printer.toolhead.position.y %} {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} M83 G0 E-{first_layer_scan_retract} F900 {% endif %} SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=True G91 G0 Z{first_layer_scan_zhop} F1000 G90 {% if 'MINX' in params and 'MAXX' in params and 'MINY' in params and 'MAXY' in params %} {% set stepoverCount = ((params.MAXY|float - params.MINY|float) / first_layer_scan_stepover) | round(method='ceil') | int %} G0 X{params.MINX} Y{params.MINY} F{first_layer_scan_feedrate} {% for ystep in range(stepoverCount) %} G0 Y{params.MINY|float + first_layer_scan_stepover * ystep} {% if ystep % 2 == 0 %} G0 X{params.MAXX} F{first_layer_scan_feedrate} {% else %} G0 X{params.MINX} F{first_layer_scan_feedrate} {% endif %} {% endfor %} {% endif %} G0 X{current_x} Y{current_y} F{first_layer_scan_feedrate} G91 G0 Z-{first_layer_scan_zhop} F1000 {% if first_layer_scan_retract > 0 and printer[printer.toolhead.extruder].can_extrude %} G0 E{first_layer_scan_retract} F900 {% endif %} RESTORE_GCODE_STATE NAME=current_print_state SET_GCODE_VARIABLE MACRO=_OBICO_LAYER_CHANGE VARIABLE=first_layer_scanning VALUE=False {% endif %} [virtual_sdcard] path = ~/gcode_files 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 = TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} variable_restore_idle_timeout = 0 variable_idle_state = False gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" else True if not printer[client.runout_sensor].enabled else printer[client.runout_sensor].filament_detected %} {% set can_extrude = True if printer.toolhead.extruder == '' else printer[printer.toolhead.extruder].can_extrude %} {% set do_resume = False %} {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_temp.restore %} RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }' M109 S{last_extruder_temp.temp} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% endif %} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='{"\"%s\" not hot enough" % printer.toolhead.extruder}' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_arcs] [heater_fan controller_fan] pin = PB15 heater = heater_bed heater_temp = 45.0 [fan] pin = PC6 max_power = 1.0 cycle_time = 0.0001 hardware_pwm = false kick_start_time = 0.333 off_below = 0.05 [printer] kinematics = cartesian max_velocity = 250 max_accel = 6000 max_accel_to_decel = 6000 max_z_velocity = 10 max_z_accel = 100 square_corner_velocity = 20 [mcu] serial = /dev/serial/by-id/usb-STMicroelectronics_MARLIN_STM32G0B1RE_CDC_in_FS_Mode_205132455942-if00 [bltouch] sensor_pin = PC14 control_pin = PA1 pin_move_time = 0.675 stow_on_each_sample = false probe_with_touch_mode = true pin_up_touch_mode_reports_triggered = false speed = 100 lift_speed = 200 samples = 3 sample_retract_dist = 10 samples_tolerance_retries = 4 x_offset = -44 y_offset = -1.8 z_offset = 2.72 [bed_mesh] speed = 100 horizontal_move_z = 10 probe_count = 3,3 algorithm = bicubic mesh_min = 0,0 mesh_max = 330,330 [screws_tilt_adjust] screw1 = 58,50 screw1_name = front_left screw2 = 355,50 screw2_name = front_right screw3 = 58,315 screw3_name = back_left screw4 = 355,315 screw4_name = back_right [safe_z_home] speed = 100 z_hop = 10 z_hop_speed = 100 home_xy_position = 180,175 [heater_fan hotend_fan] pin = PC7 max_power = 1.0 fan_speed = 1.0 heater = extruder heater_temp = 50.0 [temperature_sensor raspberry_pi] sensor_type = temperature_host max_temp = 100 [temperature_sensor mcu_temp] sensor_type = temperature_mcu max_temp = 100 [heater_bed] heater_pin = PC9 sensor_type = EPCOS 100K B57560G104F sensor_pin = PC4 min_temp = 0 max_temp = 125 control = pid pid_kp = 151.998 pid_ki = 26.3887 pid_kd = 583.674 [stepper_x] step_pin = PB13 dir_pin = !PB12 enable_pin = !PB14 endstop_pin = tmc2209_stepper_x:virtual_endstop rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 360 position_endstop = 360 [stepper_y] step_pin = PB10 dir_pin = !PB2 enable_pin = !PB11 endstop_pin = tmc2209_stepper_y:virtual_endstop homing_retract_dist = 0 rotation_distance = 40 full_steps_per_rotation = 200 microsteps = 16 homing_speed = 50 position_min = 0 position_max = 365 position_endstop = 365 [stepper_z] step_pin = PB0 dir_pin = !PC5 enable_pin = !PB1 endstop_pin = probe:z_virtual_endstop rotation_distance = 4 full_steps_per_rotation = 200 microsteps = 16 position_min = -5 position_max = 400 [extruder] step_pin = PB3 dir_pin = !PB4 enable_pin = !PD1 microsteps = 16 full_steps_per_rotation = 200 rotation_distance = 22.6789511 gear_ratio = 50:10 nozzle_diameter = 0.600 filament_diameter = 1.750 max_power = 1.0 heater_pin = PC8 sensor_type = ATC Semitec 104NT-4-R025H42G sensor_pin = PA0 min_temp = 0 max_temp = 300 min_extrude_temp = 180 max_extrude_only_distance = 500 max_extrude_only_velocity = 150.0 max_extrude_only_accel = 4000.0 pressure_advance = 0.025 pressure_advance_smooth_time = 0.03 control = pid pid_kp = 27.8991 pid_ki = 2.373 pid_kd = 82.0023 [tmc2209 stepper_x] uart_pin = PC11 tx_pin = PC10 diag_pin = PC0 driver_sgthrs = 100 uart_address = 0 interpolate = true sense_resistor = 0.110 run_current = 0.45 stealthchop_threshold = 999999 [tmc2209 stepper_y] uart_pin = PC11 tx_pin = PC10 diag_pin = PC1 driver_sgthrs = 110 uart_address = 2 interpolate = true sense_resistor = 0.110 run_current = 0.57 stealthchop_threshold = 999999 [tmc2209 stepper_z] uart_pin = PC11 tx_pin = PC10 uart_address = 1 interpolate = true sense_resistor = 0.110 run_current = 0.48 stealthchop_threshold = 999999 [tmc2209 extruder] uart_pin = PC11 tx_pin = PC10 uart_address = 3 interpolate = true run_current = 0.85 hold_current = 0.100 sense_resistor = 0.11 stealthchop_threshold = 0 driver_tbl = 0 driver_hend = 6 driver_hstrt = 7 driver_toff = 4 [gcode_macro G32] gcode = G28 DELTA_CALIBRATE G1 X0 Y0 F4200 SAVE_CONFIG [gcode_macro G29] gcode = G28 BED_MESH_CALIBRATE G1 X0 Y0 Z15 F4200 SAVE_CONFIG [gcode_macro PRINT_START] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} {% set BED = params.BED|default(60)|float %} {% set EXTRUDER = params.EXTRUDER|default(205)|float %} SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED} M190 S{BED} SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 G21 M220 S100 M221 S100 M107 G90 G28 BED_MESH_CALIBRATE G1 X{min_x} Y{min_y} F5000 G1 Z5 F240 SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER} M109 S{EXTRUDER} PRIME_NOZZLE [gcode_macro PRINT_END] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} G1 X{min_x} Y{min_y} F5000 TURN_OFF_HEATERS M107 M84 X Y E [gcode_macro PRIME_NOZZLE] gcode = {% set intro_x = printer.configfile.config["stepper_x"]["position_max"]|float * 0.66 %} {% set min_x = printer.configfile.config["stepper_x"]["position_min"]|float * 0.1 %} {% set min_y = printer.configfile.config["stepper_y"]["position_min"]|float %} M83 G92 E0 G1 X{min_x} Y{min_y} Z0.3 F5000 G1 X{intro_x} Y{min_y} Z0.3 F1500.0 E15 G92 E0 G1 X{intro_x} Y{min_y + 0.3} Z0.3 F5000 G1 X{min_x / 2} Y{min_y + 0.3} Z0.3 F1500 E35 G91 E0 ======================= bed_mesh: bicubic interpolation with a probe_count of less than 4 points detected. Forcing lagrange interpolation. Configured Probe Count: 3, 3 Extruder max_extrude_ratio=0.598682 mcu 'mcu': Starting serial connect webhooks client 281473314542928: New connection webhooks client 281473314542928: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} mcu 'mcu': Timeout on connect mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/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 error during connect Traceback (most recent call last): File "/home/biqu/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/biqu/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/biqu/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/biqu/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/biqu/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/biqu/klipper/klippy/../.config(3117): Fri Dec 1 17:52:41 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="stm32g0b1xx" CONFIG_CLOCK_FREQ=64000000 CONFIG_USBSERIAL=y CONFIG_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000 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 is not set # 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=y # 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_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # 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=8000000 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_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set # CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set # CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set # CONFIG_STM32_MMENU_CANBUS_PC2_PC3 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_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/biqu/klipper/klippy/../out/klipper.dict(7746): Fri Dec 1 17:53:20 2023 Last MCU build version: v0.11.0-127-g4b1536d6 Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_PA9_PA10=PA9,PA10 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c2_PB13_PB14=PB13,PB14 BUS_PINS_i2c3_PB3_PB4=PB3,PB4 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/biqu/klipper/klippy/../out/klipper.elf(1029772): Fri Dec 1 17:53:35 2023 mcu 'mcu': Wait for identify_response Traceback (most recent call last): File "/home/biqu/klipper/klippy/serialhdl.py", line 68, in _get_identify_data params = self.send_with_response(msg, 'identify_response') File "/home/biqu/klipper/klippy/serialhdl.py", line 261, in send_with_response return src.get_response([cmd], self.default_cmd_queue) File "/home/biqu/klipper/klippy/serialhdl.py", line 318, in get_response self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock, File "/home/biqu/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack self._error("Serial connection closed") File "/home/biqu/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'mcu': Serial connection closed