Aller au contenu

Messages recommandés

Posté(e)

Bonjour, je me suis lancée et j'ai enfin franchie le cap de l'installation Guilouz pour ma V400 (carte mère nano v2.1), mais à la fin j'obtiens ceci : (voir image)

je ne comprends où sa cloche !? Quels fichiers je dois vous copier pour que vous jetiez un œil ?, j'ai refais l'installation 2 fois et toujours pareil (je n'ai pas oublié de flasher ma carte mère). >Pour le dossier config j'ai choisi le mks robin nano 2.0 - trianglelab chc (ne sachant pas vraiment si c'est le bon), Pouvez vous m'aider ? merci Séverine

image.png.e3aa5bbb5c805554213dc96a1c6ebe1c.png

Posté(e)
il y a 12 minutes, Sevene61 a dit :

Bonjour, je me suis lancée et j'ai enfin franchie le cap de l'installation Guilouz pour ma V400 (carte mère nano v2.1), mais à la fin j'obtiens ceci : (voir image)

je ne comprends où sa cloche !? Quels fichiers je dois vous copier pour que vous jetiez un œil ?, j'ai refais l'installation 2 fois et toujours pareil (je n'ai pas oublié de flasher ma carte mère). >Pour le dossier config j'ai choisi le mks robin nano 2.0 - trianglelab chc (ne sachant pas vraiment si c'est le bon), Pouvez vous m'aider ? merci Séverine

 

Dans le printer cfg il te faut déclarer la carte mère 

Exemple: serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0

  • +1 1
Posté(e)

J'y ai pensé, j'ai ça

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command

Mais j'ai un truc qui me chiffonne : dans le fichier moonraker.conf ligne 2 host 0.0.0.0 c'est normal ?!

 

FICHIER LOG MOONRAKER :

Révélation

-------------------- Log Start | Sun Jun 16 12:25:46 2024 --------------------
platform: Linux-4.9.191-aarch64-with-glibc2.31
data_path: /home/pi/printer_data
is_default_data_path: False
config_file: /home/pi/printer_data/config/moonraker.conf
startup_warnings: []
verbose: False
debug: False
asyncio_debug: False
is_backup_config: False
is_python_package: False
instance_uuid: 5042d2eac3814555a45c547938ef75a2
unix_socket_path: /home/pi/printer_data/comms/moonraker.sock
software_version: v0.8.0-379-g346a3d7
git_branch: master
git_remote: origin
git_repo_url: https://github.com/Arksine/moonraker.git
modified_files: []
unofficial_components: []
log_file: /home/pi/printer_data/logs/moonraker.log
python_version: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]
launch_args: /home/pi/moonraker-env/bin/python /home/pi/moonraker/moonraker/moonraker.py -d /home/pi/printer_data
msgspec_enabled: False
uvloop_enabled: False
2024-06-16 14:25:46,593 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 446 B
2024-06-16 14:25:46,593 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 14:25:46,765 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 14:25:46,775 [server.py:load_component()] - Component (template) loaded
2024-06-16 14:25:46,786 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 14:25:47,420 [server.py:load_component()] - Component (application) loaded
2024-06-16 14:25:47,462 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 14:25:47,535 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 14:25:47,610 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 14:25:47,639 [server.py:add_log_rollover_item()] - Created default SQL table namespace_store
2024-06-16 14:25:47,647 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 0
2024-06-16 14:25:47,658 [server.py:load_component()] - Component (database) loaded
2024-06-16 14:25:47,790 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 14:25:47,827 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 14:25:47,890 [database.py:register_table()] - Creating table authorized_users...
2024-06-16 14:25:47,918 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 14:25:47,924 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 14:25:47,941 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 14:25:48,392 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 14:25:48,409 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 14:25:48,410 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 14:25:48,424 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 14:25:48,424 [server.py:load_component()] - Component (machine) loaded
2024-06-16 14:25:48,435 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 14:25:48,451 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 14:25:48,452 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 14:25:48,458 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 14:25:48,474 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 14:25:48,498 [database.py:register_table()] - Creating table job_history...
2024-06-16 14:25:48,516 [database.py:register_table()] - Creating table job_totals...
2024-06-16 14:25:48,524 [history.py:migrate()] - Migrating history totals from moonraker namespace...
2024-06-16 14:25:48,542 [server.py:load_component()] - Component (history) loaded
2024-06-16 14:25:48,566 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 14:25:48,599 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 14:25:48,620 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 14:25:48,633 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 14:25:48,651 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 14:25:48,887 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 14:25:48,892 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 14:25:48,901 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 14:25:48,903 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 14:25:48,922 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 14:25:48,933 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 14:25:48,934 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 14:25:48,936 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 14:25:48,938 [machine.py:update_usb_ids()] - Fetching latest usb.ids file...
2024-06-16 14:25:48,949 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 14:25:49,271 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 14:25:49,292 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 14:25:49,295 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:25:49,384 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'network-online.target', 'sysinit.target']
**After=['basic.target', 'systemd-journald.socket', 'system.slice', '-.mount', 'network-online.target', 'sysinit.target']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 14:25:49,384 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 14:25:49,384 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 14:25:49,415 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 14:25:49,422 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 14:25:49,422 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:25:49,425 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 14:25:49,425 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 14:25:49,476 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 14:25:49,492 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 14:25:49,497 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 14:25:49,502 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 14:25:49,504 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 14:25:49,759 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 14:25:49,854 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['basic.target', 'systemd-journald.socket', 'system.slice', '-.mount', 'network-online.target', 'sysinit.target']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 14:25:50,108 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 14:25:50,126 [machine.py:update_usb_ids()] - Writing usb.ids file...
2024-06-16 14:25:50,148 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 14:25:50,152 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 14:25:50,155 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 14:25:51,818 [base_deploy.py:log_info()] - PackageKit: Detected 0 package updates:

2024-06-16 14:25:51,852 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker status --porcelain -b) successfully finished
2024-06-16 14:25:51,875 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker branch --list --no-color) successfully finished
2024-06-16 14:25:51,917 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker remote get-url origin) successfully finished
2024-06-16 14:25:52,914 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker fetch origin --prune --progress) successfully finished
2024-06-16 14:25:52,959 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker merge-base --is-ancestor HEAD origin/master) successfully finished
2024-06-16 14:25:52,982 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker rev-parse HEAD) successfully finished
2024-06-16 14:25:53,027 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker describe --always --tags --long --dirty --abbrev=8) successfully finished
2024-06-16 14:25:53,048 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker rev-parse origin/master) successfully finished
2024-06-16 14:25:53,089 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker describe origin/master --always --tags --long --abbrev=8) successfully finished
2024-06-16 14:25:53,112 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker rev-list HEAD..346a3d7c9dca6499bdef2957ca39a23c702b0268 --count) successfully finished
2024-06-16 14:25:53,113 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:25:53,113 [base_deploy.py:log_info()] - Git Repo moonraker: Channel: dev
2024-06-16 14:25:53,114 [base_deploy.py:log_info()] - Git Repo moonraker: Validity check for git repo passed
2024-06-16 14:25:53,204 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper status --porcelain -b) successfully finished
2024-06-16 14:25:53,227 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper branch --list --no-color) successfully finished
2024-06-16 14:25:53,269 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper remote get-url origin) successfully finished
2024-06-16 14:25:53,878 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper fetch origin --prune --progress) successfully finished
2024-06-16 14:25:53,901 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper merge-base --is-ancestor HEAD origin/master) successfully finished
2024-06-16 14:25:53,923 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper rev-parse HEAD) successfully finished
2024-06-16 14:25:54,128 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper describe --always --tags --long --dirty --abbrev=8) successfully finished
2024-06-16 14:25:54,152 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper rev-parse origin/master) successfully finished
2024-06-16 14:25:54,327 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper describe origin/master --always --tags --long --abbrev=8) successfully finished
2024-06-16 14:25:54,353 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper rev-list HEAD..433fcb6f249406c8b5e2f25d1e870809beeafb40 --count) successfully finished
2024-06-16 14:25:54,354 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:25:54,354 [base_deploy.py:log_info()] - Git Repo klipper: Channel: dev
2024-06-16 14:25:54,354 [base_deploy.py:log_info()] - Git Repo klipper: Validity check for git repo passed
2024-06-16 14:26:02,445 [server.py:_handle_term_signal()] - Exiting with signal SIGTERM
2024-06-16 14:26:02,548 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 14:26:02,576 [server.py:main()] - Server Shutdown
-------------------- Log Start | Sun Jun 16 12:26:03 2024 --------------------
platform: Linux-4.9.191-aarch64-with-glibc2.31
data_path: /home/pi/printer_data
is_default_data_path: False
config_file: /home/pi/printer_data/config/moonraker.conf
startup_warnings: []
verbose: False
debug: False
asyncio_debug: False
is_backup_config: False
is_python_package: False
instance_uuid: 5042d2eac3814555a45c547938ef75a2
unix_socket_path: /home/pi/printer_data/comms/moonraker.sock
software_version: v0.8.0-379-g346a3d7
git_branch: master
git_remote: origin
git_repo_url: https://github.com/Arksine/moonraker.git
modified_files: []
unofficial_components: []
log_file: /home/pi/printer_data/logs/moonraker.log
python_version: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]
launch_args: /home/pi/moonraker-env/bin/python /home/pi/moonraker/moonraker/moonraker.py -d /home/pi/printer_data
msgspec_enabled: False
uvloop_enabled: False
2024-06-16 14:26:03,470 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 545 B
2024-06-16 14:26:03,471 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 14:26:03,596 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 14:26:03,604 [server.py:load_component()] - Component (template) loaded
2024-06-16 14:26:03,615 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 14:26:04,138 [server.py:load_component()] - Component (application) loaded
2024-06-16 14:26:04,164 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 14:26:04,227 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 14:26:04,238 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 14:26:04,242 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 0
2024-06-16 14:26:04,247 [server.py:load_component()] - Component (database) loaded
2024-06-16 14:26:04,274 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 14:26:04,310 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 14:26:04,341 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 14:26:04,345 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 14:26:04,351 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 14:26:04,358 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 14:26:04,710 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 14:26:04,714 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 14:26:04,714 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 14:26:04,730 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 14:26:04,730 [server.py:load_component()] - Component (machine) loaded
2024-06-16 14:26:04,734 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 14:26:04,737 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 14:26:04,738 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 14:26:04,740 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 14:26:04,747 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 14:26:04,750 [database.py:register_table()] - Found registered table job_history
2024-06-16 14:26:04,751 [database.py:register_table()] - Found registered table job_totals
2024-06-16 14:26:04,755 [server.py:load_component()] - Component (history) loaded
2024-06-16 14:26:04,763 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 14:26:04,770 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 14:26:04,775 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 14:26:04,780 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 14:26:04,855 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 14:26:04,860 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 14:26:04,871 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 14:26:04,879 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 14:26:04,881 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 14:26:04,899 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 14:26:04,917 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 14:26:04,918 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 14:26:04,921 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 14:26:04,922 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 14:26:05,230 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 14:26:05,249 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 14:26:05,252 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:26:05,339 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'network-online.target', 'sysinit.target']
**After=['basic.target', 'systemd-journald.socket', 'system.slice', '-.mount', 'network-online.target', 'sysinit.target']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 14:26:05,339 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 14:26:05,339 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 14:26:05,365 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 14:26:05,372 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 14:26:05,373 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:26:05,377 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 14:26:05,377 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 14:26:05,381 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['basic.target', 'systemd-journald.socket', 'system.slice', '-.mount', 'network-online.target', 'sysinit.target']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 14:26:05,429 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 14:26:05,431 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:26:05,434 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:26:05,440 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 23 Hours, 59 Minutes, 46 Seconds
2024-06-16 14:26:05,440 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 23 Hours, 59 Minutes, 48 Seconds
2024-06-16 14:26:05,440 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 23 Hours, 59 Minutes, 49 Seconds
2024-06-16 14:26:05,447 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 14:26:05,451 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 14:26:05,453 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 14:26:05,454 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 14:26:05,571 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 14:26:05,709 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 14:26:06,089 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 14:26:06,135 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 14:26:06,137 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 14:26:06,140 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 14:44:49,944 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 14:44:49,963 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 6.04ms
2024-06-16 14:44:49,964 [websockets.py:open()] - Websocket Opened: ID: 4101408440, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 14:44:50,030 [websockets.py:_handle_identify()] - Websocket 4101408440 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 14:44:55,566 [server.py:_handle_term_signal()] - Exiting with signal SIGTERM
2024-06-16 14:44:55,626 [websockets.py:on_close()] - Websocket Closed: ID: 4101408440 Close Code: None, Close Reason: None, Pong Time Elapsed: 5.67
2024-06-16 14:44:55,628 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 14:44:55,694 [server.py:main()] - Server Shutdown
-------------------- Log Start | Sun Jun 16 12:45:22 2024 --------------------
platform: Linux-4.9.191-aarch64-with-glibc2.31
data_path: /home/pi/printer_data
is_default_data_path: False
config_file: /home/pi/printer_data/config/moonraker.conf
startup_warnings: []
verbose: False
debug: False
asyncio_debug: False
is_backup_config: False
is_python_package: False
instance_uuid: 5042d2eac3814555a45c547938ef75a2
unix_socket_path: /home/pi/printer_data/comms/moonraker.sock
software_version: v0.8.0-379-g346a3d7
git_branch: master
git_remote: origin
git_repo_url: https://github.com/Arksine/moonraker.git
modified_files: []
unofficial_components: []
log_file: /home/pi/printer_data/logs/moonraker.log
python_version: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]
launch_args: /home/pi/moonraker-env/bin/python /home/pi/moonraker/moonraker/moonraker.py -d /home/pi/printer_data
msgspec_enabled: False
uvloop_enabled: False
2024-06-16 14:45:22,075 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 545 B
2024-06-16 14:45:22,076 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 14:45:22,257 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 14:45:22,268 [server.py:load_component()] - Component (template) loaded
2024-06-16 14:45:22,280 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 14:45:23,035 [server.py:load_component()] - Component (application) loaded
2024-06-16 14:45:23,067 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 14:45:23,170 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 14:45:23,188 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 14:45:23,195 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 0
2024-06-16 14:45:23,203 [server.py:load_component()] - Component (database) loaded
2024-06-16 14:45:23,241 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 14:45:23,281 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 14:45:23,326 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 14:45:23,330 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 14:45:23,337 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 14:45:23,345 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 14:45:23,765 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 14:45:23,768 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 14:45:23,769 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 14:45:23,785 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 14:45:23,785 [server.py:load_component()] - Component (machine) loaded
2024-06-16 14:45:23,790 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 14:45:23,794 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 14:45:23,796 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 14:45:23,798 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 14:45:23,805 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 14:45:23,809 [database.py:register_table()] - Found registered table job_history
2024-06-16 14:45:23,810 [database.py:register_table()] - Found registered table job_totals
2024-06-16 14:45:23,814 [server.py:load_component()] - Component (history) loaded
2024-06-16 14:45:23,824 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 14:45:23,832 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 14:45:23,837 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 14:45:23,842 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 14:45:23,927 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 14:45:23,932 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 14:45:23,943 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 14:45:23,951 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 14:45:23,953 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 14:45:24,019 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 14:45:24,031 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 14:45:24,033 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 14:45:24,036 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 14:45:24,038 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 14:45:24,447 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 14:45:24,472 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 14:45:24,475 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:45:24,560 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['network-online.target', 'sysinit.target', 'system.slice']
**After=['sysinit.target', '-.mount', 'network-online.target', 'system.slice', 'systemd-journald.socket', 'basic.target']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 14:45:24,560 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 14:45:24,560 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 14:45:24,593 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 14:45:24,600 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 14:45:24,600 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:45:24,604 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 14:45:24,605 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 14:45:24,609 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['basic.target', 'systemd-journald.socket', 'system.slice', '-.mount', 'network-online.target', 'sysinit.target']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 14:45:24,844 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 14:45:24,847 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:45:24,849 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:45:24,856 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 14:45:24,857 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 23 Hours, 40 Minutes, 27 Seconds
2024-06-16 14:45:24,857 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 23 Hours, 40 Minutes, 28 Seconds
2024-06-16 14:45:24,857 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 23 Hours, 40 Minutes, 29 Seconds
2024-06-16 14:45:24,857 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 23 Hours, 40 Minutes, 41 Seconds
2024-06-16 14:45:24,862 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 14:45:24,863 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 14:45:24,865 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 14:45:25,118 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 14:45:25,209 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['sysinit.target', '-.mount', 'network-online.target', 'system.slice', 'systemd-journald.socket', 'basic.target']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 14:45:25,467 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 14:45:31,248 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 14:45:31,268 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 8.45ms
2024-06-16 14:45:31,269 [websockets.py:open()] - Websocket Opened: ID: 4083067464, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 14:45:31,395 [websockets.py:_handle_identify()] - Websocket 4083067464 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 14:46:29,841 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 14:46:29,846 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 8.77ms
2024-06-16 14:46:29,847 [websockets.py:open()] - Websocket Opened: ID: 4083067392, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 14:46:29,875 [websockets.py:_handle_identify()] - Websocket 4083067392 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 14:46:30,368 [application.py:log_request()] - 404 GET /server/files/config/.theme/default.json?time=1718541989803 (192.168.1.128) [_TRUSTED_USER_] 11.86ms
2024-06-16 14:46:30,371 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718541989804 (192.168.1.128) [_TRUSTED_USER_] 13.04ms
2024-06-16 14:46:52,947 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 14:46:52,954 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 14:46:52,962 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 14:47:24,308 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryQzqZFveAb1BpsZRQ
2024-06-16 14:47:24,347 [application.py:post()] - Processing Uploaded File: moonraker.conf
2024-06-16 14:47:24,364 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 59.31ms
2024-06-16 14:47:24,483 [websockets.py:on_close()] - Websocket Closed: ID: 4083067464 Close Code: 1000, Close Reason: None, Pong Time Elapsed: 3.21
2024-06-16 14:47:24,488 [websockets.py:on_close()] - Websocket Closed: ID: 4083067392 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 4.63
2024-06-16 14:47:24,493 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 14:47:25,029 [server.py:main()] - Attempting Server Restart...
2024-06-16 14:47:25,045 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 14:47:25,046 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 14:47:25,051 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 14:47:25,052 [server.py:load_component()] - Component (template) loaded
2024-06-16 14:47:25,056 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 14:47:25,059 [server.py:load_component()] - Component (application) loaded
2024-06-16 14:47:25,060 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 14:47:25,062 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 14:47:25,064 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 14:47:25,068 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 0
2024-06-16 14:47:25,070 [server.py:load_component()] - Component (database) loaded
2024-06-16 14:47:25,074 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 14:47:25,105 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 14:47:25,105 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 14:47:25,108 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 14:47:25,111 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 14:47:25,112 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 14:47:25,146 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 14:47:25,146 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 14:47:25,147 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 14:47:25,153 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 14:47:25,154 [server.py:load_component()] - Component (machine) loaded
2024-06-16 14:47:25,155 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 14:47:25,156 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 14:47:25,157 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 14:47:25,157 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 14:47:25,159 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 14:47:25,160 [database.py:register_table()] - Found registered table job_history
2024-06-16 14:47:25,161 [database.py:register_table()] - Found registered table job_totals
2024-06-16 14:47:25,163 [server.py:load_component()] - Component (history) loaded
2024-06-16 14:47:25,164 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 14:47:25,172 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 14:47:25,173 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 14:47:25,174 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 14:47:25,181 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 14:47:25,187 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 14:47:25,194 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 14:47:25,198 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 14:47:25,201 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 14:47:25,203 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 14:47:25,219 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 14:47:25,231 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 14:47:25,232 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 14:47:25,234 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 14:47:25,236 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 14:47:25,506 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 14:47:25,525 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 14:47:25,528 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:47:25,614 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['network-online.target', 'sysinit.target', 'system.slice']
**After=['sysinit.target', '-.mount', 'network-online.target', 'system.slice', 'systemd-journald.socket', 'basic.target']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 14:47:25,614 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 14:47:25,614 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 14:47:25,638 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 14:47:25,645 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 14:47:25,646 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:47:25,649 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 14:47:25,649 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 14:47:25,652 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['sysinit.target', '-.mount', 'network-online.target', 'system.slice', 'systemd-journald.socket', 'basic.target']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 14:47:25,702 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 14:47:25,705 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:47:25,707 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:47:25,713 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 14:47:25,716 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 23 Hours, 38 Minutes, 26 Seconds
2024-06-16 14:47:25,716 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 23 Hours, 38 Minutes, 27 Seconds
2024-06-16 14:47:25,716 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 23 Hours, 38 Minutes, 29 Seconds
2024-06-16 14:47:25,716 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 23 Hours, 38 Minutes, 40 Seconds
2024-06-16 14:47:25,738 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 14:47:25,743 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 14:47:25,744 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 14:47:25,746 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 14:47:25,776 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen status --porcelain -b) successfully finished
2024-06-16 14:47:25,798 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen branch --list --no-color) successfully finished
2024-06-16 14:47:25,838 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen remote get-url origin) successfully finished
2024-06-16 14:47:25,999 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 14:47:26,374 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 14:47:26,389 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 14:47:26,392 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 14:47:26,395 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 14:47:26,472 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen fetch origin --prune --progress) successfully finished
2024-06-16 14:47:26,507 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen merge-base --is-ancestor HEAD origin/master) successfully finished
2024-06-16 14:47:26,536 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen rev-parse HEAD) successfully finished
2024-06-16 14:47:26,593 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen describe --always --tags --long --dirty --abbrev=8) successfully finished
2024-06-16 14:47:26,614 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen rev-parse origin/master) successfully finished
2024-06-16 14:47:26,644 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen describe origin/master --always --tags --long --abbrev=8) successfully finished
2024-06-16 14:47:26,667 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen rev-list HEAD..e8fc0dbb0765ffa40619755561d0e09ec5bd8658 --count) successfully finished
2024-06-16 14:47:26,668 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:47:26,668 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Channel: dev
2024-06-16 14:47:26,668 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Validity check for git repo passed
2024-06-16 14:47:29,376 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 14:47:29,404 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 6.76ms
2024-06-16 14:47:29,405 [websockets.py:open()] - Websocket Opened: ID: 4072612024, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 14:47:29,501 [websockets.py:_handle_identify()] - Websocket 4072612024 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 14:47:41,609 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 14:47:41,620 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 14.54ms
2024-06-16 14:47:41,621 [websockets.py:open()] - Websocket Opened: ID: 4072227816, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 14:47:41,642 [websockets.py:_handle_identify()] - Websocket 4072227816 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 14:47:41,694 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718542061542 (192.168.1.128) [_TRUSTED_USER_] 7.77ms
-------------------- Log Start | Sun Jun 16 12:56:26 2024 --------------------
platform: Linux-4.9.191-aarch64-with-glibc2.31
data_path: /home/pi/printer_data
is_default_data_path: False
config_file: /home/pi/printer_data/config/moonraker.conf
startup_warnings: []
verbose: False
debug: False
asyncio_debug: False
is_backup_config: False
is_python_package: False
instance_uuid: 5042d2eac3814555a45c547938ef75a2
unix_socket_path: /home/pi/printer_data/comms/moonraker.sock
software_version: v0.8.0-379-g346a3d7
git_branch: master
git_remote: origin
git_repo_url: https://github.com/Arksine/moonraker.git
modified_files: []
unofficial_components: []
log_file: /home/pi/printer_data/logs/moonraker.log
python_version: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]
launch_args: /home/pi/moonraker-env/bin/python /home/pi/moonraker/moonraker/moonraker.py -d /home/pi/printer_data
msgspec_enabled: False
uvloop_enabled: False
2024-06-16 14:56:26,069 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 14:56:26,070 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 14:56:26,254 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 14:56:26,265 [server.py:load_component()] - Component (template) loaded
2024-06-16 14:56:26,276 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 14:56:27,020 [server.py:load_component()] - Component (application) loaded
2024-06-16 14:56:27,053 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 14:56:27,156 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 14:56:27,173 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 14:56:27,179 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 1
2024-06-16 14:56:27,184 [server.py:load_component()] - Component (database) loaded
2024-06-16 14:56:27,228 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 14:56:27,269 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 14:56:27,308 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 14:56:27,312 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 14:56:27,322 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 14:56:27,331 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 14:56:27,743 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 14:56:27,749 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 14:56:27,750 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 14:56:27,765 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 14:56:27,765 [server.py:load_component()] - Component (machine) loaded
2024-06-16 14:56:27,769 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 14:56:27,772 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 14:56:27,774 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 14:56:27,776 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 14:56:27,783 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 14:56:27,788 [database.py:register_table()] - Found registered table job_history
2024-06-16 14:56:27,789 [database.py:register_table()] - Found registered table job_totals
2024-06-16 14:56:27,794 [server.py:load_component()] - Component (history) loaded
2024-06-16 14:56:27,805 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 14:56:27,816 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 14:56:27,823 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 14:56:27,828 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 14:56:27,838 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 14:56:27,924 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 14:56:27,929 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 14:56:27,937 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 14:56:27,947 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 14:56:27,949 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 14:56:28,016 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 14:56:28,029 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 14:56:28,031 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 14:56:28,033 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 14:56:28,035 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 14:56:28,448 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 14:56:28,473 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 14:56:28,476 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:56:28,563 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target', 'network-online.target']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 14:56:28,563 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 14:56:28,564 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 14:56:28,591 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 14:56:28,599 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 14:56:28,600 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 14:56:28,604 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 14:56:28,604 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 14:56:28,608 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['sysinit.target', '-.mount', 'network-online.target', 'system.slice', 'systemd-journald.socket', 'basic.target']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 14:56:28,909 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 14:56:28,913 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:56:28,916 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:56:28,924 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 14:56:28,928 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 14:56:28,928 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 23 Hours, 29 Minutes, 23 Seconds
2024-06-16 14:56:28,929 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 23 Hours, 29 Minutes, 24 Seconds
2024-06-16 14:56:28,929 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 23 Hours, 29 Minutes, 25 Seconds
2024-06-16 14:56:28,929 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 23 Hours, 29 Minutes, 37 Seconds
2024-06-16 14:56:28,929 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 23 Hours, 50 Minutes, 58 Seconds
2024-06-16 14:56:28,934 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 14:56:28,936 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 14:56:28,938 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 14:56:29,191 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 14:56:29,282 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 14:56:29,537 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 14:56:31,620 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 14:56:31,625 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.07ms
2024-06-16 14:56:31,626 [websockets.py:open()] - Websocket Opened: ID: 4085156328, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 14:56:31,638 [websockets.py:_handle_identify()] - Websocket 4085156328 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 14:56:31,696 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718542591532 (192.168.1.128) [_TRUSTED_USER_] 10.36ms
2024-06-16 14:56:35,256 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 14:56:35,274 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 3.10ms
2024-06-16 14:56:35,275 [websockets.py:open()] - Websocket Opened: ID: 4085155824, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 14:56:35,405 [websockets.py:_handle_identify()] - Websocket 4085155824 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 14:57:56,961 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 14:57:56,967 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 14:57:56,976 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 14:59:25,882 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.65ms
2024-06-16 14:59:25,883 [websockets.py:open()] - Websocket Opened: ID: 4085153880, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 14:59:25,926 [websockets.py:_handle_identify()] - Websocket 4085153880 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 14:59:26,398 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718542765826 (192.168.1.128) [_TRUSTED_USER_] 4.23ms
2024-06-16 14:59:56,978 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryiOQnzH0FvIyRZyAt
2024-06-16 14:59:57,012 [application.py:post()] - Processing Uploaded File: adxl345_fysetc.cfg
2024-06-16 14:59:57,027 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 52.79ms
2024-06-16 14:59:57,047 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryZRQx2ENZ2zEsZWvh
2024-06-16 14:59:57,065 [application.py:post()] - Processing Uploaded File: adxl345_pico.cfg
2024-06-16 14:59:57,076 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 30.62ms
2024-06-16 14:59:57,096 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryOokBHy29d45yrZEX
2024-06-16 14:59:57,114 [application.py:post()] - Processing Uploaded File: KlipperScreen.conf
2024-06-16 14:59:57,125 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 31.43ms
2024-06-16 14:59:57,144 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1PjbnrbPfzyoEsld
2024-06-16 14:59:57,164 [application.py:post()] - Processing Uploaded File: macros.cfg
2024-06-16 14:59:57,175 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 33.02ms
2024-06-16 14:59:57,198 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGqfluydDlm1axCvw
2024-06-16 14:59:57,218 [application.py:post()] - Processing Uploaded File: neopixels.cfg
2024-06-16 14:59:57,229 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 32.75ms
2024-06-16 14:59:57,247 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarymJfY8A4HZoo8gxz5
2024-06-16 14:59:57,267 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 14:59:57,280 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 34.06ms
2024-06-16 15:01:20,466 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryaKeYegev9Qf85CQu
2024-06-16 15:01:20,501 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 15:01:20,509 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 46.89ms
2024-06-16 15:01:21,570 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:01:21,827 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:01:44,365 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryCNP8iCWrB14BRw4T
2024-06-16 15:01:44,404 [application.py:post()] - Processing Uploaded File: moonraker.conf
2024-06-16 15:01:44,427 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 65.52ms
2024-06-16 15:01:44,563 [websockets.py:on_close()] - Websocket Closed: ID: 4085155824 Close Code: 1000, Close Reason: None, Pong Time Elapsed: 9.28
2024-06-16 15:01:44,571 [websockets.py:on_close()] - Websocket Closed: ID: 4085156328 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 2.92
2024-06-16 15:01:44,574 [websockets.py:on_close()] - Websocket Closed: ID: 4085153880 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 8.68
2024-06-16 15:01:44,580 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:01:45,114 [server.py:main()] - Attempting Server Restart...
2024-06-16 15:01:45,129 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 15:01:45,131 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 15:01:45,135 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 15:01:45,136 [server.py:load_component()] - Component (template) loaded
2024-06-16 15:01:45,143 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 15:01:45,149 [server.py:load_component()] - Component (application) loaded
2024-06-16 15:01:45,151 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 15:01:45,156 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 15:01:45,159 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 15:01:45,164 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 1
2024-06-16 15:01:45,169 [server.py:load_component()] - Component (database) loaded
2024-06-16 15:01:45,175 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 15:01:45,216 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 15:01:45,218 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 15:01:45,222 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 15:01:45,226 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 15:01:45,228 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 15:01:45,267 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 15:01:45,268 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 15:01:45,268 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 15:01:45,276 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 15:01:45,276 [server.py:load_component()] - Component (machine) loaded
2024-06-16 15:01:45,278 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 15:01:45,278 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 15:01:45,279 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 15:01:45,280 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 15:01:45,282 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 15:01:45,283 [database.py:register_table()] - Found registered table job_history
2024-06-16 15:01:45,284 [database.py:register_table()] - Found registered table job_totals
2024-06-16 15:01:45,286 [server.py:load_component()] - Component (history) loaded
2024-06-16 15:01:45,287 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 15:01:45,290 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 15:01:45,292 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 15:01:45,293 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 15:01:45,297 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 15:01:45,304 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 15:01:45,310 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 15:01:45,318 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 15:01:45,324 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 15:01:45,325 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 15:01:45,345 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 15:01:45,357 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 15:01:45,359 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 15:01:45,361 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 15:01:45,363 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 15:01:45,643 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 15:01:45,662 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 15:01:45,665 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 15:01:45,753 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target', 'network-online.target']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 15:01:45,753 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 15:01:45,753 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 15:01:45,777 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 15:01:45,784 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 15:01:45,784 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 15:01:45,788 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 15:01:45,788 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 15:01:45,791 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 15:01:45,984 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 15:01:45,987 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:01:45,989 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:01:45,994 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 15:01:45,997 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:01:45,997 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 23 Hours, 24 Minutes, 6 Seconds
2024-06-16 15:01:45,997 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 23 Hours, 24 Minutes, 7 Seconds
2024-06-16 15:01:45,997 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 23 Hours, 24 Minutes, 8 Seconds
2024-06-16 15:01:45,998 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 23 Hours, 24 Minutes, 20 Seconds
2024-06-16 15:01:45,998 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 23 Hours, 45 Minutes, 41 Seconds
2024-06-16 15:01:46,001 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 15:01:46,006 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 15:01:46,008 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 15:01:46,009 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 15:01:46,264 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:01:46,654 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 15:01:47,268 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 15:01:47,273 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 8.31ms
2024-06-16 15:01:47,274 [websockets.py:open()] - Websocket Opened: ID: 4074325544, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 15:01:47,283 [websockets.py:_handle_identify()] - Websocket 4074325544 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 15:01:47,347 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718542907184 (192.168.1.128) [_TRUSTED_USER_] 7.32ms
2024-06-16 15:01:49,549 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 15:01:49,574 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 6.19ms
2024-06-16 15:01:49,576 [websockets.py:open()] - Websocket Opened: ID: 4074327896, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 15:01:49,657 [websockets.py:_handle_identify()] - Websocket 4074327896 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 15:01:58,896 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWePeqxTPK80qYbmd
2024-06-16 15:01:58,938 [application.py:post()] - Processing Uploaded File: KlipperScreen.conf
2024-06-16 15:01:58,962 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 68.76ms
2024-06-16 15:01:59,093 [websockets.py:write_to_socket()] - Websocket closed while writing: 4074327896
2024-06-16 15:01:59,094 [websockets.py:on_close()] - Websocket Closed: ID: 4074327896 Close Code: None, Close Reason: None, Pong Time Elapsed: 9.52
2024-06-16 15:02:03,457 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 3.55ms
2024-06-16 15:02:03,458 [websockets.py:open()] - Websocket Opened: ID: 4074359536, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 15:02:03,523 [websockets.py:_handle_identify()] - Websocket 4074359536 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 15:02:12,650 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:02:13,915 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:02:37,863 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytNZ9p298zIE0dO0U
2024-06-16 15:02:37,901 [application.py:post()] - Processing Uploaded File: variables.cfg
2024-06-16 15:02:37,917 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 57.54ms
2024-06-16 15:02:37,936 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:02:39,201 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:02:57,430 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:02:58,698 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:04:15,202 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryFZiP6Pmx7Va6VAPB
2024-06-16 15:04:15,246 [application.py:post()] - Processing Uploaded File: KlipperScreen.conf
2024-06-16 15:04:15,270 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 71.36ms
2024-06-16 15:04:15,331 [websockets.py:write_to_socket()] - Websocket closed while writing: 4074359536
2024-06-16 15:04:15,331 [websockets.py:on_close()] - Websocket Closed: ID: 4074359536 Close Code: None, Close Reason: None, Pong Time Elapsed: 1.87
2024-06-16 15:04:21,689 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 2.97ms
2024-06-16 15:04:21,690 [websockets.py:open()] - Websocket Opened: ID: 4074301208, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 15:04:21,756 [websockets.py:_handle_identify()] - Websocket 4074301208 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 15:04:29,113 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:04:29,120 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:04:29,129 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:07:49,778 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryZGiZeKkBBCmr8jPP
2024-06-16 15:07:49,817 [application.py:post()] - Processing Uploaded File: moonraker.conf
2024-06-16 15:07:49,834 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 59.67ms
2024-06-16 15:07:49,961 [websockets.py:on_close()] - Websocket Closed: ID: 4074301208 Close Code: 1000, Close Reason: None, Pong Time Elapsed: 8.27
2024-06-16 15:07:49,967 [websockets.py:on_close()] - Websocket Closed: ID: 4074325544 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 2.68
2024-06-16 15:07:49,972 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:07:50,509 [server.py:main()] - Attempting Server Restart...
2024-06-16 15:07:50,524 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 15:07:50,525 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 15:07:50,530 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 15:07:50,531 [server.py:load_component()] - Component (template) loaded
2024-06-16 15:07:50,541 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 15:07:50,546 [server.py:load_component()] - Component (application) loaded
2024-06-16 15:07:50,548 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 15:07:50,552 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 15:07:50,555 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 15:07:50,563 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 1
2024-06-16 15:07:50,568 [server.py:load_component()] - Component (database) loaded
2024-06-16 15:07:50,574 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 15:07:50,617 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 15:07:50,618 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 15:07:50,623 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 15:07:50,627 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 15:07:50,629 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 15:07:50,666 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 15:07:50,667 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 15:07:50,667 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 15:07:50,675 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 15:07:50,675 [server.py:load_component()] - Component (machine) loaded
2024-06-16 15:07:50,676 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 15:07:50,677 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 15:07:50,678 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 15:07:50,678 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 15:07:50,681 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 15:07:50,681 [database.py:register_table()] - Found registered table job_history
2024-06-16 15:07:50,682 [database.py:register_table()] - Found registered table job_totals
2024-06-16 15:07:50,684 [server.py:load_component()] - Component (history) loaded
2024-06-16 15:07:50,685 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 15:07:50,687 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 15:07:50,689 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 15:07:50,690 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 15:07:50,693 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 15:07:50,701 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 15:07:50,707 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 15:07:50,715 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 15:07:50,721 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 15:07:50,723 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 15:07:50,742 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 15:07:50,755 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 15:07:50,757 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 15:07:50,759 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 15:07:50,761 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 15:07:51,125 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 15:07:51,145 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 15:07:51,147 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 15:07:51,235 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target', 'network-online.target']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 15:07:51,235 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 15:07:51,235 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 15:07:51,259 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 15:07:51,267 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 15:07:51,267 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 15:07:51,271 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 15:07:51,271 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 15:07:51,277 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 15:07:51,455 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 15:07:51,457 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:07:51,464 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:07:51,471 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 15:07:51,474 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:07:51,474 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 23 Hours, 18 Minutes
2024-06-16 15:07:51,474 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 23 Hours, 18 Minutes, 2 Seconds
2024-06-16 15:07:51,474 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 23 Hours, 18 Minutes, 3 Seconds
2024-06-16 15:07:51,475 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 23 Hours, 18 Minutes, 14 Seconds
2024-06-16 15:07:51,475 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 23 Hours, 39 Minutes, 35 Seconds
2024-06-16 15:07:51,478 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 15:07:51,483 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 15:07:51,485 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 15:07:51,486 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 15:07:51,741 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:07:52,094 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 15:07:52,098 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.79ms
2024-06-16 15:07:52,100 [websockets.py:open()] - Websocket Opened: ID: 4104093120, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 15:07:52,114 [websockets.py:_handle_identify()] - Websocket 4104093120 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 15:07:52,141 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 15:07:52,176 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718543271990 (192.168.1.128) [_TRUSTED_USER_] 6.28ms
2024-06-16 15:07:52,189 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:07:52,192 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:07:52,195 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:07:54,518 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 15:07:54,544 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 6.26ms
2024-06-16 15:07:54,545 [websockets.py:open()] - Websocket Opened: ID: 4103796360, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 15:07:54,634 [websockets.py:_handle_identify()] - Websocket 4103796360 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 15:10:26,156 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryRBNH54ausWzZdM5f
2024-06-16 15:10:26,191 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 15:10:26,199 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 46.73ms
2024-06-16 15:10:26,229 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:10:27,493 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:11:57,878 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:11:57,885 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:11:57,895 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:12:31,257 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:12:32,525 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:12:44,403 [websockets.py:write_to_socket()] - Websocket closed while writing: 4103796360
2024-06-16 15:12:44,404 [websockets.py:on_close()] - Websocket Closed: ID: 4103796360 Close Code: None, Close Reason: None, Pong Time Elapsed: 9.86
2024-06-16 15:12:48,804 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 3.25ms
2024-06-16 15:12:48,805 [websockets.py:open()] - Websocket Opened: ID: 4072184320, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 15:12:48,867 [websockets.py:_handle_identify()] - Websocket 4072184320 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 15:13:42,870 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary0akClgogOVlS7jPU
2024-06-16 15:13:42,901 [application.py:post()] - Processing Uploaded File: KlipperScreen.conf
2024-06-16 15:13:42,918 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 51.25ms
2024-06-16 15:13:42,998 [websockets.py:write_to_socket()] - Websocket closed while writing: 4072184320
2024-06-16 15:13:42,998 [websockets.py:on_close()] - Websocket Closed: ID: 4072184320 Close Code: None, Close Reason: None, Pong Time Elapsed: 4.19
2024-06-16 15:13:47,263 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 2.75ms
2024-06-16 15:13:47,264 [websockets.py:open()] - Websocket Opened: ID: 4072266168, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 15:13:47,325 [websockets.py:_handle_identify()] - Websocket 4072266168 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 15:14:03,114 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:14:03,117 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:14:03,121 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:14:04,648 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryToa4KtG1yVTqrU24
2024-06-16 15:14:04,685 [application.py:post()] - Processing Uploaded File: moonraker.conf
2024-06-16 15:14:04,702 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 57.13ms
2024-06-16 15:14:04,822 [websockets.py:on_close()] - Websocket Closed: ID: 4072266168 Close Code: 1000, Close Reason: None, Pong Time Elapsed: 7.55
2024-06-16 15:14:04,829 [websockets.py:on_close()] - Websocket Closed: ID: 4104093120 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 2.72
2024-06-16 15:14:04,835 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:14:05,368 [server.py:main()] - Attempting Server Restart...
2024-06-16 15:14:05,378 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 15:14:05,380 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 15:14:05,384 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 15:14:05,386 [server.py:load_component()] - Component (template) loaded
2024-06-16 15:14:05,395 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 15:14:05,400 [server.py:load_component()] - Component (application) loaded
2024-06-16 15:14:05,403 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 15:14:05,407 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 15:14:05,411 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 15:14:05,417 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 1
2024-06-16 15:14:05,422 [server.py:load_component()] - Component (database) loaded
2024-06-16 15:14:05,428 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 15:14:05,471 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 15:14:05,473 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 15:14:05,477 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 15:14:05,480 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 15:14:05,482 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 15:14:05,520 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 15:14:05,521 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 15:14:05,521 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 15:14:05,529 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 15:14:05,529 [server.py:load_component()] - Component (machine) loaded
2024-06-16 15:14:05,530 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 15:14:05,531 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 15:14:05,532 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 15:14:05,532 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 15:14:05,534 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 15:14:05,535 [database.py:register_table()] - Found registered table job_history
2024-06-16 15:14:05,536 [database.py:register_table()] - Found registered table job_totals
2024-06-16 15:14:05,538 [server.py:load_component()] - Component (history) loaded
2024-06-16 15:14:05,540 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 15:14:05,542 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 15:14:05,544 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 15:14:05,545 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 15:14:05,549 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 15:14:05,556 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 15:14:05,562 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 15:14:05,570 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 15:14:05,575 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 15:14:05,576 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 15:14:05,594 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 15:14:05,605 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 15:14:05,607 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 15:14:05,609 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 15:14:05,611 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 15:14:05,886 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 15:14:05,905 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 15:14:05,908 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 15:14:05,995 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target', 'network-online.target']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 15:14:05,995 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 15:14:05,996 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 15:14:06,020 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 15:14:06,028 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 15:14:06,028 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 15:14:06,031 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 15:14:06,032 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 15:14:06,036 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 15:14:06,208 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 15:14:06,210 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:14:06,213 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:14:06,218 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 15:14:06,221 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 15:14:06,221 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 23 Hours, 11 Minutes, 46 Seconds
2024-06-16 15:14:06,221 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 23 Hours, 11 Minutes, 47 Seconds
2024-06-16 15:14:06,221 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 23 Hours, 11 Minutes, 48 Seconds
2024-06-16 15:14:06,222 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 23 Hours, 11 Minutes, 59 Seconds
2024-06-16 15:14:06,222 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 23 Hours, 33 Minutes, 20 Seconds
2024-06-16 15:14:06,225 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 15:14:06,231 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 15:14:06,232 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 15:14:06,234 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 15:14:06,489 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:14:06,881 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 15:14:06,925 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:14:06,928 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:14:06,934 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:14:09,518 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 15:14:09,545 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 6.52ms
2024-06-16 15:14:09,546 [websockets.py:open()] - Websocket Opened: ID: 4074141272, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 15:14:09,638 [websockets.py:_handle_identify()] - Websocket 4074141272 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 15:14:11,567 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 15:14:11,572 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.46ms
2024-06-16 15:14:11,573 [websockets.py:open()] - Websocket Opened: ID: 4074139832, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 15:14:11,581 [websockets.py:_handle_identify()] - Websocket 4074139832 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 15:14:11,642 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718543651466 (192.168.1.128) [_TRUSTED_USER_] 7.56ms
2024-06-16 15:16:14,846 [websockets.py:on_close()] - Websocket Closed: ID: 4074139832 Close Code: 1001, Close Reason: None, Pong Time Elapsed: 3.26
2024-06-16 15:16:15,374 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.59ms
2024-06-16 15:16:15,375 [websockets.py:open()] - Websocket Opened: ID: 4074143384, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 15:16:15,391 [websockets.py:_handle_identify()] - Websocket 4074143384 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 15:16:15,861 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718543775264 (192.168.1.128) [_TRUSTED_USER_] 5.22ms
2024-06-16 15:18:35,852 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:18:37,122 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:19:08,532 [websockets.py:on_close()] - Websocket Closed: ID: 4074143384 Close Code: 1001, Close Reason: None, Pong Time Elapsed: 3.15
2024-06-16 15:20:07,621 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:20:07,627 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:20:07,636 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:29:45,514 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:29:46,781 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:31:17,122 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:31:17,130 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:31:17,139 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:32:57,298 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.51ms
2024-06-16 15:32:57,300 [websockets.py:open()] - Websocket Opened: ID: 4074087328, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 15:32:57,329 [websockets.py:_handle_identify()] - Websocket 4074087328 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 15:32:57,784 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718544777195 (192.168.1.128) [_TRUSTED_USER_] 5.25ms
2024-06-16 15:54:31,339 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.89ms
2024-06-16 15:54:31,340 [websockets.py:open()] - Websocket Opened: ID: 4085204952, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 15:54:31,379 [websockets.py:_handle_identify()] - Websocket 4085204952 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 15:54:31,845 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718546071220 (192.168.1.128) [_TRUSTED_USER_] 4.51ms
2024-06-16 15:54:45,732 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary45chc5NyI1j8thQH
2024-06-16 15:54:45,765 [application.py:post()] - Processing Uploaded File: adxl345_fysetc.cfg
2024-06-16 15:54:45,781 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 53.54ms
2024-06-16 15:54:45,814 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5NY61NA88VRvtEDe
2024-06-16 15:54:45,832 [application.py:post()] - Processing Uploaded File: adxl345_pico.cfg
2024-06-16 15:54:45,844 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 31.27ms
2024-06-16 15:54:45,863 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryklDTy4zfcPA7C1YH
2024-06-16 15:54:45,882 [application.py:post()] - Processing Uploaded File: KlipperScreen.conf
2024-06-16 15:54:45,895 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 33.83ms
2024-06-16 15:54:45,912 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywoqfxneFBrsIE6EI
2024-06-16 15:54:45,930 [application.py:post()] - Processing Uploaded File: macros.cfg
2024-06-16 15:54:45,940 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 29.31ms
2024-06-16 15:54:45,993 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary9GE0GGiW5f4EYbNW
2024-06-16 15:54:46,010 [application.py:post()] - Processing Uploaded File: neopixels.cfg
2024-06-16 15:54:46,020 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 28.92ms
2024-06-16 15:54:46,058 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryXpTqnGDPAb8uGhFy
2024-06-16 15:54:46,080 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 15:54:46,092 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 35.98ms
2024-06-16 15:54:59,829 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryYUq1Pzsjl3vMJOoH
2024-06-16 15:54:59,864 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 15:54:59,880 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 53.92ms
2024-06-16 15:54:59,912 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:54:59,917 [common.py:build_error()] - JSON-RPC Request Error - Requested Method: printer.info, Code: 503, Message: Klippy Host not connected
2024-06-16 15:55:01,181 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:55:03,088 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryjk1n3NddAAwgZHiP
2024-06-16 15:55:03,123 [application.py:post()] - Processing Uploaded File: adxl345_fysetc.cfg
2024-06-16 15:55:03,140 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 54.11ms
2024-06-16 15:55:03,161 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:55:04,430 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:56:34,969 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 15:56:34,972 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 15:56:34,977 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 15:57:43,556 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGfEpAB3FRh9GI4F4
2024-06-16 15:57:43,594 [application.py:post()] - Processing Uploaded File: adxl345_pico.cfg
2024-06-16 15:57:43,612 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 59.25ms
2024-06-16 15:57:43,635 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:57:44,904 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:59:06,503 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary2BmJBvEAxyzq6Ox6
2024-06-16 15:59:06,535 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 15:59:06,553 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 53.20ms
2024-06-16 15:59:06,573 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:59:07,839 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:59:30,068 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGtCuEMbbsE7z5TPl
2024-06-16 15:59:30,100 [application.py:post()] - Processing Uploaded File: adxl345_fysetc.cfg
2024-06-16 15:59:30,117 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 51.43ms
2024-06-16 15:59:30,144 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:59:31,413 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:59:40,623 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS5GX1Y7aHubG3WcB
2024-06-16 15:59:40,659 [application.py:post()] - Processing Uploaded File: adxl345_pico.cfg
2024-06-16 15:59:40,675 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 54.65ms
2024-06-16 15:59:40,728 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 15:59:41,997 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 15:59:57,397 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary2yWRYyqaTXxRmu2M
2024-06-16 15:59:57,434 [application.py:post()] - Processing Uploaded File: KlipperScreen.conf
2024-06-16 15:59:57,452 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 58.09ms
2024-06-16 15:59:57,533 [websockets.py:write_to_socket()] - Websocket closed while writing: 4074141272
2024-06-16 15:59:57,534 [websockets.py:on_close()] - Websocket Closed: ID: 4074141272 Close Code: None, Close Reason: None, Pong Time Elapsed: 7.98
2024-06-16 16:00:01,822 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 3.29ms
2024-06-16 16:00:01,823 [websockets.py:open()] - Websocket Opened: ID: 4072188704, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:00:01,887 [websockets.py:_handle_identify()] - Websocket 4072188704 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 16:00:07,331 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryvaGwdrMngBUnLBfi
2024-06-16 16:00:07,367 [application.py:post()] - Processing Uploaded File: macros.cfg
2024-06-16 16:00:07,384 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 55.55ms
2024-06-16 16:00:07,404 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:00:08,670 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:00:22,563 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySKDkuGGLwc2kVKuO
2024-06-16 16:00:22,606 [application.py:post()] - Processing Uploaded File: neopixels.cfg
2024-06-16 16:00:22,630 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 70.18ms
2024-06-16 16:00:22,659 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:00:23,929 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:00:29,758 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary4mZAnnBhAP4G4als
2024-06-16 16:00:29,797 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 16:00:29,815 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 59.60ms
2024-06-16 16:00:29,848 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:00:31,113 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:00:50,304 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:00:51,601 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:02:25,159 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:02:25,166 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:02:25,178 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:04:05,975 [websockets.py:on_close()] - Websocket Closed: ID: 4074087328 Close Code: 1001, Close Reason: None, Pong Time Elapsed: 8.66
2024-06-16 16:04:06,305 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.37ms
2024-06-16 16:04:06,306 [websockets.py:open()] - Websocket Opened: ID: 4074090400, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 16:04:06,322 [websockets.py:_handle_identify()] - Websocket 4074090400 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 16:04:06,804 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718546646154 (192.168.1.128) [_TRUSTED_USER_] 4.33ms
2024-06-16 16:04:56,039 [websockets.py:on_close()] - Websocket Closed: ID: 4074090400 Close Code: 1001, Close Reason: None, Pong Time Elapsed: 9.72
2024-06-16 16:14:39,741 [websockets.py:on_close()] - Websocket Closed: ID: 4072188704 Close Code: None, Close Reason: None, Pong Time Elapsed: 7.91
2024-06-16 16:14:46,330 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 3.21ms
2024-06-16 16:14:46,331 [websockets.py:open()] - Websocket Opened: ID: 4072318096, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:14:46,399 [websockets.py:_handle_identify()] - Websocket 4072318096 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
-------------------- Log Start | Sun Jun 16 14:16:20 2024 --------------------
platform: Linux-4.9.191-aarch64-with-glibc2.31
data_path: /home/pi/printer_data
is_default_data_path: False
config_file: /home/pi/printer_data/config/moonraker.conf
startup_warnings: []
verbose: False
debug: False
asyncio_debug: False
is_backup_config: False
is_python_package: False
instance_uuid: 5042d2eac3814555a45c547938ef75a2
unix_socket_path: /home/pi/printer_data/comms/moonraker.sock
software_version: v0.8.0-379-g346a3d7
git_branch: master
git_remote: origin
git_repo_url: https://github.com/Arksine/moonraker.git
modified_files: []
unofficial_components: []
log_file: /home/pi/printer_data/logs/moonraker.log
python_version: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]
launch_args: /home/pi/moonraker-env/bin/python /home/pi/moonraker/moonraker/moonraker.py -d /home/pi/printer_data
msgspec_enabled: False
uvloop_enabled: False
2024-06-16 16:16:20,348 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 16:16:20,348 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 16:16:20,537 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 16:16:20,548 [server.py:load_component()] - Component (template) loaded
2024-06-16 16:16:20,559 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 16:16:21,337 [server.py:load_component()] - Component (application) loaded
2024-06-16 16:16:21,374 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 16:16:21,483 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 16:16:21,502 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 16:16:21,508 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 2
2024-06-16 16:16:21,514 [server.py:load_component()] - Component (database) loaded
2024-06-16 16:16:21,552 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 16:16:21,600 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 16:16:21,642 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 16:16:21,646 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 16:16:21,654 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 16:16:21,663 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 16:16:22,083 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 16:16:22,087 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 16:16:22,088 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 16:16:22,103 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 16:16:22,104 [server.py:load_component()] - Component (machine) loaded
2024-06-16 16:16:22,108 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 16:16:22,111 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 16:16:22,113 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 16:16:22,115 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 16:16:22,122 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 16:16:22,126 [database.py:register_table()] - Found registered table job_history
2024-06-16 16:16:22,127 [database.py:register_table()] - Found registered table job_totals
2024-06-16 16:16:22,131 [server.py:load_component()] - Component (history) loaded
2024-06-16 16:16:22,142 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 16:16:22,151 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 16:16:22,158 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 16:16:22,163 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 16:16:22,176 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 16:16:22,260 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 16:16:22,265 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 16:16:22,273 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 16:16:22,286 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 16:16:22,288 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 16:16:22,352 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 16:16:22,365 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 16:16:22,367 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 16:16:22,370 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 16:16:22,372 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 16:16:22,784 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 16:16:22,809 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 16:16:22,812 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:16:22,897 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'network-online.target', 'sysinit.target']
**After=['basic.target', '-.mount', 'network-online.target', 'sysinit.target', 'system.slice', 'systemd-journald.socket']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 16:16:22,897 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 16:16:22,898 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 16:16:22,923 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 16:16:22,930 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 16:16:22,931 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:16:22,934 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 16:16:22,935 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 16:16:22,938 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['sysinit.target', 'system.slice']
**After=['network-online.target', 'systemd-journald.socket', '-.mount', 'basic.target', 'sysinit.target', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 16:16:23,170 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 16:16:23,174 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:16:23,178 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:16:23,185 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 16:16:23,188 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:16:23,189 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 22 Hours, 9 Minutes, 29 Seconds
2024-06-16 16:16:23,189 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 22 Hours, 9 Minutes, 30 Seconds
2024-06-16 16:16:23,189 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 22 Hours, 9 Minutes, 31 Seconds
2024-06-16 16:16:23,190 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 22 Hours, 9 Minutes, 42 Seconds
2024-06-16 16:16:23,190 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 22 Hours, 31 Minutes, 3 Seconds
2024-06-16 16:16:23,193 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 16:16:23,194 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 16:16:23,196 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 16:16:23,452 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:16:23,582 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['basic.target', '-.mount', 'network-online.target', 'sysinit.target', 'system.slice', 'systemd-journald.socket']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 16:16:23,841 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 16:16:29,423 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 16:16:29,443 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 8.85ms
2024-06-16 16:16:29,444 [websockets.py:open()] - Websocket Opened: ID: 4092970944, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:16:29,569 [websockets.py:_handle_identify()] - Websocket 4092970944 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 16:17:51,878 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:17:51,886 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:17:51,894 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:18:05,503 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:18:05,505 [server.py:_handle_term_signal()] - Exiting with signal SIGTERM
2024-06-16 16:18:05,559 [websockets.py:on_close()] - Websocket Closed: ID: 4092970944 Close Code: None, Close Reason: None, Pong Time Elapsed: 6.11
2024-06-16 16:18:05,630 [server.py:main()] - Server Shutdown
-------------------- Log Start | Sun Jun 16 14:18:35 2024 --------------------
platform: Linux-4.9.191-aarch64-with-glibc2.31
data_path: /home/pi/printer_data
is_default_data_path: False
config_file: /home/pi/printer_data/config/moonraker.conf
startup_warnings: []
verbose: False
debug: False
asyncio_debug: False
is_backup_config: False
is_python_package: False
instance_uuid: 5042d2eac3814555a45c547938ef75a2
unix_socket_path: /home/pi/printer_data/comms/moonraker.sock
software_version: v0.8.0-379-g346a3d7
git_branch: master
git_remote: origin
git_repo_url: https://github.com/Arksine/moonraker.git
modified_files: []
unofficial_components: []
log_file: /home/pi/printer_data/logs/moonraker.log
python_version: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]
launch_args: /home/pi/moonraker-env/bin/python /home/pi/moonraker/moonraker/moonraker.py -d /home/pi/printer_data
msgspec_enabled: False
uvloop_enabled: False
2024-06-16 16:18:35,044 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 16:18:35,044 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 16:18:35,238 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 16:18:35,248 [server.py:load_component()] - Component (template) loaded
2024-06-16 16:18:35,259 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 16:18:36,021 [server.py:load_component()] - Component (application) loaded
2024-06-16 16:18:36,058 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 16:18:36,164 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 16:18:36,188 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 16:18:36,194 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 2
2024-06-16 16:18:36,201 [server.py:load_component()] - Component (database) loaded
2024-06-16 16:18:36,243 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 16:18:36,294 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 16:18:36,337 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 16:18:36,341 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 16:18:36,349 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 16:18:36,358 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 16:18:36,781 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 16:18:36,785 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 16:18:36,785 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 16:18:36,801 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 16:18:36,801 [server.py:load_component()] - Component (machine) loaded
2024-06-16 16:18:36,806 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 16:18:36,809 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 16:18:36,810 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 16:18:36,813 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 16:18:36,820 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 16:18:36,823 [database.py:register_table()] - Found registered table job_history
2024-06-16 16:18:36,824 [database.py:register_table()] - Found registered table job_totals
2024-06-16 16:18:36,828 [server.py:load_component()] - Component (history) loaded
2024-06-16 16:18:36,839 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 16:18:36,847 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 16:18:36,852 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 16:18:36,857 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 16:18:36,866 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 16:18:36,953 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 16:18:36,958 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 16:18:36,967 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 16:18:36,977 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 16:18:36,980 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 16:18:37,047 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 16:18:37,059 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 16:18:37,062 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 16:18:37,064 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 16:18:37,066 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 16:18:37,482 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 16:18:37,507 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 16:18:37,510 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:18:37,596 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'network-online.target', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 16:18:37,596 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 16:18:37,597 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 16:18:37,622 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 16:18:37,629 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 16:18:37,630 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:18:37,634 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 16:18:37,634 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 16:18:37,638 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['basic.target', '-.mount', 'network-online.target', 'sysinit.target', 'system.slice', 'systemd-journald.socket']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 16:18:37,846 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 16:18:37,848 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:18:37,851 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:18:37,858 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 16:18:37,861 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:18:37,861 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 22 Hours, 7 Minutes, 14 Seconds
2024-06-16 16:18:37,862 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 22 Hours, 7 Minutes, 15 Seconds
2024-06-16 16:18:37,862 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 22 Hours, 7 Minutes, 16 Seconds
2024-06-16 16:18:37,862 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 22 Hours, 7 Minutes, 28 Seconds
2024-06-16 16:18:37,862 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 22 Hours, 28 Minutes, 49 Seconds
2024-06-16 16:18:37,866 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 16:18:37,868 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 16:18:37,871 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 16:18:38,128 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:18:38,159 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 16:18:38,174 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 19.94ms
2024-06-16 16:18:38,175 [websockets.py:open()] - Websocket Opened: ID: 4106914088, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 16:18:38,229 [websockets.py:_handle_identify()] - Websocket 4106914088 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 16:18:38,286 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718547518057 (192.168.1.128) [_TRUSTED_USER_] 11.16ms
2024-06-16 16:18:38,297 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 16:18:38,555 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 16:18:47,087 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 16:18:47,104 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 5.06ms
2024-06-16 16:18:47,105 [websockets.py:open()] - Websocket Opened: ID: 4087676664, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:18:47,237 [websockets.py:_handle_identify()] - Websocket 4087676664 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 16:20:10,067 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:20:10,073 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:20:10,077 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:20:34,578 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryUqFjuRPTOwbGmtP6
2024-06-16 16:20:34,619 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 16:20:34,644 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 69.29ms
2024-06-16 16:20:34,668 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:20:35,935 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:20:43,773 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:20:45,048 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:21:16,609 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytxhiUl9cSw04C7xJ
2024-06-16 16:21:16,674 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 16:21:16,699 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 93.52ms
2024-06-16 16:21:16,725 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:21:17,991 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:21:23,851 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:21:25,121 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:21:52,112 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryOuyu3oBcnyW1TOhS
2024-06-16 16:21:52,149 [application.py:post()] - Processing Uploaded File: printer.cfg
2024-06-16 16:21:52,166 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 58.53ms
2024-06-16 16:21:52,193 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:21:53,458 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:23:27,032 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:23:27,039 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:23:27,048 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:25:18,285 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary63BWaig6Y6hCAYNP
2024-06-16 16:25:18,299 [application.py:post()] - Processing Uploaded File: moonraker.conf
2024-06-16 16:25:18,307 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 22.88ms
2024-06-16 16:25:18,444 [websockets.py:on_close()] - Websocket Closed: ID: 4087676664 Close Code: 1000, Close Reason: None, Pong Time Elapsed: 1.33
2024-06-16 16:25:18,450 [websockets.py:on_close()] - Websocket Closed: ID: 4106914088 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 0.26
2024-06-16 16:25:18,455 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:25:18,994 [server.py:main()] - Attempting Server Restart...
2024-06-16 16:25:19,010 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 16:25:19,012 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 16:25:19,016 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 16:25:19,017 [server.py:load_component()] - Component (template) loaded
2024-06-16 16:25:19,024 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 16:25:19,030 [server.py:load_component()] - Component (application) loaded
2024-06-16 16:25:19,032 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 16:25:19,036 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 16:25:19,039 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 16:25:19,044 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 2
2024-06-16 16:25:19,049 [server.py:load_component()] - Component (database) loaded
2024-06-16 16:25:19,055 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 16:25:19,097 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 16:25:19,098 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 16:25:19,103 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 16:25:19,107 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 16:25:19,109 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 16:25:19,150 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 16:25:19,151 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 16:25:19,151 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 16:25:19,160 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 16:25:19,160 [server.py:load_component()] - Component (machine) loaded
2024-06-16 16:25:19,162 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 16:25:19,162 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 16:25:19,163 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 16:25:19,164 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 16:25:19,166 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 16:25:19,167 [database.py:register_table()] - Found registered table job_history
2024-06-16 16:25:19,168 [database.py:register_table()] - Found registered table job_totals
2024-06-16 16:25:19,171 [server.py:load_component()] - Component (history) loaded
2024-06-16 16:25:19,172 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 16:25:19,174 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 16:25:19,176 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 16:25:19,177 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 16:25:19,180 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 16:25:19,188 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 16:25:19,194 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 16:25:19,202 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 16:25:19,208 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 16:25:19,210 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 16:25:19,227 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 16:25:19,239 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 16:25:19,241 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 16:25:19,243 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 16:25:19,245 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 16:25:19,524 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 16:25:19,543 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 16:25:19,546 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:25:19,633 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'network-online.target', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 16:25:19,633 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 16:25:19,633 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 16:25:19,660 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 16:25:19,667 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 16:25:19,668 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:25:19,672 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 16:25:19,672 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 16:25:19,676 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 16:25:19,853 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 16:25:19,856 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:25:19,858 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:25:19,863 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 16:25:19,866 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:25:19,866 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 22 Hours, 32 Seconds
2024-06-16 16:25:19,866 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 22 Hours, 33 Seconds
2024-06-16 16:25:19,867 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 22 Hours, 34 Seconds
2024-06-16 16:25:19,867 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 22 Hours, 46 Seconds
2024-06-16 16:25:19,867 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 22 Hours, 22 Minutes, 7 Seconds
2024-06-16 16:25:19,870 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 16:25:19,876 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 16:25:19,877 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 16:25:19,878 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 16:25:20,131 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:25:20,477 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 16:25:20,521 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:25:20,525 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:25:20,531 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:25:22,918 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 16:25:22,950 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 6.46ms
2024-06-16 16:25:22,952 [websockets.py:open()] - Websocket Opened: ID: 4077397400, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:25:22,987 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 16:25:22,991 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.32ms
2024-06-16 16:25:22,992 [websockets.py:open()] - Websocket Opened: ID: 4077396536, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 16:25:23,003 [websockets.py:_handle_identify()] - Websocket 4077396536 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 16:25:23,050 [websockets.py:_handle_identify()] - Websocket 4077397400 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 16:25:23,061 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718547922833 (192.168.1.128) [_TRUSTED_USER_] 4.41ms
2024-06-16 16:25:30,887 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:25:32,155 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:27:05,759 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:27:05,765 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:27:05,774 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:27:16,235 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:27:17,504 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:27:35,603 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:27:36,870 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:28:46,395 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:28:47,665 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:30:21,314 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:30:21,321 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:30:21,332 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:30:21,727 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryhTvA8FByd6bPKJKu
2024-06-16 16:30:21,742 [application.py:post()] - Processing Uploaded File: KlipperScreen.conf
2024-06-16 16:30:21,750 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 23.89ms
2024-06-16 16:30:21,817 [websockets.py:write_to_socket()] - Websocket closed while writing: 4077397400
2024-06-16 16:30:21,818 [websockets.py:on_close()] - Websocket Closed: ID: 4077397400 Close Code: None, Close Reason: None, Pong Time Elapsed: 8.86
2024-06-16 16:30:26,164 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 3.07ms
2024-06-16 16:30:26,164 [websockets.py:open()] - Websocket Opened: ID: 4107205528, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:30:26,229 [websockets.py:_handle_identify()] - Websocket 4107205528 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 16:30:38,043 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryj4DBgNPuLky3Ksmk
2024-06-16 16:30:38,077 [application.py:post()] - Processing Uploaded File: moonraker.conf
2024-06-16 16:30:38,096 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 56.59ms
2024-06-16 16:30:38,225 [websockets.py:on_close()] - Websocket Closed: ID: 4107205528 Close Code: 1000, Close Reason: None, Pong Time Elapsed: 2.06
2024-06-16 16:30:38,236 [websockets.py:on_close()] - Websocket Closed: ID: 4077396536 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 5.23
2024-06-16 16:30:38,241 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:30:38,776 [server.py:main()] - Attempting Server Restart...
2024-06-16 16:30:38,782 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 857 B
2024-06-16 16:30:38,782 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 127.0.0.1
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 16:30:38,784 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 16:30:38,784 [server.py:load_component()] - Component (template) loaded
2024-06-16 16:30:38,790 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 16:30:38,797 [server.py:load_component()] - Component (application) loaded
2024-06-16 16:30:38,800 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 16:30:38,805 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 16:30:38,808 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 16:30:38,815 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 2
2024-06-16 16:30:38,821 [server.py:load_component()] - Component (database) loaded
2024-06-16 16:30:38,826 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 16:30:38,856 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 16:30:38,857 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 16:30:38,861 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 16:30:38,863 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 16:30:38,865 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 16:30:38,899 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 16:30:38,900 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 16:30:38,900 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 16:30:38,907 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 16:30:38,907 [server.py:load_component()] - Component (machine) loaded
2024-06-16 16:30:38,909 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 16:30:38,909 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 16:30:38,910 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 16:30:38,911 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 16:30:38,913 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 16:30:38,914 [database.py:register_table()] - Found registered table job_history
2024-06-16 16:30:38,914 [database.py:register_table()] - Found registered table job_totals
2024-06-16 16:30:38,917 [server.py:load_component()] - Component (history) loaded
2024-06-16 16:30:38,918 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 16:30:38,920 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 16:30:38,921 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 16:30:38,922 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 16:30:38,926 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 16:30:38,932 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 16:30:38,938 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 16:30:38,945 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 16:30:38,950 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 16:30:38,952 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 16:30:38,969 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 16:30:38,981 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 16:30:38,983 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 16:30:38,985 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 16:30:38,987 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 16:30:39,257 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 16:30:39,276 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 16:30:39,279 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:30:39,365 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'network-online.target', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 16:30:39,365 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 16:30:39,366 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 16:30:39,389 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 16:30:39,396 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 16:30:39,397 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:30:39,400 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 16:30:39,400 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 16:30:39,405 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 16:30:39,581 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 16:30:39,584 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:30:39,588 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:30:39,593 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 16:30:39,596 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:30:39,596 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 21 Hours, 55 Minutes, 12 Seconds
2024-06-16 16:30:39,596 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 21 Hours, 55 Minutes, 14 Seconds
2024-06-16 16:30:39,596 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 21 Hours, 55 Minutes, 15 Seconds
2024-06-16 16:30:39,597 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 21 Hours, 55 Minutes, 26 Seconds
2024-06-16 16:30:39,597 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 22 Hours, 16 Minutes, 47 Seconds
2024-06-16 16:30:39,600 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 16:30:39,605 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 16:30:39,607 [server.py:start_server()] - Starting Moonraker on (127.0.0.1, 7125), Hostname: speeder-pad
2024-06-16 16:30:39,608 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 16:30:39,662 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 16:30:39,664 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 4.39ms
2024-06-16 16:30:39,665 [websockets.py:open()] - Websocket Opened: ID: 4077393184, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 16:30:39,683 [websockets.py:_handle_identify()] - Websocket 4077393184 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 16:30:39,738 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718548239504 (192.168.1.128) [_TRUSTED_USER_] 4.75ms
2024-06-16 16:30:39,864 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:30:40,249 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 16:30:40,293 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:30:40,295 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:30:40,298 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:30:42,917 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 16:30:42,945 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 6.49ms
2024-06-16 16:30:42,946 [websockets.py:open()] - Websocket Opened: ID: 4077307072, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:30:43,030 [websockets.py:_handle_identify()] - Websocket 4077307072 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 16:31:06,760 [application.py:prepare()] - Upload Request Received from 192.168.1.128
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryef7qGcDzaLyZb6wi
2024-06-16 16:31:06,793 [application.py:post()] - Processing Uploaded File: moonraker.conf
2024-06-16 16:31:06,810 [application.py:log_request()] - 201 POST /server/files/upload (192.168.1.128) [_TRUSTED_USER_] 53.11ms
2024-06-16 16:31:06,932 [websockets.py:on_close()] - Websocket Closed: ID: 4077307072 Close Code: 1000, Close Reason: None, Pong Time Elapsed: 3.98
2024-06-16 16:31:06,936 [websockets.py:on_close()] - Websocket Closed: ID: 4077393184 Close Code: 1001, Close Reason: Server Shutdown, Pong Time Elapsed: 7.26
2024-06-16 16:31:06,941 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:31:07,471 [server.py:main()] - Attempting Server Restart...
2024-06-16 16:31:07,488 [confighelper.py:read_file()] - Configuration File '/home/pi/printer_data/config/moonraker.conf' parsed, total size: 855 B
2024-06-16 16:31:07,489 [server.py:add_log_rollover_item()] - 
#################### Moonraker Configuration ####################

