Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-I', '/home/pi/printer_data/comms/klippy.serial', '-l', '/home/pi/printer_data/logs/klippy.log', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-110-gaca0c71a' CPU: 4 core ARMv7 Processor rev 3 (v7l) Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Building C code module c_helper.so Start printer at Thu Feb 16 19:17:59 2023 (1676575079.9 489.1) ===== Config file ===== [mcu] serial = /dev/serial/by-id/ [printer] kinematics = none max_velocity = 1000 max_accel = 1000 ======================= mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' webhooks client 3041497224: New connection webhooks client 3041497224: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect No build file /home/pi/klipper/klippy/../.config No build file /home/pi/klipper/klippy/../out/klipper.dict No build file /home/pi/klipper/klippy/../out/klipper.elf webhooks client 3041497224: Disconnected webhooks client 3041735704: New connection webhooks client 3041735704: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-I', '/home/pi/printer_data/comms/klippy.serial', '-l', '/home/pi/printer_data/logs/klippy.log', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-110-gaca0c71a' CPU: 4 core ARMv7 Processor rev 3 (v7l) Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Thu Feb 16 21:03:02 2023 (1676581382.6 10.1) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/serial/by-id/ [printer] kinematics = none max_velocity = 1000 max_accel = 1000 ======================= mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' webhooks client 3040106672: New connection webhooks client 3040106672: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/: [Errno 2] No such file or directory: '/dev/serial/by-id/' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 20:43:33 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 20:44:03 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 20:44:08 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/: [Errno 2] No such file or directory: '/dev/serial/by-id/' Restarting printer Start printer at Thu Feb 16 21:08:55 2023 (1676581735.3 350.9) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancels the printer rename_existing = CANCEL_PRINT_BASE gcode = END_PRINT TURN_OFF_HEATERS CLEAR_PAUSE CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pauses the printer rename_existing = PAUSE_BASE gcode = SAVE_GCODE_STATE NAME=PAUSE_state {% set E = printer["gcode_macro PAUSE"].extrude|float %} {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} PAUSE_BASE G91 {% if printer.extruder.can_extrude|lower == 'true' %} G1 E-{E} F2100 {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} {% if "xyz" in printer.toolhead.homed_axes %} G1 Z{z_safe} F900 _PARK LOCATION={printer["gcode_macro RatOS"].pause_print_park_in} X={printer["gcode_macro RatOS"].pause_print_park_x} {% else %} {action_respond_info("Printer not homed")} {% endif %} variable_extrude = 1.5 [gcode_macro RESUME] description = Resumes the print if the printer is paused. rename_existing = RESUME_BASE gcode = {% set E = printer["gcode_macro PAUSE"].extrude|float %} {% if printer.extruder.can_extrude|lower == 'true' %} G91 G1 E{E} F2100 G90 {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1 RESUME_BASE [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [adxl345] spi_bus = spi3 cs_pin = adxl345_cs_pin [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [fan] pin = fan_part_cooling_pin shutdown_speed = 1.0 [heater_fan toolhead_cooling_fan] pin = fan_toolhead_cooling_pin fan_speed = 1 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [extruder] step_pin = e_step_pin dir_pin = e_dir_pin enable_pin = !e_enable_pin microsteps = 64 rotation_distance = 4.68 full_steps_per_rotation = 200 filament_diameter = 1.750 max_extrude_only_velocity = 60 max_extrude_only_distance = 200 nozzle_diameter = 0.4 heater_pin = e_heater_pin sensor_type = ATC Semitec 104GT-2 sensor_pin = e_sensor_pin min_extrude_temp = 170 min_temp = 0 max_temp = 285 pressure_advance = 0.05 control = pid pid_kp = 28.413 pid_ki = 1.334 pid_kd = 151.300 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 extruder] interpolate = False stealthchop_threshold = 0 run_current = 0.707 uart_pin = e_uart_pin driver_tbl = 1 driver_toff = 3 driver_hend = 9 driver_hstrt = 7 [probe] pin = ^!probe_pin x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [gcode_macro ECHO_RATOS_VARS] description = Echo RatOS variables to the console. gcode = {% for var, value in printer["gcode_macro RatOS"].items() %} {action_respond_info(var ~ ": " ~ value)} {% endfor %} [gcode_macro RatOS] description = RatOS variable storage macro, will echo variables to the console when run. variable_relative_extrusion = False variable_preheat_extruder = True variable_calibrate_bed_mesh = True variable_nozzle_priming = "primeline" variable_start_print_park_in = "back" variable_start_print_park_z_height = 50 variable_end_print_park_in = "back" variable_pause_print_park_in = "back" variable_macro_travel_speed = 300 gcode = ECHO_RATOS_VARS [gcode_macro MAYBE_HOME] description = Only home unhomed axis variable_is_kinematic_position_overriden = False gcode = {% if printer["gcode_macro MAYBE_HOME"].is_kinematic_position_overriden|lower == 'true' %} RESPOND MSG="SET_CENTER_KINEMATIC_POSITION has been abused. Homing all axes. Please refrain from using SET_CENTER_KINEMATIC_POSITION outside of debugging purposes." G28 SET_GCODE_VARIABLE MACRO=MAYBE_HOME VARIABLE=is_kinematic_position_overriden VALUE=False {% else %} {% set axes = '' %} {% set isHomed = true %} {% set axesToHome = '' %} {% if params.X is defined %} {% set axes = axes ~ 'X ' %} {% if 'x' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'X ' %} {% endif %} {% endif %} {% if params.Y is defined %} {% set axes = axes ~ 'Y ' %} {% if 'y' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Y ' %} {% endif %} {% endif %} {% if params.Z is defined %} {% set axes = axes ~ 'Z ' %} {% if 'z' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Z ' %} {% endif %} {% endif %} {% if params.X is not defined and params.Y is not defined and params.Z is not defined %} {% set axes = '' %} {% if 'x' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'X ' %} {% endif %} {% if 'y' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Y ' %} {% endif %} {% if 'z' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Z ' %} {% endif %} {% endif %} {% if isHomed is false %} M117 Homing {axesToHome} RESPOND MSG="Homing {axesToHome}" G28 {axesToHome} {% else %} RESPOND MSG="All requested axes already homed, skipping.." {% endif %} {% endif %} [gcode_macro PRIME_LINE] description = Prints a primeline, used internally, if configured, as part of the START_PRINT macro. gcode = SAVE_GCODE_STATE NAME=prime_line_state {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} G90 M82 M117 Priming nozzle with prime line.. RESPOND MSG="Priming nozzle with prime line.." G1 Z5 F3000 G1 X{printer.toolhead.axis_minimum.x + 5} Y{printer.toolhead.axis_minimum.y + 10} F{speed} G1 Z0.3 F3000 G92 E0 G1 Y{printer.toolhead.axis_minimum.y + 80} E16 F1200 G1 Y{printer.toolhead.axis_minimum.y + 100} F{speed} RESTORE_GCODE_STATE NAME=prime_line_state [gcode_macro PRIME_BLOB] description = Prints a primeblob, used internally, if configured, as part of the START_PRINT macro. Slower than PRIME_LINE but much more effective. gcode = SAVE_GCODE_STATE NAME=prime_blob_state M117 Priming nozzle with prime blob.. RESPOND MSG="Priming nozzle with prime blob.." {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} G90 M83 G1 Z5 F3000 G1 X{printer.toolhead.axis_minimum.x + 5} Y{printer.toolhead.axis_minimum.y + 10} Z0.5 F{speed} G1 F60 E20 M106 S102 G1 Z5 F100 E5 G1 F200 Y{printer.toolhead.axis_minimum.y + 25} E1 G1 F200 Y{printer.toolhead.axis_minimum.y + 30} Z3.8 E0.5 G1 F200 Y{printer.toolhead.axis_minimum.y + 35} Z2.6 E0.5 G1 F200 Y{printer.toolhead.axis_minimum.y + 40} Z1.4 E0.5 G1 F200 Y{printer.toolhead.axis_minimum.y + 45} Z0.2 E0.5 M106 S0 G1 F200 Y{printer.toolhead.axis_minimum.y +50} Z0.2 E0.6 G1 F{speed} Y{printer.toolhead.axis_minimum.y + 100} RESTORE_GCODE_STATE NAME=prime_blob_state [gcode_macro _PARK] gcode = {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} {% if params.X != '' %} {% if params.X|float >= printer.toolhead.axis_minimum.x + 5 and params.X|float <= printer.toolhead.axis_maximum.x - 5 %} {% set safe_x = params.X|float %} {% else %} {action_respond_info('The requested X co-ordinate is outside the defined axis bounds - using defaults')} {% set safe_x = printer.toolhead.axis_maximum.x / 2 %} {% endif %} {% else %} {% set safe_x = printer.toolhead.axis_maximum.x / 2 %} {% endif %} {% if params.LOCATION|default('back')|lower == 'back' %} {% set y = printer.toolhead.axis_maximum.y - 5 %} {% elif params.LOCATION|lower == 'front' %} {% set y = printer.toolhead.axis_minimum.y + 5 %} {% elif params.LOCATION|lower == 'center' %} {% set y = printer.toolhead.axis_maximum.y / 2 %} {% endif %} G90 G0 X{safe_x} Y{y} F{speed} [gcode_macro M600] description = Executes a color change by pausing the printer an unloading the filament. gcode = PAUSE UNLOAD_FILAMENT M117 Please load new filament and resume RESPOND MSG="Please load new filament and resume" [gcode_macro UNLOAD_FILAMENT] description = Unloads the filament. Note: be careful with PETG, make sure you inspect the tip of your filament before reloading to avoid jams. gcode = SAVE_GCODE_STATE NAME=unload_state G91 {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} M117 Heating... M104 S{params.TEMP|default(220, true)} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)} {% endif %} M117 Unloading filament... G0 E-5 F3600 G4 P3000 G0 E5 F3600 G0 E-15 F3600 G0 E-130 F300 M117 Filament unloaded! RESPOND MSG="Filament unloaded! Please inspect the tip of the filament before reloading." RESTORE_GCODE_STATE NAME=unload_state [gcode_macro LOAD_FILAMENT] description = Loads new filament. Note: be careful with PETG, make sure you inspect the tip of your filament before loading to avoid jams. gcode = SAVE_GCODE_STATE NAME=load_state G91 {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} M117 Heating... M104 S{params.TEMP|default(220, true)} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)} {% endif %} M117 Loading filament... G0 E100 F600 G4 P1000 G0 E40 F100 M400e M117 Filament loaded! RESPOND MSG="Filament loaded!" RESTORE_GCODE_STATE NAME=load_state [gcode_macro SET_CENTER_KINEMATIC_POSITION] description = FOR DEBUGGING PURPOSES ONLY. Sets the internal printer kinematic state to the center of all axes regardless of actual physical position. gcode = RESPOND MSG="WARNING: ONLY USE SET_CENTER_KINEMATIC_POSITION FOR DEBUGGING PURPOSES. YOU'RE OVERRIDING THE INTERNAL POSITIONING STATE OF THE PRINTER. PROCEED WITH CAUTION AND DO A PROPER G28 WHEN DONE." SET_GCODE_VARIABLE MACRO=MAYBE_HOME VARIABLE=is_kinematic_position_overriden VALUE=True SET_KINEMATIC_POSITION X={printer.toolhead.axis_maximum.x / 2} Y={printer.toolhead.axis_maximum.y / 2} Z={printer.toolhead.axis_maximum.z / 2} [gcode_macro START_PRINT] description = Start print procedure, use this in your Slicer. gcode = CLEAR_PAUSE SAVE_GCODE_STATE NAME=start_print_state G21 G90 M82 MAYBE_HOME M117 Heating bed... RESPOND MSG="Heating bed..." M190 S{params.BED_TEMP|default(printer.heater_bed.target, true) } _START_PRINT_AFTER_HEATING_BED _START_PRINT_BED_MESH M104 S{params.EXTRUDER_TEMP|default(printer.extruder.target, true) } _START_PRINT_PARK M117 Heating Extruder... RESPOND MSG="Heating Extruder..." M109 S{params.EXTRUDER_TEMP|default(printer.extruder.target, true) } _START_PRINT_AFTER_HEATING_EXTRUDER M117 Printing... RESPOND MSG="Printing..." RESTORE_GCODE_STATE NAME=start_print_state {% if printer["gcode_macro RatOS"].relative_extrusion|lower == 'true' %} M83 {% else %} M82 {% endif %} G92 E0 [gcode_macro _START_PRINT_AFTER_HEATING_BED] gcode = {% if printer["gcode_macro RatOS"].preheat_extruder|lower == 'true' %} M117 Pre-heating extruder... M104 S150 TEMPERATURE_WAIT SENSOR=extruder MINIMUM=150 {% endif %} M117 Adjusting for tilt... Z_TILT_ADJUST M117 Rehoming after tilt adjustment... G28 Z [gcode_macro _START_PRINT_BED_MESH] gcode = {% if printer["gcode_macro RatOS"].calibrate_bed_mesh|lower == 'true' %} BED_MESH_CALIBRATE PROFILE=ratos {% endif %} BED_MESH_PROFILE LOAD=ratos [gcode_macro _START_PRINT_PARK] gcode = {% set z = printer["gcode_macro RatOS"].start_print_park_z_height|float %} _PARK LOCATION={printer["gcode_macro RatOS"].start_print_park_in} X={printer["gcode_macro RatOS"].start_print_park_x} G0 Z{z} F6000 [gcode_macro _START_PRINT_AFTER_HEATING_EXTRUDER] gcode = {% if printer["gcode_macro RatOS"].nozzle_priming|lower == 'primeline' %} PRIME_LINE {% endif %} {% if printer["gcode_macro RatOS"].nozzle_priming|lower == 'primeblob' %} PRIME_BLOB {% endif %} {% if printer["gcode_macro RatOS"].skew_profile is defined %} SKEW_PROFILE LOAD={printer["gcode_macro RatOS"].skew_profile} {% endif %} [gcode_macro END_PRINT] description = End print procedure, use this in your Slicer. gcode = SAVE_GCODE_STATE NAME=end_print_state _END_PRINT_BEFORE_HEATERS_OFF TURN_OFF_HEATERS _END_PRINT_AFTER_HEATERS_OFF _END_PRINT_PARK {% if printer["gcode_macro RatOS"].skew_profile is defined %} SET_SKEW CLEAR=1 {% endif %} M84 M107 M117 Done :) RESPOND MSG="Done :)" RESTORE_GCODE_STATE NAME=end_print_state [gcode_macro _END_PRINT_BEFORE_HEATERS_OFF] gcode = RESPOND MSG="Cleaning up..." [gcode_macro _END_PRINT_AFTER_HEATERS_OFF] gcode = {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} G91 G1 E-2 F3600 G0 Z{z_safe} F3600 G1 E-2 F3600 [gcode_macro _END_PRINT_PARK] gcode = _PARK LOCATION={printer["gcode_macro RatOS"].end_print_park_in} X={printer["gcode_macro RatOS"].end_print_park_x} [gcode_shell_command generate_shaper_graph_x] command = /home/pi/klipper_config/config/scripts/generate-shaper-graph-x.sh timeout = 60. verbose = True [gcode_shell_command generate_shaper_graph_y] command = /home/pi/klipper_config/config/scripts/generate-shaper-graph-y.sh timeout = 60. verbose = True [gcode_shell_command generate_belt_tension_graph] command = /home/pi/klipper_config/config/scripts/generate-belt-tension-graph.sh timeout = 90. verbose = True [gcode_shell_command compile_binaries] command = /home/pi/klipper_config/config/scripts/compile-binaries.sh timeout = 600. [gcode_shell_command change_hostname] command = /home/pi/klipper_config/config/scripts/change-hostname.sh timeout = 10. [gcode_shell_command delete_and_restore_printer_data_dirs] command = /home/pi/klipper_config/config/scripts/delete-and-restore-printer-data.sh timeout = 10. [gcode_macro DELETE_AND_RESTORE_PRINTER_DATA_DIRS] gcode = RUN_SHELL_COMMAND CMD=delete_and_restore_printer_data_dirs [gcode_macro GENERATE_SHAPER_GRAPHS] description = Genarates input shaper resonances graphs for analysis. Uses the AXIS parameter for if you only want to do one axis at a time, (eg. GENERATE_SHAPER_GRAPHS AXIS=X) gcode = {% if params.AXIS is defined %} {% if params.AXIS|lower == 'x' %} MAYBE_HOME TEST_RESONANCES AXIS=X RUN_SHELL_COMMAND CMD=generate_shaper_graph_x RESPOND MSG="Input shaper graph generated for the X axis. You'll find it in the input_shaper folder in the machine tab!" {% elif params.AXIS|lower == 'y' %} MAYBE_HOME TEST_RESONANCES AXIS=Y RUN_SHELL_COMMAND CMD=generate_shaper_graph_y RESPOND MSG="Input shaper graph generated for the Y axis. You'll find it in the input_shaper folder in the machine tab!" {% else %} {action_raise_error("Unknown axis specified. Expected X or Y.")} {% endif %} {% else %} MAYBE_HOME TEST_RESONANCES AXIS=X TEST_RESONANCES AXIS=Y RUN_SHELL_COMMAND CMD=generate_shaper_graph_x RUN_SHELL_COMMAND CMD=generate_shaper_graph_y RESPOND MSG="Input shaper graphs generated for X and Y. You'll find them in the input_shaper folder in the machine tab!" {% endif %} [gcode_macro MEASURE_COREXY_BELT_TENSION] description = Generates resonance graph used to ensure belts are equally tensioned. gcode = TEST_RESONANCES AXIS=1,1 OUTPUT=raw_data NAME=belt-tension-upper TEST_RESONANCES AXIS=1,-1 OUTPUT=raw_data NAME=belt-tension-lower RUN_SHELL_COMMAND CMD=generate_belt_tension_graph [gcode_macro COMPILE_FIRMWARE] description = Compiles firmware with currently installed klipper version for all supported RatOS boards. Note: this may take up to 10 minutes. gcode = RESPOND MSG="Compiling binaries.. This can take up to 10 minutes. Please do not turn off your Raspberry Pi!" RUN_SHELL_COMMAND CMD=compile_binaries RESPOND MSG="Firmware binaries compiled successfully! You can find them in the firmware_binaries folder in the machine tab!" [gcode_macro CHANGE_HOSTNAME] description = Change the hostname of your Raspberry Pi. gcode = {% if params.HOSTNAME is not defined %} RESPOND MSG='You have to specify a new hostname with the HOSTNAME parameter. Ex: CHANGE_HOSTNAME HOSTNAME="MY_NEW_HOSTNAME"' RESPOND MSG="Please note: RFCs mandate that a hostname's labels may contain only the ASCII letters 'a' through 'z' (case-insensitive), the digits '0' through '9', and the hyphen. Hostname labels cannot begin or end with a hyphen. No other symbols, punctuation characters, or blank spaces are permitted." {% else %} RUN_SHELL_COMMAND CMD=change_hostname PARAMS={params.HOSTNAME} {% endif %} [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 145, in _read_config pconfig.check_unused_options(config) File "/home/pi/klipper/klippy/configfile.py", line 299, in check_unused_options raise error("Section '%s' is not a valid config section" configparser.Error: Section 'gcode_shell_command generate_shaper_graph_x' is not a valid config section webhooks client 3044443136: New connection webhooks client 3044443136: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 21:11:50 2023 (1676581910.0 525.6) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = END_PRINT TURN_OFF_HEATERS CLEAR_PAUSE CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = SAVE_GCODE_STATE NAME=PAUSE_state {% set E = printer["gcode_macro PAUSE"].extrude|float %} {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} PAUSE_BASE G91 {% if printer.extruder.can_extrude|lower == 'true' %} G1 E-{E} F2100 {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} {% if "xyz" in printer.toolhead.homed_axes %} G1 Z{z_safe} F900 _PARK LOCATION={printer["gcode_macro RatOS"].pause_print_park_in} X={printer["gcode_macro RatOS"].pause_print_park_x} {% else %} {action_respond_info("Printer not homed")} {% endif %} variable_extrude = 1.5 [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set E = printer["gcode_macro PAUSE"].extrude|float %} {% if printer.extruder.can_extrude|lower == 'true' %} G91 G1 E{E} F2100 G90 {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1 RESUME_BASE [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [adxl345] spi_bus = spi3 cs_pin = adxl345_cs_pin [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [fan] pin = fan_part_cooling_pin shutdown_speed = 1.0 [heater_fan toolhead_cooling_fan] pin = fan_toolhead_cooling_pin fan_speed = 1 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [extruder] step_pin = e_step_pin dir_pin = e_dir_pin enable_pin = !e_enable_pin microsteps = 64 rotation_distance = 4.68 full_steps_per_rotation = 200 filament_diameter = 1.750 max_extrude_only_velocity = 60 max_extrude_only_distance = 200 nozzle_diameter = 0.4 heater_pin = e_heater_pin sensor_type = ATC Semitec 104GT-2 sensor_pin = e_sensor_pin min_extrude_temp = 170 min_temp = 0 max_temp = 285 pressure_advance = 0.05 control = pid pid_kp = 28.413 pid_ki = 1.334 pid_kd = 151.300 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 extruder] interpolate = False stealthchop_threshold = 0 run_current = 0.707 uart_pin = e_uart_pin driver_tbl = 1 driver_toff = 3 driver_hend = 9 driver_hstrt = 7 [probe] pin = ^!probe_pin x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [gcode_macro ECHO_RATOS_VARS] gcode = {% for var, value in printer["gcode_macro RatOS"].items() %} {action_respond_info(var ~ ": " ~ value)} {% endfor %} [gcode_macro RatOS] variable_relative_extrusion = False variable_preheat_extruder = True variable_calibrate_bed_mesh = True variable_nozzle_priming = "primeline" variable_start_print_park_in = "back" variable_start_print_park_z_height = 50 variable_end_print_park_in = "back" variable_pause_print_park_in = "back" variable_macro_travel_speed = 300 gcode = ECHO_RATOS_VARS [gcode_macro MAYBE_HOME] variable_is_kinematic_position_overriden = False gcode = {% if printer["gcode_macro MAYBE_HOME"].is_kinematic_position_overriden|lower == 'true' %} RESPOND MSG="SET_CENTER_KINEMATIC_POSITION has been abused. Homing all axes. Please refrain from using SET_CENTER_KINEMATIC_POSITION outside of debugging purposes." G28 SET_GCODE_VARIABLE MACRO=MAYBE_HOME VARIABLE=is_kinematic_position_overriden VALUE=False {% else %} {% set axes = '' %} {% set isHomed = true %} {% set axesToHome = '' %} {% if params.X is defined %} {% set axes = axes ~ 'X ' %} {% if 'x' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'X ' %} {% endif %} {% endif %} {% if params.Y is defined %} {% set axes = axes ~ 'Y ' %} {% if 'y' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Y ' %} {% endif %} {% endif %} {% if params.Z is defined %} {% set axes = axes ~ 'Z ' %} {% if 'z' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Z ' %} {% endif %} {% endif %} {% if params.X is not defined and params.Y is not defined and params.Z is not defined %} {% set axes = '' %} {% if 'x' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'X ' %} {% endif %} {% if 'y' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Y ' %} {% endif %} {% if 'z' not in printer.toolhead.homed_axes %} {% set isHomed = false %} {% set axesToHome = axesToHome ~ 'Z ' %} {% endif %} {% endif %} {% if isHomed is false %} M117 Homing {axesToHome} RESPOND MSG="Homing {axesToHome}" G28 {axesToHome} {% else %} RESPOND MSG="All requested axes already homed, skipping.." {% endif %} {% endif %} [gcode_macro PRIME_LINE] gcode = SAVE_GCODE_STATE NAME=prime_line_state {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} G90 M82 M117 Priming nozzle with prime line.. RESPOND MSG="Priming nozzle with prime line.." G1 Z5 F3000 G1 X{printer.toolhead.axis_minimum.x + 5} Y{printer.toolhead.axis_minimum.y + 10} F{speed} G1 Z0.3 F3000 G92 E0 G1 Y{printer.toolhead.axis_minimum.y + 80} E16 F1200 G1 Y{printer.toolhead.axis_minimum.y + 100} F{speed} RESTORE_GCODE_STATE NAME=prime_line_state [gcode_macro PRIME_BLOB] gcode = SAVE_GCODE_STATE NAME=prime_blob_state M117 Priming nozzle with prime blob.. RESPOND MSG="Priming nozzle with prime blob.." {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} G90 M83 G1 Z5 F3000 G1 X{printer.toolhead.axis_minimum.x + 5} Y{printer.toolhead.axis_minimum.y + 10} Z0.5 F{speed} G1 F60 E20 M106 S102 G1 Z5 F100 E5 G1 F200 Y{printer.toolhead.axis_minimum.y + 25} E1 G1 F200 Y{printer.toolhead.axis_minimum.y + 30} Z3.8 E0.5 G1 F200 Y{printer.toolhead.axis_minimum.y + 35} Z2.6 E0.5 G1 F200 Y{printer.toolhead.axis_minimum.y + 40} Z1.4 E0.5 G1 F200 Y{printer.toolhead.axis_minimum.y + 45} Z0.2 E0.5 M106 S0 G1 F200 Y{printer.toolhead.axis_minimum.y +50} Z0.2 E0.6 G1 F{speed} Y{printer.toolhead.axis_minimum.y + 100} RESTORE_GCODE_STATE NAME=prime_blob_state [gcode_macro _PARK] gcode = {% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %} {% if params.X != '' %} {% if params.X|float >= printer.toolhead.axis_minimum.x + 5 and params.X|float <= printer.toolhead.axis_maximum.x - 5 %} {% set safe_x = params.X|float %} {% else %} {action_respond_info('The requested X co-ordinate is outside the defined axis bounds - using defaults')} {% set safe_x = printer.toolhead.axis_maximum.x / 2 %} {% endif %} {% else %} {% set safe_x = printer.toolhead.axis_maximum.x / 2 %} {% endif %} {% if params.LOCATION|default('back')|lower == 'back' %} {% set y = printer.toolhead.axis_maximum.y - 5 %} {% elif params.LOCATION|lower == 'front' %} {% set y = printer.toolhead.axis_minimum.y + 5 %} {% elif params.LOCATION|lower == 'center' %} {% set y = printer.toolhead.axis_maximum.y / 2 %} {% endif %} G90 G0 X{safe_x} Y{y} F{speed} [gcode_macro M600] gcode = PAUSE UNLOAD_FILAMENT M117 Please load new filament and resume RESPOND MSG="Please load new filament and resume" [gcode_macro UNLOAD_FILAMENT] gcode = SAVE_GCODE_STATE NAME=unload_state G91 {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} M117 Heating... M104 S{params.TEMP|default(220, true)} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)} {% endif %} M117 Unloading filament... G0 E-5 F3600 G4 P3000 G0 E5 F3600 G0 E-15 F3600 G0 E-130 F300 M117 Filament unloaded! RESPOND MSG="Filament unloaded! Please inspect the tip of the filament before reloading." RESTORE_GCODE_STATE NAME=unload_state [gcode_macro LOAD_FILAMENT] gcode = SAVE_GCODE_STATE NAME=load_state G91 {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} M117 Heating... M104 S{params.TEMP|default(220, true)} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)} {% endif %} M117 Loading filament... G0 E100 F600 G4 P1000 G0 E40 F100 M400e M117 Filament loaded! RESPOND MSG="Filament loaded!" RESTORE_GCODE_STATE NAME=load_state [gcode_macro SET_CENTER_KINEMATIC_POSITION] gcode = RESPOND MSG="WARNING: ONLY USE SET_CENTER_KINEMATIC_POSITION FOR DEBUGGING PURPOSES. YOU'RE OVERRIDING THE INTERNAL POSITIONING STATE OF THE PRINTER. PROCEED WITH CAUTION AND DO A PROPER G28 WHEN DONE." SET_GCODE_VARIABLE MACRO=MAYBE_HOME VARIABLE=is_kinematic_position_overriden VALUE=True SET_KINEMATIC_POSITION X={printer.toolhead.axis_maximum.x / 2} Y={printer.toolhead.axis_maximum.y / 2} Z={printer.toolhead.axis_maximum.z / 2} [gcode_macro START_PRINT] gcode = CLEAR_PAUSE SAVE_GCODE_STATE NAME=start_print_state G21 G90 M82 MAYBE_HOME M117 Heating bed... RESPOND MSG="Heating bed..." M190 S{params.BED_TEMP|default(printer.heater_bed.target, true) } _START_PRINT_AFTER_HEATING_BED _START_PRINT_BED_MESH M104 S{params.EXTRUDER_TEMP|default(printer.extruder.target, true) } _START_PRINT_PARK M117 Heating Extruder... RESPOND MSG="Heating Extruder..." M109 S{params.EXTRUDER_TEMP|default(printer.extruder.target, true) } _START_PRINT_AFTER_HEATING_EXTRUDER M117 Printing... RESPOND MSG="Printing..." RESTORE_GCODE_STATE NAME=start_print_state {% if printer["gcode_macro RatOS"].relative_extrusion|lower == 'true' %} M83 {% else %} M82 {% endif %} G92 E0 [gcode_macro _START_PRINT_AFTER_HEATING_BED] gcode = {% if printer["gcode_macro RatOS"].preheat_extruder|lower == 'true' %} M117 Pre-heating extruder... M104 S150 TEMPERATURE_WAIT SENSOR=extruder MINIMUM=150 {% endif %} M117 Adjusting for tilt... Z_TILT_ADJUST M117 Rehoming after tilt adjustment... G28 Z [gcode_macro _START_PRINT_BED_MESH] gcode = {% if printer["gcode_macro RatOS"].calibrate_bed_mesh|lower == 'true' %} BED_MESH_CALIBRATE PROFILE=ratos {% endif %} BED_MESH_PROFILE LOAD=ratos [gcode_macro _START_PRINT_PARK] gcode = {% set z = printer["gcode_macro RatOS"].start_print_park_z_height|float %} _PARK LOCATION={printer["gcode_macro RatOS"].start_print_park_in} X={printer["gcode_macro RatOS"].start_print_park_x} G0 Z{z} F6000 [gcode_macro _START_PRINT_AFTER_HEATING_EXTRUDER] gcode = {% if printer["gcode_macro RatOS"].nozzle_priming|lower == 'primeline' %} PRIME_LINE {% endif %} {% if printer["gcode_macro RatOS"].nozzle_priming|lower == 'primeblob' %} PRIME_BLOB {% endif %} {% if printer["gcode_macro RatOS"].skew_profile is defined %} SKEW_PROFILE LOAD={printer["gcode_macro RatOS"].skew_profile} {% endif %} [gcode_macro END_PRINT] gcode = SAVE_GCODE_STATE NAME=end_print_state _END_PRINT_BEFORE_HEATERS_OFF TURN_OFF_HEATERS _END_PRINT_AFTER_HEATERS_OFF _END_PRINT_PARK {% if printer["gcode_macro RatOS"].skew_profile is defined %} SET_SKEW CLEAR=1 {% endif %} M84 M107 M117 Done :) RESPOND MSG="Done :)" RESTORE_GCODE_STATE NAME=end_print_state [gcode_macro _END_PRINT_BEFORE_HEATERS_OFF] gcode = RESPOND MSG="Cleaning up..." [gcode_macro _END_PRINT_AFTER_HEATERS_OFF] gcode = {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} G91 G1 E-2 F3600 G0 Z{z_safe} F3600 G1 E-2 F3600 [gcode_macro _END_PRINT_PARK] gcode = _PARK LOCATION={printer["gcode_macro RatOS"].end_print_park_in} X={printer["gcode_macro RatOS"].end_print_park_x} [gcode_shell_command generate_shaper_graph_x] command = /home/pi/klipper_config/config/scripts/generate-shaper-graph-x.sh timeout = 60. verbose = True [gcode_shell_command generate_shaper_graph_y] command = /home/pi/klipper_config/config/scripts/generate-shaper-graph-y.sh timeout = 60. verbose = True [gcode_shell_command generate_belt_tension_graph] command = /home/pi/klipper_config/config/scripts/generate-belt-tension-graph.sh timeout = 90. verbose = True [gcode_shell_command compile_binaries] command = /home/pi/klipper_config/config/scripts/compile-binaries.sh timeout = 600. [gcode_shell_command change_hostname] command = /home/pi/klipper_config/config/scripts/change-hostname.sh timeout = 10. [gcode_shell_command delete_and_restore_printer_data_dirs] command = /home/pi/klipper_config/config/scripts/delete-and-restore-printer-data.sh timeout = 10. [gcode_macro DELETE_AND_RESTORE_PRINTER_DATA_DIRS] gcode = RUN_SHELL_COMMAND CMD=delete_and_restore_printer_data_dirs [gcode_macro GENERATE_SHAPER_GRAPHS] gcode = {% if params.AXIS is defined %} {% if params.AXIS|lower == 'x' %} MAYBE_HOME TEST_RESONANCES AXIS=X RUN_SHELL_COMMAND CMD=generate_shaper_graph_x RESPOND MSG="Input shaper graph generated for the X axis. You'll find it in the input_shaper folder in the machine tab!" {% elif params.AXIS|lower == 'y' %} MAYBE_HOME TEST_RESONANCES AXIS=Y RUN_SHELL_COMMAND CMD=generate_shaper_graph_y RESPOND MSG="Input shaper graph generated for the Y axis. You'll find it in the input_shaper folder in the machine tab!" {% else %} {action_raise_error("Unknown axis specified. Expected X or Y.")} {% endif %} {% else %} MAYBE_HOME TEST_RESONANCES AXIS=X TEST_RESONANCES AXIS=Y RUN_SHELL_COMMAND CMD=generate_shaper_graph_x RUN_SHELL_COMMAND CMD=generate_shaper_graph_y RESPOND MSG="Input shaper graphs generated for X and Y. You'll find them in the input_shaper folder in the machine tab!" {% endif %} [gcode_macro MEASURE_COREXY_BELT_TENSION] gcode = TEST_RESONANCES AXIS=1,1 OUTPUT=raw_data NAME=belt-tension-upper TEST_RESONANCES AXIS=1,-1 OUTPUT=raw_data NAME=belt-tension-lower RUN_SHELL_COMMAND CMD=generate_belt_tension_graph [gcode_macro COMPILE_FIRMWARE] gcode = RESPOND MSG="Compiling binaries.. This can take up to 10 minutes. Please do not turn off your Raspberry Pi!" RUN_SHELL_COMMAND CMD=compile_binaries RESPOND MSG="Firmware binaries compiled successfully! You can find them in the firmware_binaries folder in the machine tab!" [gcode_macro CHANGE_HOSTNAME] gcode = {% if params.HOSTNAME is not defined %} RESPOND MSG='You have to specify a new hostname with the HOSTNAME parameter. Ex: CHANGE_HOSTNAME HOSTNAME="MY_NEW_HOSTNAME"' RESPOND MSG="Please note: RFCs mandate that a hostname's labels may contain only the ASCII letters 'a' through 'z' (case-insensitive), the digits '0' through '9', and the hyphen. Hostname labels cannot begin or end with a hyphen. No other symbols, punctuation characters, or blank spaces are permitted." {% else %} RUN_SHELL_COMMAND CMD=change_hostname PARAMS={params.HOSTNAME} {% endif %} [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 145, in _read_config pconfig.check_unused_options(config) File "/home/pi/klipper/klippy/configfile.py", line 299, in check_unused_options raise error("Section '%s' is not a valid config section" configparser.Error: Section 'gcode_shell_command generate_shaper_graph_x' is not a valid config section webhooks client 3038984704: New connection webhooks client 3038984704: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 21:14:32 2023 (1676582072.6 688.2) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [adxl345] spi_bus = spi3 cs_pin = adxl345_cs_pin [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [fan] pin = fan_part_cooling_pin shutdown_speed = 1.0 [heater_fan toolhead_cooling_fan] pin = fan_toolhead_cooling_pin fan_speed = 1 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [extruder] step_pin = e_step_pin dir_pin = e_dir_pin enable_pin = !e_enable_pin microsteps = 64 rotation_distance = 4.68 full_steps_per_rotation = 200 filament_diameter = 1.750 max_extrude_only_velocity = 60 max_extrude_only_distance = 200 nozzle_diameter = 0.4 heater_pin = e_heater_pin sensor_type = ATC Semitec 104GT-2 sensor_pin = e_sensor_pin min_extrude_temp = 170 min_temp = 0 max_temp = 285 pressure_advance = 0.05 control = pid pid_kp = 28.413 pid_ki = 1.334 pid_kd = 151.300 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 extruder] interpolate = False stealthchop_threshold = 0 run_current = 0.707 uart_pin = e_uart_pin driver_tbl = 1 driver_toff = 3 driver_hend = 9 driver_hstrt = 7 [probe] pin = ^!probe_pin x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3044510304: New connection webhooks client 3044510304: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 21:15:38 2023 (1676582138.7 754.3) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [adxl345] spi_bus = spi3 cs_pin = adxl345_cs_pin [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [fan] pin = fan_part_cooling_pin shutdown_speed = 1.0 [heater_fan toolhead_cooling_fan] pin = fan_toolhead_cooling_pin fan_speed = 1 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [extruder] step_pin = e_step_pin dir_pin = e_dir_pin enable_pin = !e_enable_pin microsteps = 64 rotation_distance = 4.68 full_steps_per_rotation = 200 filament_diameter = 1.750 max_extrude_only_velocity = 60 max_extrude_only_distance = 200 nozzle_diameter = 0.4 heater_pin = e_heater_pin sensor_type = ATC Semitec 104GT-2 sensor_pin = e_sensor_pin min_extrude_temp = 170 min_temp = 0 max_temp = 285 pressure_advance = 0.05 control = pid pid_kp = 28.413 pid_ki = 1.334 pid_kd = 151.300 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 extruder] interpolate = False stealthchop_threshold = 0 run_current = 0.707 uart_pin = e_uart_pin driver_tbl = 1 driver_toff = 3 driver_hend = 9 driver_hstrt = 7 [probe] pin = ^!probe_pin x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3038910952: New connection webhooks client 3038910952: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 20:43:33 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 20:44:03 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 20:44:08 2023 Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-I', '/home/pi/printer_data/comms/klippy.serial', '-l', '/home/pi/printer_data/logs/klippy.log', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-110-gaca0c71a' CPU: 4 core ARMv7 Processor rev 3 (v7l) Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Thu Feb 16 21:39:53 2023 (1676583593.1 10.6) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [adxl345] spi_bus = spi3 cs_pin = adxl345_cs_pin [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [fan] pin = fan_part_cooling_pin shutdown_speed = 1.0 [heater_fan toolhead_cooling_fan] pin = fan_toolhead_cooling_pin fan_speed = 1 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [extruder] step_pin = e_step_pin dir_pin = e_dir_pin enable_pin = !e_enable_pin microsteps = 64 rotation_distance = 4.68 full_steps_per_rotation = 200 filament_diameter = 1.750 max_extrude_only_velocity = 60 max_extrude_only_distance = 200 nozzle_diameter = 0.4 heater_pin = e_heater_pin sensor_type = ATC Semitec 104GT-2 sensor_pin = e_sensor_pin min_extrude_temp = 170 min_temp = 0 max_temp = 285 pressure_advance = 0.05 control = pid pid_kp = 28.413 pid_ki = 1.334 pid_kd = 151.300 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 extruder] interpolate = False stealthchop_threshold = 0 run_current = 0.707 uart_pin = e_uart_pin driver_tbl = 1 driver_toff = 3 driver_hend = 9 driver_hstrt = 7 [probe] pin = ^!probe_pin x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3039092472: New connection webhooks client 3039092472: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 20:43:33 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 20:44:03 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 20:44:08 2023 Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-I', '/home/pi/printer_data/comms/klippy.serial', '-l', '/home/pi/printer_data/logs/klippy.log', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-110-gaca0c71a' CPU: 4 core ARMv7 Processor rev 3 (v7l) Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Thu Feb 16 21:55:08 2023 (1676584509.0 10.5) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [adxl345] spi_bus = spi3 cs_pin = adxl345_cs_pin [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [fan] pin = fan_part_cooling_pin shutdown_speed = 1.0 [heater_fan toolhead_cooling_fan] pin = fan_toolhead_cooling_pin fan_speed = 1 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [extruder] step_pin = e_step_pin dir_pin = e_dir_pin enable_pin = !e_enable_pin microsteps = 64 rotation_distance = 4.68 full_steps_per_rotation = 200 filament_diameter = 1.750 max_extrude_only_velocity = 60 max_extrude_only_distance = 200 nozzle_diameter = 0.4 heater_pin = e_heater_pin sensor_type = ATC Semitec 104GT-2 sensor_pin = e_sensor_pin min_extrude_temp = 170 min_temp = 0 max_temp = 285 pressure_advance = 0.05 control = pid pid_kp = 28.413 pid_ki = 1.334 pid_kd = 151.300 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 extruder] interpolate = False stealthchop_threshold = 0 run_current = 0.707 uart_pin = e_uart_pin driver_tbl = 1 driver_toff = 3 driver_hend = 9 driver_hstrt = 7 [probe] pin = ^!probe_pin x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3038760696: New connection webhooks client 3038760696: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3332): Thu Feb 16 21:50:44 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_LINUX is not set # CONFIG_MACH_SIMU is not set CONFIG_BOARD_DIRECTORY="stm32" CONFIG_MCU="stm32f446xx" CONFIG_CLOCK_FREQ=180000000 CONFIG_FLASH_SIZE=0x80000 CONFIG_FLASH_BOOT_ADDRESS=0x8000000 CONFIG_RAM_START=0x20000000 CONFIG_RAM_SIZE=0x20000 CONFIG_STACK_SIZE=512 CONFIG_FLASH_APPLICATION_ADDRESS=0x8008000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set CONFIG_MACH_STM32F446=y # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set # CONFIG_MACH_STM32G0B1 is not set # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32F4=y CONFIG_HAVE_STM32_USBOTG=y CONFIG_HAVE_STM32_CANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0x1fff0000 CONFIG_STM32_FLASH_START_8000=y # CONFIG_STM32_FLASH_START_10000 is not set # CONFIG_STM32_FLASH_START_0000 is not set # CONFIG_STM32_CLOCK_REF_8M is not set CONFIG_STM32_CLOCK_REF_12M=y # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=12000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_CANBUS_PA11_PA12 is not set # CONFIG_STM32_CANBUS_PA11_PB9 is not set # CONFIG_STM32_MMENU_CANBUS_PB8_PB9 is not set # CONFIG_STM32_MMENU_CANBUS_PI9_PH13 is not set # CONFIG_STM32_MMENU_CANBUS_PB5_PB6 is not set # CONFIG_STM32_MMENU_CANBUS_PB12_PB13 is not set # CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set CONFIG_STM32_USBCANBUS_PA11_PA12=y # CONFIG_STM32_CMENU_CANBUS_PB8_PB9 is not set # CONFIG_STM32_CMENU_CANBUS_PI9_PH13 is not set # CONFIG_STM32_CMENU_CANBUS_PB5_PB6 is not set # CONFIG_STM32_CMENU_CANBUS_PB12_PB13 is not set CONFIG_STM32_CMENU_CANBUS_PD0_PD1=y CONFIG_STM32_CANBUS_PD0_PD1=y CONFIG_USBCANBUS=y CONFIG_USB=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER_CHIPID=y CONFIG_USB_SERIAL_NUMBER="12345" # # USB ids # # end of USB ids CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 CONFIG_INITIAL_PINS="" CONFIG_HAVE_GPIO=y CONFIG_HAVE_GPIO_ADC=y CONFIG_HAVE_GPIO_SPI=y CONFIG_HAVE_GPIO_I2C=y CONFIG_HAVE_GPIO_HARD_PWM=y CONFIG_HAVE_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7889): Thu Feb 16 21:51:28 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1=PB6,PB7 BUS_PINS_i2c1a=PB8,PB9 BUS_PINS_i2c2=PB10,PB11 BUS_PINS_i2c3=PA8,PC9 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi3=PB4,PB5,PB3 BUS_PINS_spi3a=PC11,PC12,PC10 BUS_PINS_spi4=PE13,PE14,PE12 CANBUS_BRIDGE=1 CLOCK_FREQ=180000000 MCU=stm32f446xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PH0,PH1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1283832): Thu Feb 16 21:51:35 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:12:07 2023 (1676585527.3 1016.3) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [adxl345] spi_bus = spi3 cs_pin = adxl345_cs_pin [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [fan] pin = fan_part_cooling_pin shutdown_speed = 1.0 [heater_fan toolhead_cooling_fan] pin = fan_toolhead_cooling_pin fan_speed = 1 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [extruder] step_pin = e_step_pin dir_pin = e_dir_pin enable_pin = !e_enable_pin microsteps = 64 rotation_distance = 4.68 full_steps_per_rotation = 200 filament_diameter = 1.750 max_extrude_only_velocity = 60 max_extrude_only_distance = 200 nozzle_diameter = 0.4 heater_pin = e_heater_pin sensor_type = ATC Semitec 104GT-2 sensor_pin = e_sensor_pin min_extrude_temp = 170 min_temp = 0 max_temp = 285 pressure_advance = 0.05 control = pid pid_kp = 28.413 pid_ki = 1.334 pid_kd = 151.300 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 extruder] interpolate = False stealthchop_threshold = 0 run_current = 0.707 uart_pin = e_uart_pin driver_tbl = 1 driver_toff = 3 driver_hend = 9 driver_hstrt = 7 [probe] pin = ^!probe_pin x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3044711488: New connection webhooks client 3044711488: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 22:08:56 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 22:09:24 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 22:09:29 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:20:07 2023 (1676586007.6 1496.6) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 143, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/toolhead.py", line 606, in add_printer_objects config.get_printer().add_object('toolhead', ToolHead(config)) File "/home/pi/klipper/klippy/toolhead.py", line 257, in __init__ self.kin = mod.load_kinematics(self, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 99, in load_kinematics return CoreXYKinematics(toolhead, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in __init__ self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/stepper.py", line 421, in LookupMultiRail rail = PrinterRail(config, need_position_minmax, File "/home/pi/klipper/klippy/stepper.py", line 302, in __init__ self.add_extra_stepper(config) File "/home/pi/klipper/klippy/stepper.py", line 381, in add_extra_stepper pin_params = ppins.parse_pin(endstop_pin, True, True) File "/home/pi/klipper/klippy/pins.py", line 83, in parse_pin raise error("Unknown pin chip name '%s'" % (chip_name,)) pins.error: Unknown pin chip name 'probe' webhooks client 3044710432: New connection webhooks client 3044710432: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:22:57 2023 (1676586177.8 1666.8) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, adxl345_cs_pin=PA15, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, probe_pin=PG10, fan_part_cooling_pin=PA8, fan_toolhead_cooling_pin=PE5, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 143, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/toolhead.py", line 606, in add_printer_objects config.get_printer().add_object('toolhead', ToolHead(config)) File "/home/pi/klipper/klippy/toolhead.py", line 257, in __init__ self.kin = mod.load_kinematics(self, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 99, in load_kinematics return CoreXYKinematics(toolhead, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in __init__ self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/stepper.py", line 421, in LookupMultiRail rail = PrinterRail(config, need_position_minmax, File "/home/pi/klipper/klippy/stepper.py", line 302, in __init__ self.add_extra_stepper(config) File "/home/pi/klipper/klippy/stepper.py", line 381, in add_extra_stepper pin_params = ppins.parse_pin(endstop_pin, True, True) File "/home/pi/klipper/klippy/pins.py", line 83, in parse_pin raise error("Unknown pin chip name '%s'" % (chip_name,)) pins.error: Unknown pin chip name 'probe' webhooks client 3039088752: New connection webhooks client 3039088752: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:27:38 2023 (1676586458.7 1947.8) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 143, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/toolhead.py", line 606, in add_printer_objects config.get_printer().add_object('toolhead', ToolHead(config)) File "/home/pi/klipper/klippy/toolhead.py", line 257, in __init__ self.kin = mod.load_kinematics(self, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 99, in load_kinematics return CoreXYKinematics(toolhead, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in __init__ self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/stepper.py", line 421, in LookupMultiRail rail = PrinterRail(config, need_position_minmax, File "/home/pi/klipper/klippy/stepper.py", line 302, in __init__ self.add_extra_stepper(config) File "/home/pi/klipper/klippy/stepper.py", line 381, in add_extra_stepper pin_params = ppins.parse_pin(endstop_pin, True, True) File "/home/pi/klipper/klippy/pins.py", line 83, in parse_pin raise error("Unknown pin chip name '%s'" % (chip_name,)) pins.error: Unknown pin chip name 'probe' webhooks client 3039933176: New connection webhooks client 3039933176: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:34:19 2023 (1676586859.9 2349.0) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [bltouch] sensor_pin = ^EBBCan:PB8 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = sensor_pin:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/pi/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/pi/klipper/klippy/extras/bltouch.py", line 274, in load_config blt = BLTouchEndstopWrapper(config) File "/home/pi/klipper/klippy/extras/bltouch.py", line 33, in __init__ self.position_endstop = config.getfloat('z_offset', minval=0.) File "/home/pi/klipper/klippy/configfile.py", line 65, in getfloat return self._get_wrapper(self.fileconfig.getfloat, option, default, File "/home/pi/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'z_offset' in section 'bltouch' must be specified webhooks client 3039274392: New connection webhooks client 3039274392: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:36:25 2023 (1676586985.2 2474.3) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [bltouch] sensor_pin = ^EBBCan:PB8 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = sensor_pin:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] sensor_pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/pi/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/pi/klipper/klippy/extras/bltouch.py", line 274, in load_config blt = BLTouchEndstopWrapper(config) File "/home/pi/klipper/klippy/extras/bltouch.py", line 33, in __init__ self.position_endstop = config.getfloat('z_offset', minval=0.) File "/home/pi/klipper/klippy/configfile.py", line 65, in getfloat return self._get_wrapper(self.fileconfig.getfloat, option, default, File "/home/pi/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'z_offset' in section 'bltouch' must be specified webhooks client 3039273024: New connection webhooks client 3039273024: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:38:34 2023 (1676587114.6 2603.7) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [bltouch] sensor_pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 141, in _read_config self.load_object(config, section_config.get_name(), None) File "/home/pi/klipper/klippy/klippy.py", line 130, in load_object self.objects[section] = init_func(config.getsection(section)) File "/home/pi/klipper/klippy/extras/bltouch.py", line 274, in load_config blt = BLTouchEndstopWrapper(config) File "/home/pi/klipper/klippy/extras/bltouch.py", line 40, in __init__ self.mcu_pwm = ppins.setup_pin('pwm', config.get('control_pin')) File "/home/pi/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/pi/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'control_pin' in section 'bltouch' must be specified webhooks client 3039924032: New connection webhooks client 3039924032: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:39:15 2023 (1676587155.8 2644.8) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [bltouch] sensor_pin = ^EBBCan:PB8 control_pin = EBBCan:PB9 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 143, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/toolhead.py", line 606, in add_printer_objects config.get_printer().add_object('toolhead', ToolHead(config)) File "/home/pi/klipper/klippy/toolhead.py", line 257, in __init__ self.kin = mod.load_kinematics(self, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 99, in load_kinematics return CoreXYKinematics(toolhead, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in __init__ self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/stepper.py", line 421, in LookupMultiRail rail = PrinterRail(config, need_position_minmax, File "/home/pi/klipper/klippy/stepper.py", line 302, in __init__ self.add_extra_stepper(config) File "/home/pi/klipper/klippy/stepper.py", line 378, in add_extra_stepper endstop_pin = config.get('endstop_pin') File "/home/pi/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/pi/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'endstop_pin' in section 'stepper_z' must be specified webhooks client 3044541200: New connection webhooks client 3044541200: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:40:12 2023 (1676587212.4 2701.5) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [bltouch] sensor_pin = ^EBBCan:PB8 control_pin = EBBCan:PB9 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = sensor_pin:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 143, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/toolhead.py", line 606, in add_printer_objects config.get_printer().add_object('toolhead', ToolHead(config)) File "/home/pi/klipper/klippy/toolhead.py", line 257, in __init__ self.kin = mod.load_kinematics(self, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 99, in load_kinematics return CoreXYKinematics(toolhead, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in __init__ self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/stepper.py", line 421, in LookupMultiRail rail = PrinterRail(config, need_position_minmax, File "/home/pi/klipper/klippy/stepper.py", line 302, in __init__ self.add_extra_stepper(config) File "/home/pi/klipper/klippy/stepper.py", line 381, in add_extra_stepper pin_params = ppins.parse_pin(endstop_pin, True, True) File "/home/pi/klipper/klippy/pins.py", line 83, in parse_pin raise error("Unknown pin chip name '%s'" % (chip_name,)) pins.error: Unknown pin chip name 'sensor_pin' webhooks client 3044127456: New connection webhooks client 3044127456: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:46:06 2023 (1676587566.2 3055.3) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = sensor_pin:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 143, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/toolhead.py", line 606, in add_printer_objects config.get_printer().add_object('toolhead', ToolHead(config)) File "/home/pi/klipper/klippy/toolhead.py", line 257, in __init__ self.kin = mod.load_kinematics(self, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 99, in load_kinematics return CoreXYKinematics(toolhead, config) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in __init__ self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/kinematics/corexy.py", line 12, in self.rails = [stepper.LookupMultiRail(config.getsection('stepper_' + n)) File "/home/pi/klipper/klippy/stepper.py", line 421, in LookupMultiRail rail = PrinterRail(config, need_position_minmax, File "/home/pi/klipper/klippy/stepper.py", line 302, in __init__ self.add_extra_stepper(config) File "/home/pi/klipper/klippy/stepper.py", line 381, in add_extra_stepper pin_params = ppins.parse_pin(endstop_pin, True, True) File "/home/pi/klipper/klippy/pins.py", line 83, in parse_pin raise error("Unknown pin chip name '%s'" % (chip_name,)) pins.error: Unknown pin chip name 'sensor_pin' webhooks client 3039933296: New connection webhooks client 3039933296: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:46:58 2023 (1676587618.4 3107.5) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 145, in _read_config pconfig.check_unused_options(config) File "/home/pi/klipper/klippy/configfile.py", line 304, in check_unused_options raise error("Option '%s' is not valid in section '%s'" configparser.Error: Option 'serial' is not valid in section 'mcu ebbcan' webhooks client 3039088728: New connection webhooks client 3039088728: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 22:47:39 2023 (1676587659.6 3148.7) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3038835688: New connection webhooks client 3038835688: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 22:08:56 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 22:09:24 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 22:09:29 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 23:02:30 2023 (1676588550.3 4039.4) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3039290800: New connection webhooks client 3039290800: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 23:02:43 2023 (1676588563.3 4052.4) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3039936488: New connection webhooks client 3039936488: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 23:04:07 2023 (1676588647.0 4136.1) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3039276960: New connection webhooks client 3039276960: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-I', '/home/pi/printer_data/comms/klippy.serial', '-l', '/home/pi/printer_data/logs/klippy.log', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-110-gaca0c71a' CPU: 4 core ARMv7 Processor rev 3 (v7l) Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Thu Feb 16 23:04:26 2023 (1676588666.8 10.3) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3039104640: New connection webhooks client 3039104640: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 22:08:56 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 22:09:24 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 22:09:29 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 23:09:10 2023 (1676588950.4 281.0) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3044913504: New connection webhooks client 3044913504: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 22:08:56 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 22:09:24 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 22:09:29 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 23:15:35 2023 (1676589335.6 666.2) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/btt-octopus-pro-446 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' webhooks client 3044765528: New connection webhooks client 3044765528: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 22:08:56 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 22:09:24 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 22:09:29 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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/btt-octopus-pro-446' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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/btt-octopus-pro-446: [Errno 2] No such file or directory: '/dev/btt-octopus-pro-446' Restarting printer Start printer at Thu Feb 16 23:18:07 2023 (1676589487.1 817.7) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' webhooks client 3040212616: New connection webhooks client 3040212616: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' MCU error during connect Traceback (most recent call last): File "/home/pi/klipper/klippy/mcu.py", line 777, in _mcu_identify self._serial.connect_uart(self._serialport, self._baud, rts) File "/home/pi/klipper/klippy/serialhdl.py", line 182, in connect_uart self._error("Unable to connect") File "/home/pi/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/pi/klipper/klippy/klippy.py", line 176, in _connect self.send_event("klippy:mcu_identify") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 782, in _mcu_identify raise error(str(e)) mcu.error: mcu 'mcu': Unable to connect Build file /home/pi/klipper/klippy/../.config(3066): Thu Feb 16 22:08:56 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_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=0x8002000 CONFIG_STM32_SELECT=y # CONFIG_MACH_STM32F103 is not set # CONFIG_MACH_STM32F207 is not set # CONFIG_MACH_STM32F401 is not set # CONFIG_MACH_STM32F405 is not set # CONFIG_MACH_STM32F407 is not set # CONFIG_MACH_STM32F429 is not set # CONFIG_MACH_STM32F446 is not set # CONFIG_MACH_STM32F031 is not set # CONFIG_MACH_STM32F042 is not set # CONFIG_MACH_STM32F070 is not set # CONFIG_MACH_STM32F072 is not set # CONFIG_MACH_STM32G070 is not set # CONFIG_MACH_STM32G071 is not set # CONFIG_MACH_STM32G0B0 is not set CONFIG_MACH_STM32G0B1=y # CONFIG_MACH_STM32G431 is not set # CONFIG_MACH_STM32H723 is not set # CONFIG_MACH_STM32H743 is not set # CONFIG_MACH_STM32H750 is not set # CONFIG_MACH_STM32L412 is not set CONFIG_MACH_STM32G0=y CONFIG_MACH_STM32G0Bx=y CONFIG_HAVE_STM32_USBFS=y CONFIG_HAVE_STM32_FDCANBUS=y CONFIG_HAVE_STM32_USBCANBUS=y CONFIG_STM32_DFU_ROM_ADDRESS=0 CONFIG_STM32_FLASH_START_2000=y # CONFIG_STM32_FLASH_START_0000 is not set CONFIG_STM32_CLOCK_REF_8M=y # CONFIG_STM32_CLOCK_REF_12M is not set # CONFIG_STM32_CLOCK_REF_16M is not set # CONFIG_STM32_CLOCK_REF_20M is not set # CONFIG_STM32_CLOCK_REF_25M is not set # CONFIG_STM32_CLOCK_REF_INTERNAL is not set CONFIG_CLOCK_REF_FREQ=8000000 CONFIG_STM32F0_TRIM=16 # CONFIG_STM32_USB_PA11_PA12 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_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=y # 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_STM32_CANBUS_PD0_PD1=y CONFIG_USB_VENDOR_ID=0x1d50 CONFIG_USB_DEVICE_ID=0x614e CONFIG_USB_SERIAL_NUMBER="12345" CONFIG_CANSERIAL=y CONFIG_CANBUS=y CONFIG_CANBUS_FREQUENCY=500000 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_GPIO_BITBANGING=y CONFIG_HAVE_STRICT_TIMING=y CONFIG_HAVE_CHIPID=y CONFIG_HAVE_STEPPER_BOTH_EDGE=y CONFIG_HAVE_BOOTLOADER_REQUEST=y CONFIG_INLINE_STEPPER_HACK=y ======================= Build file /home/pi/klipper/klippy/../out/klipper.dict(7898): Thu Feb 16 22:09:24 2023 Last MCU build version: v0.11.0-110-gaca0c71a Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34 Last MCU build config: ADC_MAX=4095 BUS_PINS_i2c1_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=500000 CLOCK_FREQ=64000000 MCU=stm32g0b1xx PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_CAN=PD0,PD1 RESERVE_PINS_crystal=PF0,PF1 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1 Build file /home/pi/klipper/klippy/../out/klipper.elf(1039476): Thu Feb 16 22:09:29 2023 Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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-CanBoot_stm32f446xx_300008001650335331383520-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' Restarting printer Start printer at Thu Feb 16 23:24:41 2023 (1676589881.2 1211.8) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = baud = 250000 canbus_uuid = canbus_interface = [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 145, in _read_config pconfig.check_unused_options(config) File "/home/pi/klipper/klippy/configfile.py", line 304, in check_unused_options raise error("Option '%s' is not valid in section '%s'" configparser.Error: Option 'serial' is not valid in section 'mcu' webhooks client 3040906784: New connection webhooks client 3040906784: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Unable to issue reset command on MCU 'mcu' Unable to issue reset command on MCU 'EBBCan' webhooks client 3040906784: Disconnected Restarting printer Start printer at Thu Feb 16 23:30:09 2023 (1676590209.7 1540.3) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00 baud = 250000 canbus_interface = can0 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 145, in _read_config pconfig.check_unused_options(config) File "/home/pi/klipper/klippy/configfile.py", line 304, in check_unused_options raise error("Option '%s' is not valid in section '%s'" configparser.Error: Option 'canbus_interface' is not valid in section 'mcu' webhooks client 3040101928: New connection webhooks client 3040101928: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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-CanBoot_stm32f446xx_300008001650335331383520-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' Restarting printer Start printer at Thu Feb 16 23:30:33 2023 (1676590233.1 1563.7) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' webhooks client 3044914296: New connection webhooks client 3044914296: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' Attempting MCU 'mcu' reset Unhandled exception during post run Traceback (most recent call last): File "/home/pi/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-CanBoot_stm32f446xx_300008001650335331383520-if00' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 234, in run self.send_event("klippy:firmware_restart") File "/home/pi/klipper/klippy/klippy.py", line 263, in send_event return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/klippy.py", line 263, in return [cb(*params) for cb in self.event_handlers.get(event, [])] File "/home/pi/klipper/klippy/mcu.py", line 931, in _firmware_restart self._restart_arduino() File "/home/pi/klipper/klippy/mcu.py", line 891, in _restart_arduino serialhdl.arduino_reset(self._serialport, self._reactor) File "/home/pi/klipper/klippy/serialhdl.py", line 379, in arduino_reset ser = serial.Serial(serialport, 2400, timeout=0, exclusive=True) File "/home/pi/klippy-env/lib/python3.9/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/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-CanBoot_stm32f446xx_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-CanBoot_stm32f446xx_300008001650335331383520-if00' Restarting printer Start printer at Thu Feb 16 23:31:44 2023 (1676590304.5 1635.1) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 139, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/mcu.py", line 1008, in add_printer_objects printer.add_object('mcu', MCU(config.getsection('mcu'), mainsync)) File "/home/pi/klipper/klippy/mcu.py", line 554, in __init__ self._serialport = config.get('serial') File "/home/pi/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/pi/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'serial' in section 'mcu' must be specified webhooks client 3040203944: New connection webhooks client 3040203944: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} Starting Klippy... Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-I', '/home/pi/printer_data/comms/klippy.serial', '-l', '/home/pi/printer_data/logs/klippy.log', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-110-gaca0c71a' CPU: 4 core ARMv7 Processor rev 3 (v7l) Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' Start printer at Thu Feb 16 23:37:26 2023 (1676590646.4 9.9) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Config error Traceback (most recent call last): File "/home/pi/klipper/klippy/klippy.py", line 175, in _connect self._read_config() File "/home/pi/klipper/klippy/klippy.py", line 139, in _read_config m.add_printer_objects(config) File "/home/pi/klipper/klippy/mcu.py", line 1008, in add_printer_objects printer.add_object('mcu', MCU(config.getsection('mcu'), mainsync)) File "/home/pi/klipper/klippy/mcu.py", line 554, in __init__ self._serialport = config.get('serial') File "/home/pi/klipper/klippy/configfile.py", line 57, in get return self._get_wrapper(self.fileconfig.get, option, default, File "/home/pi/klipper/klippy/configfile.py", line 32, in _get_wrapper raise error("Option '%s' in section '%s' must be specified" configparser.Error: Option 'serial' in section 'mcu' must be specified webhooks client 3043917656: New connection webhooks client 3043917656: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} webhooks client 3043917656: Disconnected Restarting printer Start printer at Thu Feb 16 23:44:49 2023 (1676591089.7 441.0) ===== Config file ===== [virtual_sdcard] path = ~/gcode_files on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set allow_park = False if not macro_found else False if client.park_at_cancel is not defined else True if client.park_at_cancel|lower == 'true' else False %} {% set retract = 5.0 if not macro_found else client.cancel_retract|default(5.0)|abs %} {% if not printer.pause_resume.is_paused and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE gcode = PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = velocity if not macro_found else client.speed_move|default(velocity) %} _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_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable':True, 'call':params.MACRO|default("PAUSE")}}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% if params.LAYER is defined %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': True, 'layer':params.LAYER|int, 'call':params.MACRO|default("PAUSE")}}" {% else %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer':0, 'call':"PAUSE"}}" {% endif %} [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = {'enable':False, 'call':"PAUSE"} variable_pause_at_layer = {'enable':False, 'layer':0, 'call':"PAUSE"} gcode = {% if pause_next_layer.enable %} {action_respond_info("%s, forced by pause_next_layer" % pause_next_layer.call)} {pause_next_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{'enable': False, 'call':"PAUSE"}}" {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} {action_respond_info("%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer))} {pause_at_layer.call} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{'enable': False, 'layer': 0, 'call':"PAUSE"}}" {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = False if not macro_found else False if client.use_custom_pos is not defined else True if client.use_custom_pos|lower == 'true' else False %} {% set custom_park_x = 0.0 if not macro_found else client.custom_park_x|default(0.0) %} {% set custom_park_y = 0.0 if not macro_found else client.custom_park_y|default(0.0) %} {% set park_dz = 2.0 if not macro_found else client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = 900 if not macro_found else client.speed_hop|default(15) * 60 %} {% set sp_move = velocity * 60 if not macro_found else client.speed_move|default(velocity) * 60 %} {% set act = printer.toolhead.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]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} {action_respond_info("Printer not homed")} {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set use_fw_retract = False if not macro_found else False if client.use_fw_retract is not defined else True if client.use_fw_retract|lower == 'true' and printer.firmware_retraction is defined else False %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.unretract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_unretract|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.extruder.can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set macro_found = True if printer['gcode_macro _CLIENT_VARIABLE'] is defined else False %} {% set client = printer['gcode_macro _CLIENT_VARIABLE'] %} {% set length = (params.LENGTH|float) if params.LENGTH is defined else 1.0 if not macro_found else client.retract|default(1.0) %} {% set speed = params.SPEED if params.SPEED is defined else 35 if not macro_found else client.speed_retract|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [mcu] serial = /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00 baud = 250000 [printer] kinematics = corexy max_velocity = 300 max_accel = 2000 max_accel_to_decel = 1000 max_z_velocity = 30 max_z_accel = 500 square_corner_velocity = 5 [board_pins octopus_pro_446_tmc2209] aliases = x_step_pin=PF13, x_dir_pin=PF12, x_enable_pin=PF14, x_uart_pin=PC4, x_diag_pin=PG6, x_endstop_pin=PG6, y_step_pin=PG0, y_dir_pin=PG1, y_enable_pin=PF15, y_uart_pin=PD11, y_diag_pin=PG9, y_endstop_pin=PG9, z0_step_pin=PC13, z0_dir_pin=PF0, z0_enable_pin=PF1, z0_uart_pin=PE4, z0_diag_pin=null, z1_step_pin=PE2, z1_dir_pin=PE3, z1_enable_pin=PD4, z1_uart_pin=PE1, z1_diag_pin=null, z2_step_pin=PE6, z2_dir_pin=PA14, z2_enable_pin=PE0, z2_uart_pin=PD3, z2_diag_pin=null, e_step_pin=PF11, e_dir_pin=PG3, e_enable_pin=PG5, e_uart_pin=PC6, e_diag_pin=null, e_heater_pin=PA2, e_sensor_pin=PF4, stepper_spi_mosi_pin=PA7, stepper_spi_miso_pin=PA6, stepper_spi_sclk_pin=PA5, bltouch_sensor_pin=PB7, bltouch_control_pin=PB6, fan_controller_board_pin=PD12, heater_bed_heating_pin=PA1, heater_bed_sensor_pin=PF3, EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=, EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>, EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=, EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=, EXP2_10=PC5, [temperature_sensor Octopus_Pro_446] sensor_type = temperature_mcu min_temp = 0 max_temp = 100 [mcu EBBCan] canbus_uuid = 0cdeaa5afe81 [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 = EBBCan: PD0 dir_pin = !EBBCan: PD1 enable_pin = !EBBCan: PD2 microsteps = 16 rotation_distance = 33.500 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = EBBCan: PA2 sensor_type = EPCOS 100K B57560G104F sensor_pin = EBBCan: PA3 control = pid pid_kp = 21.527 pid_ki = 1.063 pid_kd = 108.982 min_temp = 0 max_temp = 250 [tmc2209 extruder] uart_pin = EBBCan: PA15 run_current = 0.650 stealthchop_threshold = 999999 [fan] pin = EBBCan: PA0 [heater_fan hotend_fan] pin = EBBCan: PA1 heater = extruder heater_temp = 50.0 [idle_timeout] gcode = {% if printer.webhooks.state|lower == 'ready' %} {% if printer.pause_resume.is_paused|lower == 'false' %} M117 Idle timeout reached TURN_OFF_HEATERS M84 {% endif %} {% endif %} timeout = 7200 [temperature_sensor raspberry_pi] sensor_type = temperature_host [skew_correction] [input_shaper] [force_move] enable_force_move = True [respond] [heater_bed] heater_pin = heater_bed_heating_pin sensor_pin = heater_bed_sensor_pin sensor_type = Generic 3950 min_temp = 0 max_temp = 120 pwm_cycle_time = 0.02 control = pid pid_kp = 22.2 pid_ki = 1.08 pid_kd = 114 [controller_fan controller_fan] pin = fan_controller_board_pin [stepper_x] step_pin = x_step_pin dir_pin = x_dir_pin enable_pin = !x_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !x_endstop_pin position_max = 500 position_endstop = 0 [stepper_y] step_pin = y_step_pin dir_pin = !y_dir_pin enable_pin = !y_enable_pin rotation_distance = 40 microsteps = 64 homing_speed = 50 homing_retract_dist = 5.0 endstop_pin = !y_endstop_pin homing_positive_dir = true position_max = 500 position_endstop = 500 [stepper_z] endstop_pin = probe:z_virtual_endstop step_pin = z0_step_pin dir_pin = !z0_dir_pin enable_pin = !z0_enable_pin rotation_distance = 4 microsteps = 64 position_min = -5 homing_speed = 10 position_max = 500 [stepper_z1] step_pin = z1_step_pin dir_pin = !z1_dir_pin enable_pin = !z1_enable_pin rotation_distance = 4 microsteps = 64 [stepper_z2] step_pin = z2_step_pin dir_pin = !z2_dir_pin enable_pin = !z2_enable_pin rotation_distance = 4 microsteps = 64 [tmc2209 stepper_x] uart_pin = x_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 stealthchop_threshold = 0 interpolate = False [tmc5160 stepper_y] cs_pin = y_uart_pin spi_software_mosi_pin = stepper_spi_mosi_pin spi_software_miso_pin = stepper_spi_miso_pin spi_software_sclk_pin = stepper_spi_sclk_pin run_current = 1.6 driver_tbl = 2 driver_toff = 3 driver_hend = 0 driver_hstrt = 6 stealthchop_threshold = 0 interpolate = False [tmc2209 stepper_z] uart_pin = z0_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z1] uart_pin = z1_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [tmc2209 stepper_z2] uart_pin = z2_uart_pin run_current = 1.1 driver_tbl = 1 driver_toff = 3 driver_hend = 0 driver_hstrt = 0 interpolate = False stealthchop_threshold = 0 [probe] pin = ^EBBCan:PB8 x_offset = -29.8 y_offset = -13.5 speed = 5 samples = 3 sample_retract_dist = 2 lift_speed = 5.0 samples_result = median samples_tolerance = 0.02 samples_tolerance_retries = 5 z_offset = 2.435 [safe_z_home] home_xy_position = 250,250 speed = 135 z_hop = 12 [bed_mesh] horizontal_move_z = 5 mesh_min = 20,20 mesh_max = 465,460 probe_count = 7,7 fade_start = 1.0 fade_end = 10.0 mesh_pps = 2,2 algorithm = bicubic bicubic_tension = .2 speed = 200 [z_tilt] z_positions = 0,0 250,500 500,0 points = 60,60 285,470 460,60 horizontal_move_z = 12 retries = 10 retry_tolerance = 0.02 speed = 200 [firmware_retraction] retract_speed = 60 unretract_extra_length = 0 unretract_speed = 60 retract_length = 0.5 [bed_mesh default] version = 1 points = 0.052597, -0.087716, -0.142403, -0.171466, -0.148653, -0.048966, 0.052909 -0.013028, -0.109903, -0.131466, -0.133653, -0.094278, -0.003966, 0.077909 -0.085841, -0.136778, -0.128653, -0.112716, -0.062716, 0.031034, 0.107284 -0.172403, -0.185841, -0.150841, -0.099591, -0.028341, 0.072597, 0.158847 -0.235841, -0.222716, -0.155841, -0.092091, -0.003028, 0.092284, 0.186972 -0.286153, -0.245216, -0.163341, -0.082716, 0.014159, 0.127597, 0.223534 -0.296466, -0.223341, -0.108653, -0.000528, 0.094784, 0.201347, 0.307284 tension = 0.2 min_x = 20.0 algo = bicubic y_count = 7 mesh_y_pps = 2 min_y = 20.0 x_count = 7 max_y = 459.98 mesh_x_pps = 2 max_x = 464.96 ======================= Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00' webhooks client 3037983432: New connection webhooks client 3037983432: Client info {'program': 'Moonraker', 'version': 'v0.7.1-876-g87dba2f'} mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00' mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_Klipper_firmware_300008001650335331383520-if00'