Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' webhooks client 548112744112: {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} =============== Log rollover at Thu Nov 23 02:07:54 2023 =============== webhooks client 548112744112: New connection webhooks client 548112744112: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} webhooks client 548112744112: Disconnected Restarting printer Start printer at Thu Nov 23 02:22:57 2023 (1700724177.8 940.0) Config error Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/klipperpi/klipper/klippy/klippy.py", line 134, in _read_config config = pconfig.read_main_config() File "/home/klipperpi/klipper/klippy/configfile.py", line 281, in read_main_config regular_config = self._build_config_wrapper(regular_data, filename) File "/home/klipperpi/klipper/klippy/configfile.py", line 268, in _build_config_wrapper self._parse_config(data, filename, fileconfig, set()) File "/home/klipperpi/klipper/klippy/configfile.py", line 256, in _parse_config self._resolve_include(filename, include_spec, fileconfig, File "/home/klipperpi/klipper/klippy/configfile.py", line 229, in _resolve_include raise error("Include file '%s' does not exist" % (include_glob,)) configparser.Error: Include file '/home/klipperpi/printer_data/config/sample-bigtreetech-ebb-canbus v1.2.cfg' does not exist webhooks client 548112832784: New connection webhooks client 548112832784: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} webhooks client 548112832784: Disconnected Restarting printer Start printer at Thu Nov 23 02:23:21 2023 (1700724201.3 963.6) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' webhooks client 548105032080: New connection webhooks client 548105032080: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Unable to issue reset command on MCU 'mcu' Attempting MCU 'EBBCan' reset Unhandled exception during post run Traceback (most recent call last): File "/home/klipperpi/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_rp2040_4550357128153CF8-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 951, in _firmware_restart self._restart_arduino() File "/home/klipperpi/klipper/klippy/mcu.py", line 911, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/klipperpi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/klipperpi/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_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Restarting printer Start printer at Thu Nov 23 02:23:36 2023 (1700724216.6 978.9) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' webhooks client 548104049280: New connection webhooks client 548104049280: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 02:24:59 2023 (1700724299.2 22.9) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' webhooks client 547491349936: New connection webhooks client 547491349936: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/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/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 02:47:24 2023 (1700725644.4 22.1) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' webhooks client 548366079408: New connection webhooks client 548366079408: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Unable to issue reset command on MCU 'mcu' Attempting MCU 'EBBCan' reset Unhandled exception during post run Traceback (most recent call last): File "/home/klipperpi/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_rp2040_4550357128153CF8-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 951, in _firmware_restart self._restart_arduino() File "/home/klipperpi/klipper/klippy/mcu.py", line 911, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/klipperpi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/klipperpi/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_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Restarting printer Start printer at Thu Nov 23 02:47:53 2023 (1700725673.0 52.1) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' webhooks client 548365742432: New connection webhooks client 548365742432: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/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/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Unable to issue reset command on MCU 'mcu' Attempting MCU 'EBBCan' reset Unhandled exception during post run Traceback (most recent call last): File "/home/klipperpi/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_rp2040_4550357128153CF8-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 951, in _firmware_restart self._restart_arduino() File "/home/klipperpi/klipper/klippy/mcu.py", line 911, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/klipperpi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/klipperpi/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_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Restarting printer Start printer at Thu Nov 23 02:51:49 2023 (1700725909.0 288.1) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' webhooks client 548365254512: New connection webhooks client 548365254512: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/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/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Unable to issue reset command on MCU 'mcu' Attempting MCU 'EBBCan' reset webhooks client 548365254512: Disconnected Restarting printer Start printer at Thu Nov 23 02:54:02 2023 (1700726042.3 421.4) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548365270992: New connection webhooks client 548365270992: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 02:54:43 2023 (1700726083.5 21.2) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548217266288: New connection webhooks client 548217266288: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Attempting MCU 'mcu' reset command b'Got EOF when reading from device' Attempting MCU 'EBBCan' reset Unhandled exception during post run Traceback (most recent call last): File "/home/klipperpi/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_rp2040_4550357128153CF8-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 951, in _firmware_restart self._restart_arduino() File "/home/klipperpi/klipper/klippy/mcu.py", line 911, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/klipperpi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/klipperpi/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_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Restarting printer Start printer at Thu Nov 23 03:04:39 2023 (1700726679.5 618.8) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548215364912: New connection webhooks client 548215364912: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable b'Got EOF when reading from device' mcu 'EBBCan': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'EBBCan': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' mcu 'EBBCan': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Loaded MCU 'EBBCan' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'EBBCan' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu_temperature 'mcu' nominal base=437.226612 slope=-1917.489831 webhooks client 548215364912: Disconnected Restarting printer Start printer at Thu Nov 23 03:06:08 2023 (1700726768.7 707.9) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548214522208: New connection webhooks client 548214522208: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548214522208: Disconnected Restarting printer Start printer at Thu Nov 23 03:06:30 2023 (1700726790.9 730.1) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548214522928: New connection webhooks client 548214522928: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 02:54:24 2023 (1700726064.3 20.1) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 547862163168: New connection webhooks client 547862163168: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 03:17:18 2023 (1700727438.2 22.1) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548134922272: New connection webhooks client 548134922272: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548134922272: Disconnected Restarting printer Start printer at Thu Nov 23 03:17:28 2023 (1700727449.0 32.8) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548134522544: New connection webhooks client 548134522544: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 05:17:15 2023 (1700734635.8 21.4) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 547536113376: New connection webhooks client 547536113376: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Attempting MCU 'mcu' reset command b'Got EOF when reading from device' Attempting MCU 'EBBCan' reset Unhandled exception during post run Traceback (most recent call last): File "/home/klipperpi/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_rp2040_4550357128153CF8-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 951, in _firmware_restart self._restart_arduino() File "/home/klipperpi/klipper/klippy/mcu.py", line 911, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/klipperpi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/klipperpi/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_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Restarting printer Start printer at Thu Nov 23 13:52:20 2023 (1700765540.6 1461.3) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] canbus_uuid = 0e0d81e4210c [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 547517989264: New connection webhooks client 547517989264: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting CAN connect mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 13:53:11 2023 (1700765592.0 21.7) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] canbus_uuid = 0e0d81e4210c [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting CAN connect mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol webhooks client 548225434432: New connection webhooks client 548225434432: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 794, in _mcu_identify self._serial.connect_canbus(self._serialport, nodeid, File "/home/klipperpi/klipper/klippy/serialhdl.py", line 133, in connect_canbus self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 13:52:52 2023 (1700765572.1 19.5) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] canbus_uuid = 0e0d81e4210c [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting CAN connect mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol webhooks client 547802538816: New connection webhooks client 547802538816: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol mcu 'EBBCan': Unable to open CAN port: [Errno 97] Address family not supported by protocol MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 794, in _mcu_identify self._serial.connect_canbus(self._serialport, nodeid, File "/home/klipperpi/klipper/klippy/serialhdl.py", line 133, in connect_canbus self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Attempting MCU 'mcu' reset command b'Got EOF when reading from device' Unable to issue reset command on MCU 'EBBCan' webhooks client 547802538816: Disconnected Restarting printer Start printer at Thu Nov 23 14:10:17 2023 (1700766618.0 221.7) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548038048256: New connection webhooks client 548038048256: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d' Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper CPU: 4 core ? Python: '3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110]' Start printer at Thu Nov 23 14:17:16 2023 (1700767036.2 19.6) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548027050544: New connection webhooks client 548027050544: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Attempting MCU 'mcu' reset command b'Got EOF when reading from device' Attempting MCU 'EBBCan' reset Unhandled exception during post run Traceback (most recent call last): File "/home/klipperpi/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_rp2040_4550357128153CF8-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 951, in _firmware_restart self._restart_arduino() File "/home/klipperpi/klipper/klippy/mcu.py", line 911, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/klipperpi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/klipperpi/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_rp2040_4550357128153CF8-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00' Restarting printer Start printer at Thu Nov 23 14:52:19 2023 (1700769139.2 1786.6) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548017321296: New connection webhooks client 548017321296: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548017321296: Disconnected Restarting printer Start printer at Thu Nov 23 14:52:38 2023 (1700769158.8 1806.2) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 548017349008: New connection webhooks client 548017349008: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.12.0-10-gea2f6bc0' 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 Thu Nov 23 15:20:24 2023 (1700770824.3 3471.7) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro RESUME'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro RESUME'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 {client.user_cancel_macro|default("")} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set 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} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect webhooks client 547613084400: New connection webhooks client 547613084400: Client info {'program': 'Moonraker', 'version': 'v0.8.0-186-g2641fc5'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 547613084400: Disconnected mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 547613013472: New connection webhooks client 547613013472: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3428): Mon Nov 6 01:10:20 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=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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_SERIAL_USART5 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 is not set CONFIG_USB_SERIAL_NUMBER="ebb" # # USB ids # # end of USB ids CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANBUS_FREQUENCY=1000000 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8137): Mon Nov 6 01:10:55 2023 Last MCU build version: v0.11.0-304-gf7567a0d 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/klipperpi/klipper/klippy/../out/klipper.elf(1130920): Mon Nov 6 01:11:07 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.12.0-10-gea2f6bc0' 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 Thu Nov 23 15:17:16 2023 (1700770636.8 20.4) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro RESUME'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro RESUME'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 {client.user_cancel_macro|default("")} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set 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} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect mcu 'mcu': got {'count': 384, 'sum': 38871, 'sumsq': 38280, '#name': 'stats', '#sent_time': 23.5912465, '#receive_time': 23.613955208} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548371837808: New connection webhooks client 548371837808: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3398): Thu Nov 23 15:26:40 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_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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=0 # CONFIG_STM32_FLASH_START_2000 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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 is not set # 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_SERIAL_USART5 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=y # 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_STM32_CANBUS_PB0_PB1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=250000 CONFIG_CANBUS_FILTER=y 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8290): Thu Nov 23 15:27:23 2023 Last MCU build version: v0.12.0-10-gea2f6bc0 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 CANBUS_FREQUENCY=250000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PB0,PB1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/klipperpi/klipper/klippy/../out/klipper.elf(1134984): Thu Nov 23 15:27:36 2023 Starting Klippy... Args: ['/home/klipperpi/klipper/klippy/klippy.py', '/home/klipperpi/printer_data/config/printer.cfg', '-I', '/home/klipperpi/printer_data/comms/klippy.serial', '-l', '/home/klipperpi/printer_data/logs/klippy.log', '-a', '/home/klipperpi/printer_data/comms/klippy.sock'] Git version: 'v0.12.0-10-gea2f6bc0' 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 Thu Nov 23 16:00:41 2023 (1700773241.7 22.4) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro RESUME'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro RESUME'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 {client.user_cancel_macro|default("")} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = {% set 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} [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 [adxl345] cs_pin = EBBCan: PB12 spi_software_sclk_pin = EBBCan: PB10 spi_software_mosi_pin = EBBCan: PB11 spi_software_miso_pin = EBBCan: PB2 axes_map = x,y,z [extruder] step_pin = gpio14 dir_pin = gpio13 enable_pin = !gpio15 microsteps = 32 rotation_distance = 22.23 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = gpio23 sensor_type = Generic 3950 sensor_pin = gpio27 control = pid pid_kp = 28.182 pid_ki = 1.978 pid_kd = 100.397 min_temp = 0 max_temp = 270 gear_ratio = 50:10 min_extrude_temp = 170 max_extrude_only_distance = 150 max_extrude_cross_section = 0.8 pressure_advance = 0.0 pressure_advance_smooth_time = 0.040 [tmc2209 extruder] uart_pin = gpio9 run_current = 0.6 stealthchop_threshold = 0 tx_pin = gpio8 uart_address = 3 interpolate = False sense_resistor = 0.110 [fan] pin = gpio17 max_power = 1.0 kick_start_time = 0.5 off_below = 0.13 cycle_time = 0.010 [heater_fan hotend_fan] pin = gpio18 heater = extruder heater_temp = 50.0 max_power = 1.0 kick_start_time = 0.5 [mcu] serial = /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00 restart_method = command [temperature_sensor mcu_temp] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [temperature_sensor raspberry_pi] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = corexy max_velocity = 350 max_accel = 3000 max_z_velocity = 50 max_z_accel = 350 square_corner_velocity = 10.0 [stepper_x] step_pin = gpio11 dir_pin = gpio10 enable_pin = !gpio12 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_x:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_x] uart_pin = gpio9 tx_pin = gpio8 uart_address = 0 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio4 driver_sgthrs = 65 [stepper_y] step_pin = gpio6 dir_pin = gpio5 enable_pin = !gpio7 rotation_distance = 40 microsteps = 32 full_steps_per_rotation = 200 endstop_pin = tmc2209_stepper_y:virtual_endstop position_endstop = 120 position_max = 120 homing_speed = 20 homing_retract_dist = 0 homing_positive_dir = true [tmc2209 stepper_y] uart_pin = gpio9 tx_pin = gpio8 uart_address = 2 interpolate = False run_current = 0.7 sense_resistor = 0.110 stealthchop_threshold = 0 diag_pin = ^gpio3 driver_sgthrs = 55 [stepper_z] step_pin = gpio19 dir_pin = !gpio28 enable_pin = !gpio2 rotation_distance = 8 microsteps = 32 endstop_pin = ^!gpio25 position_endstop = 120 position_max = 120 position_min = -1.5 homing_speed = 20 second_homing_speed = 3.0 homing_retract_dist = 3.0 [tmc2209 stepper_z] uart_pin = gpio9 tx_pin = gpio8 uart_address = 1 interpolate = False run_current = 0.37 sense_resistor = 0.110 stealthchop_threshold = 0 [heater_bed] heater_pin = gpio21 sensor_type = Generic 3950 sensor_pin = gpio26 smooth_time = 3.0 min_temp = 0 max_temp = 120 control = pid pid_kp = 68.453 pid_ki = 2.749 pid_kd = 426.122 [controller_fan MCU_fan] pin = gpio20 max_power = 1.0 kick_start_time = 0.5 heater = extruder [idle_timeout] timeout = 1800 [homing_override] axes = xyz set_position_z = 0 gcode = G90 G0 Z5 F600 {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %} {% if home_all or 'X' in params %} _HOME_X {% endif %} {% if home_all or 'Y' in params %} _HOME_Y {% endif %} {% if home_all or 'Z' in params %} _HOME_Z {% endif %} [bed_screws] screw1 = 60,5 screw1_name = front screw screw2 = 5,115 screw2_name = back left screw3 = 115,115 screw3_name = back right [neopixel board_rgb] pin = gpio24 chain_count = 1 color_order = GRB initial_red = 0.0 initial_green = 0.1 initial_blue = 0.0 [gcode_macro PRINT_START] gcode = G28 G90 G1 Z20 F3000 [gcode_macro PRINT_END] gcode = M400 G92 E0 G1 E-4.0 F3600 G91 {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %} {% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %} {% if printer.toolhead.position.x < (max_x - 20) %} {% set x_safe = 20.0 %} {% else %} {% set x_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.y < (max_y - 20) %} {% set y_safe = 20.0 %} {% else %} {% set y_safe = -20.0 %} {% endif %} {% if printer.toolhead.position.z < (max_z - 2) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - printer.toolhead.position.z %} {% endif %} G0 Z{z_safe} F3600 G0 X{x_safe} Y{y_safe} F20000 TURN_OFF_HEATERS M107 G90 G0 X60 Y{max_y-10} F3600 [gcode_macro LOAD_FILAMENT] gcode = M83 G1 E30 F300 G1 E15 F150 M82 [gcode_macro UNLOAD_FILAMENT] gcode = M83 G1 E10 F300 G1 E-40 F1800 M82 [gcode_macro _HOME_X] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_Y} G28 X G91 G1 X-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Y] gcode = {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %} {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %} {% set HOME_CURRENT = 0.7 %} SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT * RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT * RUN_CURRENT_X} G28 Y G91 G1 Y-10 F1200 G4 P1000 G90 SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X} SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y} [gcode_macro _HOME_Z] gcode = G90 G28 Z G1 Z30 ======================= Extruder max_extrude_ratio=0.332601 mcu 'mcu': Starting serial connect Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.35.2-2+14+b2) 2.35.2) MCU 'mcu' config: ADC_MAX=4095 BUS_PINS_i2c0a=gpio0,gpio1 BUS_PINS_i2c0b=gpio4,gpio5 BUS_PINS_i2c0c=gpio8,gpio9 BUS_PINS_i2c0d=gpio12,gpio13 BUS_PINS_i2c0e=gpio16,gpio17 BUS_PINS_i2c0f=gpio20,gpio21 BUS_PINS_i2c0g=gpio24,gpio25 BUS_PINS_i2c0h=gpio28,gpio29 BUS_PINS_i2c1a=gpio2,gpio3 BUS_PINS_i2c1b=gpio6,gpio7 BUS_PINS_i2c1c=gpio10,gpio11 BUS_PINS_i2c1d=gpio14,gpio15 BUS_PINS_i2c1e=gpio18,gpio19 BUS_PINS_i2c1f=gpio22,gpio23 BUS_PINS_i2c1g=gpio26,gpio27 BUS_PINS_spi0a=gpio0,gpio3,gpio2 BUS_PINS_spi0b=gpio4,gpio7,gpio6 BUS_PINS_spi0c=gpio16,gpio19,gpio18 BUS_PINS_spi0d=gpio20,gpio23,gpio22 BUS_PINS_spi1a=gpio8,gpio11,gpio10 BUS_PINS_spi1b=gpio12,gpio15,gpio14 BUS_PINS_spi1c=gpio24,gpio27,gpio26 CLOCK_FREQ=12000000 MCU=rp2040 PWM_MAX=255 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 mcu 'EBBCan': Starting serial connect mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable webhooks client 548342193888: New connection webhooks client 548342193888: Client info {'program': 'Moonraker', 'version': 'v0.8.0-204-gfb15b2a'} mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable mcu 'EBBCan': Unable to open serial port: [Errno 11] Could not exclusively lock port /dev/serial/by-id/usb-Klipper_rp2040_4550357128153CF8-if00: [Errno 11] Resource temporarily unavailable MCU error during connect Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/mcu.py", line 800, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/klipperpi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/klipperpi/klipper/klippy/serialhdl.py", line 61, in _error raise error(self.warn_prefix + (msg % params)) serialhdl.error: mcu 'EBBCan': Unable to connect During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/klipperpi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/klipperpi/klipper/klippy/mcu.py", line 805, in _mcu_identify raise error(str(e)) mcu.error: mcu 'EBBCan': Unable to connect Build file /home/klipperpi/klipper/klippy/../.config(3398): Thu Nov 23 15:26:40 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_FLASH_SIZE=0x20000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x24000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8000000 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_STM32F765 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_N32G452 is not set # CONFIG_MACH_N32G455 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=0 # CONFIG_STM32_FLASH_START_2000 is not set CONFIG_STM32_FLASH_START_0000=y 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_24M 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 is not set # 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_SERIAL_USART5 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=y # 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_STM32_CANBUS_PB0_PB1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_WANT_GPIO_BITBANGING=y CONFIG_WANT_DISPLAYS=y CONFIG_WANT_SENSORS=y CONFIG_WANT_LIS2DW=y CONFIG_WANT_SOFTWARE_I2C=y CONFIG_WANT_SOFTWARE_SPI=y CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=250000 CONFIG_CANBUS_FILTER=y 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_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/klipperpi/klipper/klippy/../out/klipper.dict(8290): Thu Nov 23 15:27:23 2023 Last MCU build version: v0.12.0-10-gea2f6bc0 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 CANBUS_FREQUENCY=250000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PB0,PB1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/klipperpi/klipper/klippy/../out/klipper.elf(1134984): Thu Nov 23 15:27:36 2023 b'Got EOF when reading from device'