[server]
host = 0.0.0.0
port = 7125
klippy_uds_address = /home/pi/printer_data/comms/klippy.sock

[authorization]
trusted_clients = 
    10.0.0.0/8
    127.0.0.0/8
    169.254.0.0/16
    172.16.0.0/12
    192.168.0.0/16
    FE80::/10
    ::1/128
cors_domains = 
    *.lan
    *.local
    *://localhost
    *://localhost:*
    *://my.mainsail.xyz
    *://app.fluidd.xyz

[octoprint_compat]

[history]

[update_manager]
channel = dev
refresh_interval = 168

[update_manager mainsail]
type = web
channel = stable
repo = mainsail-crew/mainsail
path = ~/mainsail

[update_manager KlipperScreen]
type = git_repo
path = ~/KlipperScreen
origin = https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
virtualenv = ~/.KlipperScreen-env
requirements = scripts/KlipperScreen-requirements.txt
system_dependencies = scripts/system-dependencies.json
managed_services = KlipperScreen

#################################################################
All Configuration Files:
/home/pi/printer_data/config/moonraker.conf
#################################################################
2024-06-16 16:31:07,494 [server.py:load_component()] - Component (secrets) loaded
2024-06-16 16:31:07,495 [server.py:load_component()] - Component (template) loaded
2024-06-16 16:31:07,502 [server.py:load_component()] - Component (klippy_connection) loaded
2024-06-16 16:31:07,506 [server.py:load_component()] - Component (application) loaded
2024-06-16 16:31:07,509 [server.py:load_component()] - Component (websockets) loaded
2024-06-16 16:31:07,513 [server.py:load_component()] - Component (dbus_manager) loaded
2024-06-16 16:31:07,516 [server.py:add_log_rollover_item()] - Loading Sqlite database provider. Sqlite Version: 3.31.1
2024-06-16 16:31:07,522 [server.py:add_log_rollover_item()] - Unsafe Shutdown Count: 2
2024-06-16 16:31:07,527 [server.py:load_component()] - Component (database) loaded
2024-06-16 16:31:07,531 [file_manager.py:__init__()] - Using File System Observer: inotify
2024-06-16 16:31:07,562 [server.py:load_component()] - Component (file_manager) loaded
2024-06-16 16:31:07,563 [database.py:register_table()] - Found registered table authorized_users
2024-06-16 16:31:07,566 [authorization.py:__init__()] - Authorization Configuration Loaded
Trusted Clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
fe80::/10
::1/128
CORS Domains:
.*\.lan
.*\.local
.*://localhost
.*://localhost:.*
.*://my\.mainsail\.xyz
.*://app\.fluidd\.xyz
2024-06-16 16:31:07,569 [server.py:load_component()] - Component (authorization) loaded
2024-06-16 16:31:07,571 [server.py:load_component()] - Component (klippy_apis) loaded
2024-06-16 16:31:07,605 [server.py:add_log_rollover_item()] - 
System Info:

***python***
  version: (3, 9, 19, 'final', 0)
  version_string: 3.9.19 (main, Apr  6 2024, 17:57:55)  [GCC 9.4.0]

***cpu_info***
  cpu_count: 4
  bits: 32bit
  processor: aarch64
  cpu_desc: 
  serial_number: 
  hardware_desc: 
  model: 
  total_memory: 999676
  memory_units: kB

***sd_info***
  manufacturer_id: 15
  manufacturer: Unknown
  oem_id: 0100
  product_name: AJTD4
  product_revision: 5.2
  serial_number: 065eda46
  manufacturer_date: 9/2211
  capacity: Unknown
  total_bytes: 0

***distribution***
  name: Ubuntu 20.04.6 LTS
  id: ubuntu
  version: 20.04
  version_parts: {'major': '20', 'minor': '04', 'build_number': ''}
  like: debian
  codename: focal
  release_info: {}
  kernel_version: 4.9.191

***virtualization***
  virt_type: none
  virt_identifier: none

***network***

***canbus***

***Allowed Services***
  klipper_mcu
  webcamd
  MoonCord
  KlipperScreen
  moonraker-telegram-bot
  moonraker-obico
  sonar
  crowsnest
  octoeverywhere
  ratos-configurator
2024-06-16 16:31:07,605 [server.py:load_component()] - Component (shell_command) loaded
2024-06-16 16:31:07,606 [machine.py:__init__()] - Using System Provider: systemd_dbus
2024-06-16 16:31:07,612 [server.py:add_log_rollover_item()] - Module libcamera unavailble, import failed
2024-06-16 16:31:07,612 [server.py:load_component()] - Component (machine) loaded
2024-06-16 16:31:07,613 [server.py:load_component()] - Component (data_store) loaded
2024-06-16 16:31:07,614 [proc_stats.py:__init__()] - Unable to find 'vcgencmd', throttle checking disabled
2024-06-16 16:31:07,615 [server.py:load_component()] - Component (proc_stats) loaded
2024-06-16 16:31:07,615 [server.py:load_component()] - Component (job_state) loaded
2024-06-16 16:31:07,617 [server.py:load_component()] - Component (job_queue) loaded
2024-06-16 16:31:07,618 [database.py:register_table()] - Found registered table job_history
2024-06-16 16:31:07,618 [database.py:register_table()] - Found registered table job_totals
2024-06-16 16:31:07,620 [server.py:load_component()] - Component (history) loaded
2024-06-16 16:31:07,621 [server.py:load_component()] - Component (http_client) loaded
2024-06-16 16:31:07,623 [server.py:load_component()] - Component (announcements) loaded
2024-06-16 16:31:07,625 [server.py:load_component()] - Component (webcam) loaded
2024-06-16 16:31:07,626 [server.py:load_component()] - Component (extensions) loaded
2024-06-16 16:31:07,629 [server.py:load_component()] - Component (octoprint_compat) loaded
2024-06-16 16:31:07,635 [base_deploy.py:log_info()] - Git Repo moonraker: Detected virtualenv: /home/pi/moonraker-env
2024-06-16 16:31:07,641 [base_deploy.py:log_info()] - Git Repo klipper: Detected virtualenv: /home/pi/klippy-env
2024-06-16 16:31:07,648 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Detected virtualenv: /home/pi/.KlipperScreen-env
2024-06-16 16:31:07,653 [server.py:load_component()] - Component (update_manager) loaded
2024-06-16 16:31:07,655 [server.py:_initialize_component()] - Performing Component Post Init: [dbus_manager]
2024-06-16 16:31:07,673 [server.py:_initialize_component()] - Performing Component Post Init: [database]
2024-06-16 16:31:07,685 [server.py:_initialize_component()] - Performing Component Post Init: [file_manager]
2024-06-16 16:31:07,686 [server.py:_initialize_component()] - Performing Component Post Init: [authorization]
2024-06-16 16:31:07,688 [server.py:_initialize_component()] - Performing Component Post Init: [machine]
2024-06-16 16:31:07,690 [machine.py:validation_init()] - Installation version in database up to date
2024-06-16 16:31:07,966 [machine.py:check_virt_status()] - No Virtualization Detected
2024-06-16 16:31:07,986 [machine.py:_find_public_ip()] - Detected Local IP: 192.168.1.30
2024-06-16 16:31:07,989 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:31:08,075 [server.py:add_log_rollover_item()] - 
Systemd unit moonraker.service:
unit_name: moonraker.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'network-online.target', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=['moonraker-admin']
**EnvironmentFiles=/home/pi/printer_data/systemd/moonraker.env
**ExecStart=/home/pi/moonraker-env/bin/python $MOONRAKER_ARGS
**WorkingDirectory=/home/pi/moonraker
**FragmentPath=/etc/systemd/system/moonraker.service
**Description=API Server for Klipper SV1
**User=pi
2024-06-16 16:31:08,075 [server.py:_initialize_component()] - Performing Component Post Init: [proc_stats]
2024-06-16 16:31:08,075 [server.py:_initialize_component()] - Performing Component Post Init: [history]
2024-06-16 16:31:08,100 [server.py:_initialize_component()] - Performing Component Post Init: [announcements]
2024-06-16 16:31:08,107 [server.py:_initialize_component()] - Performing Component Post Init: [webcam]
2024-06-16 16:31:08,108 [webcam.py:_set_default_host_ip()] - Default public webcam address set: http://192.168.1.30
2024-06-16 16:31:08,111 [server.py:_initialize_component()] - Performing Component Post Init: [klippy_connection]
2024-06-16 16:31:08,111 [server.py:_initialize_component()] - Performing Component Post Init: [update_manager]
2024-06-16 16:31:08,116 [server.py:add_log_rollover_item()] - 
Systemd unit klipper.service:
unit_name: klipper.service
is_default: True
manager: systemd
Properties:
**Requires=['system.slice', 'sysinit.target']
**After=['sysinit.target', 'basic.target', 'network-online.target', 'systemd-journald.socket', '-.mount', 'system.slice']
**SupplementaryGroups=[]
**EnvironmentFiles=/home/pi/printer_data/systemd/klipper.env
**ExecStart=/home/pi/klippy-env/bin/python $KLIPPER_ARGS
**WorkingDirectory=/home/pi/klipper
**FragmentPath=/etc/systemd/system/klipper.service
**Description=Klipper 3D Printer Firmware SV1
**User=pi
2024-06-16 16:31:08,192 [base_deploy.py:log_info()] - PackageDeploy: PackageKit Provider Configured
2024-06-16 16:31:08,198 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:31:08,201 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:31:08,208 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 16:31:08,212 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:31:08,213 [base_deploy.py:log_info()] - PackageKit: Next refresh in: 6 Days, 21 Hours, 54 Minutes, 44 Seconds
2024-06-16 16:31:08,213 [base_deploy.py:log_info()] - Git Repo moonraker: Next refresh in: 6 Days, 21 Hours, 54 Minutes, 45 Seconds
2024-06-16 16:31:08,213 [base_deploy.py:log_info()] - Git Repo klipper: Next refresh in: 6 Days, 21 Hours, 54 Minutes, 46 Seconds
2024-06-16 16:31:08,214 [base_deploy.py:log_info()] - Web Client mainsail: Next refresh in: 6 Days, 21 Hours, 54 Minutes, 57 Seconds
2024-06-16 16:31:08,214 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Next refresh in: 6 Days, 22 Hours, 16 Minutes, 18 Seconds
2024-06-16 16:31:08,225 [confighelper.py:create_backup()] - Backing up last working configuration to '/home/pi/printer_data/config/.moonraker.conf.bkp'
2024-06-16 16:31:08,229 [extensions.py:start_unix_server()] - Creating Unix Domain Socket at '/home/pi/printer_data/comms/moonraker.sock'
2024-06-16 16:31:08,230 [server.py:start_server()] - Starting Moonraker on (0.0.0.0, 7125), Hostname: speeder-pad
2024-06-16 16:31:08,232 [application.py:listen()] - SSL Certificate/Key not configured, aborting HTTPS Server startup
2024-06-16 16:31:08,487 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:31:08,869 [server.py:add_log_rollover_item()] - Klipper Version: v0.12.0-239-g433fcb6f
2024-06-16 16:31:08,911 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:31:08,914 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:31:08,918 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

2024-06-16 16:31:10,368 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 192.168.1.128
2024-06-16 16:31:10,372 [application.py:log_request()] - 101 GET /websocket (192.168.1.128) [_TRUSTED_USER_] 7.84ms
2024-06-16 16:31:10,374 [websockets.py:open()] - Websocket Opened: ID: 4077480520, Proxied: True, User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36, Host Name: 192.168.1.30
2024-06-16 16:31:10,387 [websockets.py:_handle_identify()] - Websocket 4077480520 Client Identified - Name: mainsail, Version: 2.11.2, Type: web
2024-06-16 16:31:10,447 [application.py:log_request()] - 404 GET /server/files/config/.theme/maintenance.json?time=1718548270203 (192.168.1.128) [_TRUSTED_USER_] 11.95ms
2024-06-16 16:31:11,917 [authorization.py:_check_trusted_connection()] - Trusted Connection Detected, IP: 127.0.0.1
2024-06-16 16:31:11,940 [application.py:log_request()] - 101 GET /websocket?token= (127.0.0.1) [_TRUSTED_USER_] 4.55ms
2024-06-16 16:31:11,941 [websockets.py:open()] - Websocket Opened: ID: 4077481456, Proxied: False, User Agent: , Host Name: 127.0.0.1
2024-06-16 16:31:12,029 [websockets.py:_handle_identify()] - Websocket 4077481456 Client Identified - Name: KlipperScreen, Version: v0.4.1-16-ge8fc0db, Type: display
2024-06-16 16:31:12,250 [klippy_connection.py:_on_connection_closed()] - Klippy Connection Removed
2024-06-16 16:31:12,309 [application.py:log_request()] - 503 GET /printer/objects/query?bed_mesh&configfile&display_status&extruder&fan&gcode_move&heater_bed&idle_timeout&pause_resume&print_stats&toolhead&virtual_sdcard&webhooks&motion_report&firmware_retraction&exclude_object&manual_probe&extruder&heater_bed&temperature_sensor%20Speeder_Pad&temperature_sensor%20Motherboard&fan&heater_fan%20Hotend&filament_switch_sensor%20filament_sensor&output_pin%20LED_Hotend&output_pin%20LED_Logo (127.0.0.1) [_TRUSTED_USER_] 12.45ms
2024-06-16 16:31:13,520 [klippy_connection.py:_do_connect()] - Klippy Connection Established
2024-06-16 16:32:10,318 [base_deploy.py:log_info()] - PackageKit: Detected 0 package updates:

2024-06-16 16:32:10,360 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker status --porcelain -b) successfully finished
2024-06-16 16:32:10,383 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker branch --list --no-color) successfully finished
2024-06-16 16:32:10,425 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker remote get-url origin) successfully finished
2024-06-16 16:32:11,178 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker fetch origin --prune --progress) successfully finished
2024-06-16 16:32:11,202 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker merge-base --is-ancestor HEAD origin/master) successfully finished
2024-06-16 16:32:11,225 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker rev-parse HEAD) successfully finished
2024-06-16 16:32:11,275 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker describe --always --tags --long --dirty --abbrev=8) successfully finished
2024-06-16 16:32:11,296 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker rev-parse origin/master) successfully finished
2024-06-16 16:32:11,337 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker describe origin/master --always --tags --long --abbrev=8) successfully finished
2024-06-16 16:32:11,361 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/moonraker rev-list HEAD..346a3d7c9dca6499bdef2957ca39a23c702b0268 --count) successfully finished
2024-06-16 16:32:11,362 [git_deploy.py:log_repo_info()] - Git Repo moonraker Detected:
Owner: Arksine
Repository Name: moonraker
Path: /home/pi/moonraker
Remote: origin
Branch: master
Remote URL: https://github.com/Arksine/moonraker.git
Recovery URL: https://github.com/Arksine/moonraker.git
Current Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Upstream Commit SHA: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Current Version: v0.8.0-379-g346a3d7c
Upstream Version: v0.8.0-379-g346a3d7c
Rollback Commit: 346a3d7c9dca6499bdef2957ca39a23c702b0268
Rollback Branch: master
Rollback Version: v0.8.0-379-g346a3d7c
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:32:11,362 [base_deploy.py:log_info()] - Git Repo moonraker: Channel: dev
2024-06-16 16:32:11,362 [base_deploy.py:log_info()] - Git Repo moonraker: Validity check for git repo passed
2024-06-16 16:32:11,448 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper status --porcelain -b) successfully finished
2024-06-16 16:32:11,470 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper branch --list --no-color) successfully finished
2024-06-16 16:32:11,512 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper remote get-url origin) successfully finished
2024-06-16 16:32:12,184 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper fetch origin --prune --progress) successfully finished
2024-06-16 16:32:12,207 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper merge-base --is-ancestor HEAD origin/master) successfully finished
2024-06-16 16:32:12,229 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper rev-parse HEAD) successfully finished
2024-06-16 16:32:12,420 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper describe --always --tags --long --dirty --abbrev=8) successfully finished
2024-06-16 16:32:12,443 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper rev-parse origin/master) successfully finished
2024-06-16 16:32:12,610 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper describe origin/master --always --tags --long --abbrev=8) successfully finished
2024-06-16 16:32:12,634 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/klipper rev-list HEAD..433fcb6f249406c8b5e2f25d1e870809beeafb40 --count) successfully finished
2024-06-16 16:32:12,634 [git_deploy.py:log_repo_info()] - Git Repo klipper Detected:
Owner: Klipper3d
Repository Name: klipper
Path: /home/pi/klipper
Remote: origin
Branch: master
Remote URL: https://github.com/Klipper3d/klipper
Recovery URL: https://github.com/Klipper3d/klipper
Current Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Upstream Commit SHA: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Current Version: v0.12.0-239-g433fcb6f
Upstream Version: v0.12.0-239-g433fcb6f
Rollback Commit: 433fcb6f249406c8b5e2f25d1e870809beeafb40
Rollback Branch: master
Rollback Version: v0.12.0-239-g433fcb6f
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:32:12,635 [base_deploy.py:log_info()] - Git Repo klipper: Channel: dev
2024-06-16 16:32:12,635 [base_deploy.py:log_info()] - Git Repo klipper: Validity check for git repo passed
2024-06-16 16:32:12,919 [base_deploy.py:log_info()] - Web Client mainsail: Detected
Repo: mainsail-crew/mainsail
Channel: stable
Path: /home/pi/mainsail
Local Version: v2.11.2
Remote Version: v2.11.2
Valid: True
Fallback Detected: False
Pre-release: False
Download Url: https://github.com/mainsail-crew/mainsail/releases/download/v2.11.2/mainsail.zip
Download Size: 2114797
Content Type: application/zip
Rollback Version: v2.11.2
Rollback Repo: mainsail-crew/mainsail
2024-06-16 16:32:13,021 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen status --porcelain -b) successfully finished
2024-06-16 16:32:13,044 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen branch --list --no-color) successfully finished
2024-06-16 16:32:13,088 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen remote get-url origin) successfully finished
2024-06-16 16:32:13,584 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen fetch origin --prune --progress) successfully finished
2024-06-16 16:32:13,621 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen merge-base --is-ancestor HEAD origin/master) successfully finished
2024-06-16 16:32:13,655 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen rev-parse HEAD) successfully finished
2024-06-16 16:32:13,714 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen describe --always --tags --long --dirty --abbrev=8) successfully finished
2024-06-16 16:32:13,737 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen rev-parse origin/master) successfully finished
2024-06-16 16:32:13,768 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen describe origin/master --always --tags --long --abbrev=8) successfully finished
2024-06-16 16:32:13,791 [shell_command.py:_check_proc_success()] - Command (git -C /home/pi/KlipperScreen rev-list HEAD..e8fc0dbb0765ffa40619755561d0e09ec5bd8658 --count) successfully finished
2024-06-16 16:32:13,792 [git_deploy.py:log_repo_info()] - Git Repo KlipperScreen Detected:
Owner: Guilouz
Repository Name: KlipperScreen-Flsun-Speeder-Pad
Path: /home/pi/KlipperScreen
Remote: origin
Branch: master
Remote URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Recovery URL: https://github.com/Guilouz/KlipperScreen-Flsun-Speeder-Pad.git
Current Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Upstream Commit SHA: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Current Version: v0.4.1-16-ge8fc0dbb
Upstream Version: v0.4.1-16-ge8fc0dbb
Rollback Commit: e8fc0dbb0765ffa40619755561d0e09ec5bd8658
Rollback Branch: master
Rollback Version: v0.4.1-16-ge8fc0dbb
Is Dirty: False
Is Detached: False
Is Shallow: False
Commits Behind Count: 0
Diverged: False
Pinned Commit: None
2024-06-16 16:32:13,792 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Channel: dev
2024-06-16 16:32:13,793 [base_deploy.py:log_info()] - Git Repo KlipperScreen: Validity check for git repo passed
2024-06-16 16:32:47,068 [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
2024-06-16 16:32:47,074 [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
2024-06-16 16:32:47,083 [klippy_connection.py:_check_ready()] - 
mcu 'mcu': Unable to connect
Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

 

Posté(e)

FICHIER KLIPPY LOG :

Révélation

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.12.0-239-g433fcb6f'
Branch: master
Remote: origin
Tracked URL: https://github.com/Klipper3d/klipper
CPU: 4 core ?
Python: '3.9.19 (main, Apr  6 2024, 17:57:55) \n[GCC 9.4.0]'
Building C code module c_helper.so
Start printer at Sun Jun 16 14:20:26 2024 (1718540426.1 4752.7)
===== Config file =====
[mcu]
serial = /dev/serial/by-id/<your-mcu-id>

[virtual_sdcard]
path = /home/pi/printer_data/gcodes
on_error_gcode = CANCEL_PRINT

[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/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, 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 4128484584: New connection
webhooks client 4128484584: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
webhooks client 4128484584: Disconnected
webhooks client 4129489248: New connection
webhooks client 4129489248: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
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.12.0-239-g433fcb6f'
Branch: master
Remote: origin
Tracked URL: https://github.com/Klipper3d/klipper
CPU: 4 core ?
Python: '3.9.19 (main, Apr  6 2024, 17:57:55) \n[GCC 9.4.0]'
Start printer at Sun Jun 16 14:45:22 2024 (1718541922.6 19.3)
===== Config file =====
[mcu]
serial = /dev/serial/by-id/<your-mcu-id>

[virtual_sdcard]
path = /home/pi/printer_data/gcodes
on_error_gcode = CANCEL_PRINT

[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/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
webhooks client 4122085072: New connection
webhooks client 4122085072: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, 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 4122085072: Disconnected
webhooks client 4122299048: New connection
webhooks client 4122299048: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
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.12.0-239-g433fcb6f'
Branch: master
Remote: origin
Tracked URL: https://github.com/Klipper3d/klipper
CPU: 4 core ?
Python: '3.9.19 (main, Apr  6 2024, 17:57:55) \n[GCC 9.4.0]'
Start printer at Sun Jun 16 14:56:26 2024 (1718542586.6 13.1)
===== Config file =====
[mcu]
serial = /dev/serial/by-id/<your-mcu-id>

[virtual_sdcard]
path = /home/pi/printer_data/gcodes
on_error_gcode = CANCEL_PRINT

[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/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
webhooks client 4125681360: New connection
webhooks client 4125681360: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(2897): Sun Jun 16 14:51:17 2024
========= Last MCU build config =========
# CONFIG_LOW_LEVEL_OPTIONS is not set
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"
CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 14:52:05 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 14:52:15 2024
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/<your-mcu-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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 955, in _firmware_restart
    self._restart_arduino()
  File "/home/pi/klipper/klippy/mcu.py", line 915, in _restart_arduino
    serialhdl.arduino_reset(self._serialport, self._reactor)
  File "/home/pi/klipper/klippy/serialhdl.py", line 380, 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/<your-mcu-id>: [Errno 2] No such file or directory: '/dev/serial/by-id/<your-mcu-id>'
Restarting printer
Start printer at Sun Jun 16 15:01:21 2024 (1718542881.6 308.1)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = XXXXX
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4123456296: New connection
webhooks client 4123456296: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4123456296: Disconnected
webhooks client 4125353800: New connection
webhooks client 4125353800: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4125353800: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:02:13 2024 (1718542933.7 360.2)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = XXXXX
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4124533040: New connection
webhooks client 4124533040: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
Unable to issue reset command on MCU 'mcu'
webhooks client 4124533040: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:02:38 2024 (1718542959.0 385.5)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = XXXXX
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4123456512: New connection
webhooks client 4123456512: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4123456512: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:02:58 2024 (1718542978.5 405.0)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = XXXXX
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4123456608: New connection
webhooks client 4123456608: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(2897): Sun Jun 16 14:51:17 2024
========= Last MCU build config =========
# CONFIG_LOW_LEVEL_OPTIONS is not set
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"
CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 14:52:05 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 14:52:15 2024
webhooks client 4123456608: Disconnected
webhooks client 4124135464: New connection
webhooks client 4124135464: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
Unable to issue reset command on MCU 'mcu'
webhooks client 4124135464: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:10:27 2024 (1718543427.3 853.8)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4123456776: New connection
webhooks client 4123456776: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(2897): Sun Jun 16 14:51:17 2024
========= Last MCU build config =========
# CONFIG_LOW_LEVEL_OPTIONS is not set
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"
CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 14:52:05 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 14:52:15 2024
webhooks client 4123456776: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:12:32 2024 (1718543552.3 978.8)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4123456920: New connection
webhooks client 4123456920: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(2897): Sun Jun 16 14:51:17 2024
========= Last MCU build config =========
# CONFIG_LOW_LEVEL_OPTIONS is not set
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"
CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 14:52:05 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 14:52:15 2024
webhooks client 4123456920: Disconnected
webhooks client 4124533016: New connection
webhooks client 4124533016: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
Unable to issue reset command on MCU 'mcu'
webhooks client 4124533016: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:18:36 2024 (1718543916.9 1343.4)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4124107632: New connection
webhooks client 4124107632: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(2897): Sun Jun 16 14:51:17 2024
========= Last MCU build config =========
# CONFIG_LOW_LEVEL_OPTIONS is not set
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"
CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 14:52:05 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 14:52:15 2024
Unable to issue reset command on MCU 'mcu'
webhooks client 4124107632: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:29:46 2024 (1718544586.6 2013.1)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4124108688: New connection
webhooks client 4124108688: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial: /dev/seriel/by-id/usb-1a86_USB_Serial-if00-port0'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(2897): Sun Jun 16 14:51:17 2024
========= Last MCU build config =========
# CONFIG_LOW_LEVEL_OPTIONS is not set
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"
CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 14:52:05 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 14:52:15 2024
Unable to issue reset command on MCU 'mcu'
webhooks client 4124108688: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:55:00 2024 (1718546101.0 3527.5)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = XXXXX
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4124109600: New connection
webhooks client 4124109600: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
Unable to issue reset command on MCU 'mcu'
webhooks client 4124109600: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:55:04 2024 (1718546104.2 3530.8)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = XXXXX
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4124108232: New connection
webhooks client 4124108232: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(3626): Sun Jun 16 15:47:42 2024
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# 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_24M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_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_PD0_PD1 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"

#
# USB ids
#
# end of USB ids

CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 15:48:40 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 15:48:50 2024
Unable to issue reset command on MCU 'mcu'
webhooks client 4124108232: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:57:44 2024 (1718546264.7 3691.2)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = XXXXX
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
webhooks client 4124108496: New connection
webhooks client 4124108496: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port XXXXX: [Errno 2] No such file or directory: 'XXXXX'
Unable to issue reset command on MCU 'mcu'
webhooks client 4124108496: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:59:07 2024 (1718546347.6 3774.2)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4124109816: New connection
webhooks client 4124109816: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4124109816: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:59:31 2024 (1718546371.2 3797.8)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4124107152: New connection
webhooks client 4124107152: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4124107152: Disconnected
Restarting printer
Start printer at Sun Jun 16 15:59:41 2024 (1718546381.8 3808.3)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4124109984: New connection
webhooks client 4124109984: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4124109984: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:00:08 2024 (1718546408.5 3835.0)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4124108904: New connection
webhooks client 4124108904: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4124108904: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:00:23 2024 (1718546423.7 3850.3)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4124108184: New connection
webhooks client 4124108184: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4124108184: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:00:30 2024 (1718546430.9 3857.4)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4124108712: New connection
webhooks client 4124108712: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
webhooks client 4124108712: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:00:51 2024 (1718546451.4 3877.9)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4124108400: New connection
webhooks client 4124108400: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(3626): Sun Jun 16 15:47:42 2024
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# 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_24M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_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_PD0_PD1 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"

#
# USB ids
#
# end of USB ids

CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 15:48:40 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 15:48:50 2024
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
                   Starting Klippy...
Args: ['/home/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.12.0-239-g433fcb6f'
Branch: master
Remote: origin
Tracked URL: https://github.com/Klipper3d/klipper
CPU: 4 core ?
Python: '3.9.19 (main, Apr  6 2024, 17:57:55) \n[GCC 9.4.0]'
Start printer at Sun Jun 16 16:16:20 2024 (1718547380.9 20.2)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4124151016: New connection
webhooks client 4124151016: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(3626): Sun Jun 16 15:47:42 2024
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# 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_24M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_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_PD0_PD1 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"

#
# USB ids
#
# end of USB ids

CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 15:48:40 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 15:48:50 2024
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.12.0-239-g433fcb6f'
Branch: master
Remote: origin
Tracked URL: https://github.com/Klipper3d/klipper
CPU: 4 core ?
Python: '3.9.19 (main, Apr  6 2024, 17:57:55) \n[GCC 9.4.0]'
Start printer at Sun Jun 16 16:18:35 2024 (1718547515.6 22.7)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4128478736: New connection
webhooks client 4128478736: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(3626): Sun Jun 16 15:47:42 2024
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# 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_24M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_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_PD0_PD1 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"

#
# USB ids
#
# end of USB ids

CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 15:48:40 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 15:48:50 2024
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4128478736: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:20:35 2024 (1718547635.7 142.8)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4123380200: New connection
webhooks client 4123380200: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4123380200: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:20:44 2024 (1718547644.8 151.9)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4106402040: New connection
webhooks client 4106402040: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4106402040: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:21:17 2024 (1718547677.8 184.9)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4106398976: New connection
webhooks client 4106398976: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4106398976: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:21:24 2024 (1718547684.9 192.0)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
webhooks client 4106390808: New connection
webhooks client 4106390808: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0: [Errno 2] No such file or directory: 'serial:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0'
Unable to issue reset command on MCU 'mcu'
webhooks client 4106390808: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:21:53 2024 (1718547713.2 220.3)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4106385776: New connection
webhooks client 4106385776: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(3626): Sun Jun 16 15:47:42 2024
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# 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_24M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_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_PD0_PD1 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"

#
# USB ids
#
# end of USB ids

CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 15:48:40 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 15:48:50 2024
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
webhooks client 4106385776: Disconnected
webhooks client 4124645168: New connection
webhooks client 4124645168: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
webhooks client 4124645168: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:25:31 2024 (1718547931.9 439.0)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4106418592: New connection
webhooks client 4106418592: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(3626): Sun Jun 16 15:47:42 2024
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# 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_24M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_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_PD0_PD1 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"

#
# USB ids
#
# end of USB ids

CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 15:48:40 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 15:48:50 2024
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4106418592: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:27:17 2024 (1718548037.3 544.4)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4106422784: New connection
webhooks client 4106422784: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4106422784: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:27:36 2024 (1718548056.7 563.8)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4106418664: New connection
webhooks client 4106418664: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
Unable to issue reset command on MCU 'mcu'
webhooks client 4106418664: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:28:47 2024 (1718548127.4 634.6)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4106439168: New connection
webhooks client 4106439168: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
MCU error during connect
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/mcu.py", line 793, in _mcu_identify
    self._serial.connect_uart(self._serialport, self._baud, rts)
  File "/home/pi/klipper/klippy/serialhdl.py", line 183, 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 <listcomp>
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/pi/klipper/klippy/mcu.py", line 798, in _mcu_identify
    raise error(str(e))
mcu.error: mcu 'mcu': Unable to connect
Build file /home/pi/klipper/klippy/../.config(3626): Sun Jun 16 15:47:42 2024
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_HC32F460 is not set
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_AR100 is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_USBSERIAL=y
CONFIG_FLASH_SIZE=0x10000
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F765 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G070 is not set
# CONFIG_MACH_STM32G071 is not set
# CONFIG_MACH_STM32G0B0 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32G431 is not set
# CONFIG_MACH_STM32G474 is not set
# CONFIG_MACH_STM32H723 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32L412 is not set
# CONFIG_MACH_N32G452 is not set
# CONFIG_MACH_N32G455 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
CONFIG_STM32_DFU_ROM_ADDRESS=0
CONFIG_STM32_FLASH_START_2000=y
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_9000 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# 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_24M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_STM32_USB_PA11_PA12=y
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_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_PD0_PD1 is not set
CONFIG_USB=y
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"

#
# USB ids
#
# end of USB ids

CONFIG_WANT_GPIO_BITBANGING=y
CONFIG_WANT_DISPLAYS=y
CONFIG_WANT_SENSORS=y
CONFIG_WANT_LIS2DW=y
CONFIG_WANT_LDC1612=y
CONFIG_WANT_SOFTWARE_I2C=y
CONFIG_WANT_SOFTWARE_SPI=y
CONFIG_NEED_SENSOR_BULK=y
CONFIG_CANBUS_FREQUENCY=1000000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_HAVE_BOOTLOADER_REQUEST=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/pi/klipper/klippy/../out/klipper.dict(7904): Sun Jun 16 15:48:40 2024
Last MCU build version: v0.12.0-239-g433fcb6f
Last MCU build tools: gcc: (15:9-2019-q4-0ubuntu1) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] binutils: (2.34-4ubuntu1+13ubuntu1) 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_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi3=PB4,PB5,PB3 CLOCK_FREQ=72000000 MCU=stm32f103xe PWM_MAX=255 RESERVE_PINS_USB=PA11,PA12 STATS_SUMSQ_BASE=256 STEPPER_BOTH_EDGE=1
Build file /home/pi/klipper/klippy/../out/klipper.elf(1057932): Sun Jun 16 15:48:50 2024
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
webhooks client 4106439168: Disconnected
webhooks client 4124643920: New connection
webhooks client 4124643920: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
webhooks client 4124643920: Disconnected
webhooks client 4124645648: New connection
webhooks client 4124645648: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
webhooks client 4124645648: Disconnected
Restarting printer
Start printer at Sun Jun 16 16:31:13 2024 (1718548273.3 780.4)
===== Config file =====
[gcode_macro START_PRINT]
description = Start G-Code
gcode = 
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
    LED_HOTEND_ON
    G21
    G90
    M82
    {% if printer.extruder.target != 0 %}
    M104 S{EXTRUDER_TEMP}
    {% else %}
    M104 S150
    {% endif %}
    M140 S{BED_TEMP}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 Z370 F3000
    G1 X-150 F3000
    M190 S{BED_TEMP}
    M109 S{EXTRUDER_TEMP}
    G1 Z1 F3000
    G1 X-150 Y0 Z0.4
    G92 E0
    G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
    G92 E0
    G1 E-1 F2100

[gcode_macro END_PRINT]
description = End G-Code
gcode = 
    M106 S0
    M104 S0
    M140 S0
    G92 E0
    G91
    G1 E-1 F2100
    G1 Z+5 F6000
    G28
    G90
    LED_HOTEND_OFF
    M84

[gcode_macro PAUSE]
description = Pause the current print
rename_existing = PAUSE_BASE
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    RESPOND MSG="Pausing printing..."
    PAUSE_BASE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500

[gcode_macro RESUME]
description = Resume the current print
rename_existing = RESUME_BASE
gcode = 
    
    {% set e = params.E|default(1) %}
    
    {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
    {% else %}
    {% set get_params = "" %}
    {% endif %}
    
    G91
    {% if printer["gcode_macro M600"].m600_enabled == 1 %}
    RESPOND MSG="Nozzle heating..."
    M109 S{printer["gcode_macro M600"].hotend_temp}
    M106 S{printer["gcode_macro M600"].fan_speed}
    RESPOND MSG="Loading filament..."
    G0 E50 F800
    G0 E30 F300
    M400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
    {% else %}
    G1 E{e} F2100
    {% endif %}
    RESPOND MSG="Resuming printing..."
    SET_IDLE_TIMEOUT TIMEOUT=1800
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description = Cancel the current print
rename_existing = CANCEL_PRINT_BASE
gcode = 
    RESPOND MSG="Printing canceled!"
    G28
    M106 S0
    M104 S0
    M140 S0
    CANCEL_PRINT_BASE

[gcode_macro M600]
description = Filament change
variable_hotend_temp = 0
variable_m600_enabled = 0
variable_fan_speed = 0
gcode = 
    
    {% set x = params.X|default(0) %}
    {% set y = params.Y|default(-140) %}
    {% set z = params.Z|default(10)|float %}
    {% set e = params.E|default(1) %}
    
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}
    {% set lift_z = z|abs %}
    {% if act_z < (max_z - lift_z) %}
    {% set z_safe = lift_z %}
    {% else %}
    {% set z_safe = max_z - act_z %}
    {% endif %}
    
    SAVE_GCODE_STATE NAME=M600_state
    SET_IDLE_TIMEOUT TIMEOUT=86400
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
    SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
    RESPOND MSG="Pausing printing..."
    PAUSE
    G91
    G1 E-{e} F2100
    G1 Z{z_safe}
    G90
    G1 X{x} Y{y} F2500
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    M400
    RESPOND MSG="Nozzle heating stopped!"
    M104 S0
    M106 S0
    RESTORE_GCODE_STATE NAME=M600_state

[gcode_macro UNLOAD_FILAMENT]
description = Filament unloading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=unload_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Unloading filament..."
    G91
    G0 E-10 F300
    G0 E-30 F800
    RESTORE_GCODE_STATE NAME=unload_state
    {% endif %}

[gcode_macro LOAD_FILAMENT]
description = Filament loading
gcode = 
    {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SAVE_GCODE_STATE NAME=load_state
    {% if printer.extruder.temperature < 200 %}
    RESPOND MSG="Nozzle heating..."
    M109 S200
    {% endif %}
    RESPOND MSG="Loading filament..."
    G91
    G0 E50 F800
    G0 E30 F300
    M400
    RESTORE_GCODE_STATE NAME=load_state
    {% endif %}

[gcode_macro Z_OFFSET_CALIBRATION]
description = Measure Z-Offset
gcode = 
    SET_GCODE_OFFSET Z=0
    G28
    G1 X0 Y0 Z50 F2500
    M400
    
    PROBE_CALIBRATE

[gcode_macro ENDSTOPS_CALIBRATION]
description = Endstops Phase Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    G28
    G91
    G0 Z-80 F1500
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
    ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
    M400
    G28
    {% endif %}

[gcode_macro DELTA_CALIBRATION]
description = Delta Calibration
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    BED_MESH_CLEAR
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    
    DELTA_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro BED_LEVELING]
description = Bed Leveling
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_GCODE_OFFSET Z=0
    {% if printer.toolhead.homed_axes != "xyz" %}
    G28
    {% endif %}
    G1 X0 Y0 Z50 F2500
    
    BED_MESH_CALIBRATE
    
    M400
    G1 X0 Y0 Z50 F2500
    G28
    {% endif %}

[gcode_macro PRESSURE_ADVANCE]
description = Pressure Advance
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    SET_PRESSURE_ADVANCE ADVANCE=0
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
    {% endif %}

[gcode_macro PID_BED]
description = Bed PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Bed PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro PID_HOTEND]
description = Hotend PID
gcode = 
    {% if printer.idle_timeout.state == "Printing" %}
    RESPOND TYPE=error MSG="This macro cannot be used while printing!"
    {% else %}
    RESPOND MSG="Hotend PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106
    PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28
    {% endif %}

[gcode_macro _PID_KS_START]
description = PID for KlipperScreen
gcode = 
    RESPOND MSG="PID calibration in progress..."
    G28
    G90
    G1 Z50 F1500
    M400
    M106

[gcode_macro _PID_KS_END]
description = PID for KlipperScreen
gcode = 
    M107
    RESPOND MSG="PID calibration complete! Remember to save the configuration!"
    G28

[gcode_macro ADXL_TEST]
description = ADXL Test
gcode = 
    ACCELEROMETER_QUERY

[gcode_macro ADXL_NOISE]
description = Measure Accelerometer Noise
gcode = 
    MEASURE_AXES_NOISE

[gcode_macro ADXL_AXE_X]
description = Measure X axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=X

[gcode_macro ADXL_AXE_Y]
description = Measure Y axis resonances
gcode = 
    SHAPER_CALIBRATE AXIS=Y

[gcode_macro SAVE]
description = Save Configuration
gcode = 
    SAVE_CONFIG

[gcode_macro LED_HOTEND_ON]
description = Turn on Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=1

[gcode_macro LED_HOTEND_OFF]
description = Turn off Hotend LEDs
gcode = 
    SET_PIN PIN=LED_Hotend VALUE=0

[gcode_macro LED_LOGO_ON]
description = Turn on Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=1

[gcode_macro LED_LOGO_OFF]
description = Turn off Logo LEDs
gcode = 
    SET_PIN PIN=LED_Logo VALUE=0

[gcode_macro M204]
description = Sets maximum accelleration
rename_existing = M204.1
gcode = 
    {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s}
    {% else %}
    {% if 'P' in params %}
    {% set p = params.P|float %}
    {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% else %}
    SET_VELOCITY_LIMIT ACCEL={p}
    {% endif %}
    {% elif 'T' in params %}
    {% set t = params.T|float %}
    SET_VELOCITY_LIMIT ACCEL={t}
    {% endif %}
    {% endif %}

[gcode_macro M205]
description = Sets square corner velocity
gcode = 
    {% if 'X' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
    {% elif 'Y' in params %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
    {% endif %}

[gcode_macro M109]
description = Managing extruder temperature
rename_existing = M99109
gcode = 
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[gcode_macro M190]
description = Managing bed temperature
rename_existing = M99190
gcode = 
    {% set s = params.S|float %}
    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
    {% if s != 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
    {% endif %}

[delayed_gcode bed_mesh_init]
initial_duration = .01
gcode = 
    BED_MESH_PROFILE LOAD=default

[gcode_macro SECURITY_OFFSET]
description = Apply a 2mm Safety Offset
gcode = 
    SET_GCODE_OFFSET Z=+2
    RESPOND MSG="Safety Offset applied!"

[gcode_macro SET_GCODE_OFFSET]
description = Saving Z-Offset
rename_existing = _SET_GCODE_OFFSET
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    {% else %}
    {% set zoffset = {'z': None} %}
    {% endif %}
    {% set ns = namespace(zoffset={'z': zoffset.z}) %}
    _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
    {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
    {%if 'Z_ADJUST' in params %}
    {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
    {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
    {% endif %}
    SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"

[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration = 2
gcode = 
    {% if printer.save_variables.variables.zoffset %}
    {% set zoffset = printer.save_variables.variables.zoffset %}
    _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
    RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
    {% endif %}

[printer]
kinematics = delta
max_velocity = 600
max_accel = 10000
minimum_cruise_ratio = 0.5
square_corner_velocity = 5
max_z_velocity = 100
max_z_accel = 1500
minimum_z_position = -25
print_radius = 152
delta_radius = 152

[stepper_a]
step_pin = PE3
dir_pin = PE2
enable_pin = !PE4
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA15
homing_speed = 50
homing_retract_dist = 5.0
homing_retract_speed = 10
angle = 210
position_endstop = 415.0
arm_length = 345.0

[tmc2209 stepper_a]
uart_pin = PD5
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_b]
step_pin = PE0
dir_pin = PB9
enable_pin = !PE1
microsteps = 64
rotation_distance = 40
endstop_pin = ^PA12
angle = 330

[tmc2209 stepper_b]
uart_pin = PD7
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[stepper_c]
step_pin = PB5
dir_pin = PB4
enable_pin = !PB8
microsteps = 64
rotation_distance = 40
endstop_pin = ^PC4
angle = 90

[tmc2209 stepper_c]
uart_pin = PD4
run_current = 1.2
interpolate = False
stealthchop_threshold = 0

[extruder]
step_pin = PD6
dir_pin = !PD3
enable_pin = !PB3
microsteps = 16
rotation_distance = 4.5
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PC3
sensor_type = ATC Semitec 104NT-4-R025H42G
sensor_pin = PC1
min_temp = -5
max_temp = 315
max_extrude_cross_section = 50
max_extrude_only_distance = 800
control = pid
pid_kp = 17.501
pid_ki = 0.711
pid_kd = 107.630

[tmc2209 extruder]
uart_pin = PD9
run_current = 0.900
interpolate = True
stealthchop_threshold = 0

[heater_bed]
heater_pin = PA0
sensor_pin = PC0
sensor_type = EPCOS 100K B57560G104F
min_temp = -5
max_temp = 120
control = pid
pid_kp = 64.044
pid_ki = 3.812
pid_kd = 268.984

[filament_switch_sensor filament_sensor]
pause_on_runout = True
runout_gcode = M600
switch_pin = PA4

[fan]
pin = PB1

[heater_fan Hotend]
pin = PB0
heater_temp = 50.0

[probe]
pin = !PA11
x_offset = 0
y_offset = 0
z_offset = 0
speed = 10
lift_speed = 50
samples = 3
samples_result = average
sample_retract_dist = 6
samples_tolerance = 0.02
samples_tolerance_retries = 5

[delta_calibrate]
radius = 147
horizontal_move_z = 30
speed = 100

[bed_mesh]
speed = 100
horizontal_move_z = 30
mesh_radius = 147
mesh_origin = 0,0
mesh_pps = 4,4
round_probe_count = 9
algorithm = bicubic
bicubic_tension = 0.1
move_check_distance = 3
zero_reference_position = 0,0

[verify_heater extruder]
max_error = 160
heating_gain = 1

[verify_heater heater_bed]
max_error = 120
heating_gain = 1

[firmware_retraction]
retract_length = 0.7
retract_speed = 40
unretract_extra_length = 0.05
unretract_speed = 40

[input_shaper]
shaper_freq_x = 38.6
shaper_type_x = mzv
shaper_freq_y = 45
shaper_type_y = ei

[idle_timeout]
timeout = 1800

[save_variables]
filename = ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution = 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path = ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero = False

[endstop_phase stepper_b]
endstop_align_zero = False

[endstop_phase stepper_c]
endstop_align_zero = False

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method = command

[temperature_sensor Speeder_Pad]
sensor_type = temperature_host
min_temp = 10
max_temp = 100

[temperature_sensor Motherboard]
sensor_type = temperature_mcu
min_temp = 0
max_temp = 100

[output_pin LED_Hotend]
pin = PE12
pwm = False
value = 0

[output_pin LED_Logo]
pin = PD11
pwm = False
value = 1
=======================
Delta max build height 415.00mm (radius tapered above 379.71mm)
Delta max build radius 152.00mm (moves slowed past 175.30mm and 188.31mm)
Extruder max_extrude_ratio=20.787584
mcu 'mcu': Starting serial connect
webhooks client 4106365464: New connection
webhooks client 4106365464: Client info {'program': 'Moonraker', 'version': 'v0.8.0-379-g346a3d7'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 262, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    self.serial.raw_send_wait_ack(cmds[-1], minclock, reqclock,
  File "/home/pi/klipper/klippy/serialhdl.py", line 254, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'mcu': Serial connection closed


 

désolé c'est la totalité des fichiers log, je ne sis pas où sont les parties intérréssantes !

Posté(e) (modifié)
il y a 7 minutes, Sevene61 a dit :

[mcu]
serial = /dev/serial/by-id/<your-mcu-id>

il faut le paramétrer ton mcu quand même 🙂

En ssh dans la console tu tapes
ls /dev/serial/by-id/*

ça devrais te remonter le nom de ton mcu à recopier dans le printer.cfg (attention à bien conserver le chemin complet avec /dev/serial/byid/xxxxxxxxxxxxxxxx)

 

En bas du log le mcu est bien paramétré mais il ne marche pas correctement, tu peux vérifier le câble usb (et essayer avec un autre si tu en as un)

Modifié (le) par Savate
Posté(e)
il y a 53 minutes, Sevene61 a dit :

image.png.f0e5e92ac38f1be09ee1669a2f14ff0c.png

J'obtiens cela , que j'ai déjà copié dans le fichier printer,, quand tu parle de câble USB, duquel tu parles ? merci

 

Celui qui va de l’imprimante à ton boîtier Ubuntu 

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...