From a013b81b01126ff7ba26d9e1aae533e6b2c5633d Mon Sep 17 00:00:00 2001
From: zkk <1007518571@qq.com>
Date: Sat, 7 Sep 2024 17:18:12 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9ED1000=E9=85=8D=E7=BD=AE?=
 =?UTF-8?q?=E6=96=87=E4=BB=B6=20=E4=BC=98=E5=8C=96D600Pro2=E5=92=8CF430NX?=
 =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 config/CreatBot_D1000/base.cfg                | 526 +++++++++++++++++
 config/CreatBot_D1000/printer.cfg             |  28 +
 config/CreatBot_D600Pro2.cfg                  | 416 --------------
 config/CreatBot_D600Pro2/base.cfg             | 526 +++++++++++++++++
 config/CreatBot_D600Pro2/printer.cfg          |  28 +
 .../base.cfg}                                 | 529 ++++++++++--------
 config/CreatBot_F430NX/printer.cfg            |  28 +
 7 files changed, 1434 insertions(+), 647 deletions(-)
 create mode 100644 config/CreatBot_D1000/base.cfg
 create mode 100644 config/CreatBot_D1000/printer.cfg
 delete mode 100644 config/CreatBot_D600Pro2.cfg
 create mode 100644 config/CreatBot_D600Pro2/base.cfg
 create mode 100644 config/CreatBot_D600Pro2/printer.cfg
 rename config/{CreatBot_F430NX.cfg => CreatBot_F430NX/base.cfg} (52%)
 create mode 100644 config/CreatBot_F430NX/printer.cfg

diff --git a/config/CreatBot_D1000/base.cfg b/config/CreatBot_D1000/base.cfg
new file mode 100644
index 000000000..35176a92f
--- /dev/null
+++ b/config/CreatBot_D1000/base.cfg
@@ -0,0 +1,526 @@
+# This is a configuration file for the Creatbot D1000.
+[include mainsail.cfg]
+
+[virtual_sdcard]
+path: ~/printer_data/gcodes
+on_error_gcode: CANCEL_PRINT
+
+[save_variables]
+filename: ~/printer_data/config/config_variables.cfg
+
+[exclude_object]
+
+[gcode_arcs]
+resolution: 1.0
+
+[force_move]
+enable_force_move: True
+
+[idle_timeout]
+gcode:
+  {% if printer.webhooks.state|lower == 'ready' %}
+    {% if printer.pause_resume.is_paused|lower == 'false' %}
+      TURN_OFF_HEATERS
+    {% endif %}
+  {% endif %}
+timeout: 1800 # 0.5 hour timeout
+
+# F446 MotherBoard ID
+[mcu]
+canbus_uuid:000000000010
+canbus_interface: can0
+
+[printer]
+kinematics: cartesian
+max_velocity: 300
+max_accel: 5000
+max_z_velocity: 10
+max_z_accel: 100
+square_corner_velocity: 2.5
+
+[bed_mesh]
+speed: 300
+horizontal_move_z: 5
+mesh_min: 40,60
+mesh_max: 1000, 1000
+probe_count: 6,6
+mesh_pps: 2,2
+algorithm: bicubic
+bicubic_tension: 0.2
+
+[stepper_x]
+step_pin: PD1
+dir_pin: PD0
+enable_pin: !PA15
+rotation_distance: 75
+microsteps: 100
+full_steps_per_rotation: 200
+position_min: 0
+position_endstop: 0
+position_max: 1000
+homing_speed: 100
+homing_retract_speed: 50
+second_homing_speed: 5
+homing_retract_dist: 10
+# homing_positive_dir: true
+
+[stepper_y]
+step_pin: PD4
+dir_pin: !PD3
+enable_pin: !PD2
+rotation_distance: 75
+microsteps: 40
+full_steps_per_rotation: 200
+gear_ratio: 2.5:1
+endstop_pin: PC11
+position_min: 0
+position_endstop: 0
+position_max: 1000
+homing_speed: 100
+homing_retract_speed: 50
+second_homing_speed: 10
+homing_retract_dist: 10
+# homing_positive_dir: true
+
+[stepper_z]
+step_pin: PD7
+dir_pin: PD6
+enable_pin: !PD5
+rotation_distance: 5
+gear_ratio: 3:1
+microsteps: 16
+full_steps_per_rotation: 200
+endstop_pin: probe:z_virtual_endstop
+position_max: 1000
+position_min: -4
+homing_speed: 10
+second_homing_speed: 1
+homing_retract_dist: 2.0
+
+[heater_bed]
+heater_pin: PD12
+sensor_type: Generic 3950
+sensor_pin: PC0
+max_power: 1.0
+min_temp: 0
+max_temp: 100
+# control: pid
+# pid_kp: 17.22
+# pid_ki: 0.9
+# pid_kd: 218.61
+
+[verify_heater heater_bed]
+max_error: 20
+hysteresis: 5
+check_gain_time: 120
+heating_gain: 2
+
+[heater_generic chamber]
+heater_pin:PD15
+max_power:1.0
+sensor_type: Generic 3950
+sensor_pin:PC3
+min_temp: 0
+max_temp: 60
+pwm_cycle_time: 0.3
+# control: pid
+# pid_kp: 30.68
+# pid_ki: 0.21
+# pid_kd: 0
+
+[verify_heater chamber]
+max_error: 120
+hysteresis: 5
+check_gain_time:300
+heating_gain: 1
+
+[fan_generic Air_filter_fan]
+pin: PC8
+max_power: 1.0
+shutdown_speed: 0.0
+kick_start_time: 1.0
+off_below: 0.10
+
+[filament_switch_sensor extruder]
+pause_on_runout: True
+runout_gcode:
+event_delay: 3.0
+pause_delay: 0.5
+switch_pin: ^PC14
+
+[filament_switch_sensor extruder1]
+pause_on_runout: True
+runout_gcode:
+event_delay: 3.0
+pause_delay: 0.5
+switch_pin: ^PC15
+
+# F072 nozzle ID
+[mcu tool]
+canbus_uuid: 000000000001
+canbus_interface: can0
+
+[stepper_x]
+endstop_pin: tool:PC0
+
+[adxl345]
+spi_speed: 5000000
+cs_pin: tool:PB12
+spi_software_sclk_pin:tool:PB13
+spi_software_mosi_pin:tool:PB15
+spi_software_miso_pin:tool:PB14
+rate: 3200
+
+[resonance_tester]
+accel_chip: adxl345
+probe_points: 300, 300, 20
+min_freq: 25
+max_freq: 70
+accel_per_hz: 100
+hz_per_sec: 1
+
+[fan]
+pin:tool:PA10
+kick_start_time: 0.5
+off_below: 0.10
+max_power: 1.0
+
+[heater_fan Sink_fan_0]
+pin:tool:PA8
+max_power: 1.0
+kick_start_time: 0.5
+heater: extruder
+off_below: 0.10
+heater_temp: 100
+
+[heater_fan Sink_fan_1]
+pin:tool:PA9
+max_power: 1.0
+kick_start_time: 0.5
+heater: extruder1
+off_below: 0.10
+heater_temp: 100
+
+[extruder]
+sensor_type: MAX31855
+sensor_pin: tool:PD2
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+
+[verify_heater extruder]
+max_error: 20
+check_gain_time: 60
+hysteresis: 10
+heating_gain: 1
+
+[extruder]
+step_pin: tool:PB1
+dir_pin: tool:PB2
+enable_pin: !tool:PB0
+microsteps: 16
+full_steps_per_rotation: 200
+rotation_distance:22.9116807962642578993
+gear_ratio: 48:19
+nozzle_diameter: 0.8
+filament_diameter: 1.750
+max_extrude_only_distance: 500.0
+max_extrude_only_velocity: 60.0
+max_extrude_only_accel: 1000.0
+max_extrude_cross_section:5
+heater_pin: tool:PC6
+max_power: 1.0
+min_temp: 0
+max_temp: 450
+min_extrude_temp: 180
+pressure_advance: 0.03
+pressure_advance_smooth_time:0.040
+# control = pid
+# pid_kp = 23.904
+# pid_ki = 1.476
+# pid_kd = 96.810
+
+[tmc5160 extruder]
+cs_pin:tool:PB7
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+run_current: 0.8
+interpolate: False
+sense_resistor: 0.075
+stealthchop_threshold: 0
+
+[extruder1]
+sensor_type: MAX31855
+sensor_pin: tool:PC12
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+
+[verify_heater extruder1]
+max_error: 20
+check_gain_time: 60
+hysteresis: 10
+heating_gain: 1
+
+[extruder1]
+step_pin: tool:PC4
+dir_pin: tool:PA7
+enable_pin: !tool:PC5
+microsteps: 16
+full_steps_per_rotation: 200
+rotation_distance: 22.9116807962642578993
+gear_ratio: 48:19
+nozzle_diameter: 0.8
+filament_diameter: 1.750
+max_extrude_only_distance: 500.0
+max_extrude_only_velocity: 60.0
+max_extrude_only_accel: 1000.0
+max_extrude_cross_section:5
+heater_pin: tool:PC7
+max_power: 1.0
+min_temp: 0
+max_temp: 450
+min_extrude_temp: 180
+pressure_advance: 0.032
+pressure_advance_smooth_time:0.040
+# control = pid
+# pid_kp = 23.904
+# pid_ki = 1.476
+# pid_kd = 96.810
+
+[tmc5160 extruder1]
+cs_pin:tool:PC11
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+run_current: 0.8
+interpolate: False
+sense_resistor: 0.075
+stealthchop_threshold: 0
+
+[probe]
+pin: !tool:PC2
+x_offset: 36
+y_offset: 59
+#z_offset: 4
+speed: 5.0
+samples: 3
+samples_result: median
+sample_retract_dist: 2.0
+samples_tolerance: 0.05
+samples_tolerance_retries: 3
+deactivate_on_each_sample: False
+activate_gcode: PROBE_SERVO_OPEN
+deactivate_gcode: PROBE_SERVO_CLOSE
+
+[servo probe_servo]
+pin: tool:PC8
+maximum_servo_angle: 180
+minimum_pulse_width: 0.000900
+maximum_pulse_width: 0.002100
+initial_angle: 160
+# initial_pulse_width:
+
+[servo switch_nozzle]
+pin: tool:PC9
+maximum_servo_angle: 270
+minimum_pulse_width: 0.000512
+maximum_pulse_width: 0.002528
+initial_angle: 135
+# initial_pulse_width:
+
+[safe_z_home]
+home_xy_position: 500,500
+speed:100
+z_hop:5
+z_hop_speed: 10
+
+[gcode_macro T0]
+gcode:
+    SET_SERVO SERVO=switch_nozzle angle=135
+    G4 P500
+    SET_GCODE_OFFSET Z=0
+    SET_GCODE_OFFSET Y=0
+    SET_GCODE_OFFSET X=0
+    SET_SERVO SERVO=switch_nozzle angle=45
+    ACTIVATE_EXTRUDER EXTRUDER=extruder
+
+[gcode_macro T1]
+gcode:
+    {% set sv = printer.save_variables.variables %}
+    {% set x_offset = sv.dual_x_offset|default(60)|float %}
+    {% set y_offset = sv.dual_y_offset|default(0)|float %}
+    {% set z_offset = sv.dual_z_offset|default(0)|float %}
+    SET_SERVO SERVO=switch_nozzle angle=135
+    G4 P500
+    SET_GCODE_OFFSET Z={z_offset}
+    SET_GCODE_OFFSET Y={y_offset}
+    SET_GCODE_OFFSET X={x_offset}
+    SET_SERVO SERVO=switch_nozzle angle=225
+    ACTIVATE_EXTRUDER EXTRUDER=extruder1
+
+[gcode_macro PROBE_SERVO_OPEN]
+gcode:
+    SET_SERVO SERVO=probe_servo angle=15
+    G4 P1000
+
+[gcode_macro PROBE_SERVO_CLOSE]
+gcode:
+   SET_SERVO SERVO=probe_servo angle=130
+
+[gcode_macro START_PRINT]
+gcode:
+    {% set BED_TEMP = params.BED|default(0)|float %}
+    {% set EXTRUDER_TEMP = params.EXTRUDER|default(0)|float %}
+    {% set EXTRUDER_TEMP1 = params.EXTRUDER1|default(0)|float %}
+    {% set CHAMBER_TEMP = params.CHAMBER|default(0)|float %}
+    {% if params.BED is defined %}
+        M140 S{BED_TEMP}
+    {% endif %}
+    {% if params.EXTRUDER is defined %}
+        M104 T0 S{EXTRUDER_TEMP}
+    {% endif %}
+    {% if params.EXTRUDER1 is defined %}
+        M104 T1 S{EXTRUDER_TEMP1}
+    {% endif %}
+    {% if params.CHAMBER is defined %}
+        M141 S{CHAMBER_TEMP}
+    {% endif %}
+    G28
+    #BED_MESH_CALIBRATE
+    {% if BED_TEMP != 0 %}
+        M190 S{BED_TEMP}
+    {% endif %}
+    {% if EXTRUDER_TEMP != 0 %}
+        M109 T0 S{EXTRUDER_TEMP}
+    {% endif %}
+    {% if EXTRUDER_TEMP1 != 0 %}
+        M109 T1 S{EXTRUDER_TEMP1}
+    {% endif %}
+    {% if CHAMBER_TEMP != 0 %}
+        M191 S{CHAMBER_TEMP}
+    {% endif %}
+    G92 E0
+    M117 Printing star...
+
+[gcode_macro END_PRINT]
+gcode:
+    M400
+    G92 E0
+    G1 E-10.0 F3600
+    G91
+    G0 Z1.00 X20.0 Y20.0 F6000
+    TURN_OFF_HEATERS
+    M107
+    G1 Z2 F3000
+    G90
+    G0  X590 Y590 F3600
+    # BED_MESH_CLEAR
+
+[gcode_macro LOAD_FILAMENT]
+variable_load_distance: 120
+variable_purge_distance: 25
+gcode:
+    {% set speed = params.SPEED|default(200) %}
+    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 20 %}
+    SAVE_GCODE_STATE NAME=load_state
+    G91
+    G92 E0
+    G1 E{load_distance} F{max_velocity} # fast-load
+    G1 E{purge_distance} F{speed} # purge
+    RESTORE_GCODE_STATE NAME=load_state
+
+[gcode_macro UNLOAD_FILAMENT]
+variable_unload_distance: 120
+variable_purge_distance: 25
+gcode:
+    {% set speed = params.SPEED|default(200) %}
+    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 20 %}
+    SAVE_GCODE_STATE NAME=unload_state
+    G91
+    G92 E0
+    G1 E{purge_distance} F{speed} # purge
+    G1 E-{unload_distance} F{max_velocity} # fast-unload
+    RESTORE_GCODE_STATE NAME=unload_state
+
+[gcode_macro SET_X_OFFSET]
+gcode:
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_x_offset=params.S|default(-60)|float %}
+    SAVE_VARIABLE VARIABLE=dual_x_offset VALUE={dual_x_offset}
+
+[gcode_macro SET_Y_OFFSET]
+gcode:
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_y_offset=params.S|default(0)|float %}
+    SAVE_VARIABLE VARIABLE=dual_y_offset VALUE={dual_y_offset}
+
+[gcode_macro SET_Z_OFFSET]
+gcode:
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_z_offset=params.S|default(0)|float %}
+    SAVE_VARIABLE VARIABLE=dual_z_offset VALUE={dual_z_offset}
+
+[gcode_macro _ACTIVATE_DEFAULT_EXTRUDER]
+  gcode:
+    {% if printer.toolhead.extruder == 'extruder' %}
+      T0
+    {% elif printer.toolhead.extruder == 'extruder1' %}
+      T1
+    {% endif %}
+
+[gcode_macro G28]
+rename_existing: C28
+gcode:
+    {% set homing_cmd = ''%}
+    {% set do_x = 'X' in params|string %}
+    {% set do_y = 'Y' in params|string %}
+    {% set do_z = 'Z' in params|string %}
+
+    {% if do_x %} 
+        {% set homing_cmd = 'X ' %}
+    {% endif %}
+    {% if do_y %} 
+        {% set homing_cmd = homing_cmd + 'Y ' %}
+    {% endif %}
+    {% if do_z %}
+        {% if 'x' not in printer.toolhead.homed_axes|lower or 'y' not in printer.toolhead.homed_axes|lower %}
+            {% set homing_cmd = 'X Y Z' %}
+        {% else %}
+           {% set homing_cmd = homing_cmd + 'Z' %}
+        {% endif %}
+    {% endif %}
+    {% if not homing_cmd %}
+        C28
+        _ACTIVATE_DEFAULT_EXTRUDER
+    {% else %}
+        C28 {homing_cmd}
+        {% if 'X' in homing_cmd %}
+            _ACTIVATE_DEFAULT_EXTRUDER
+        {% endif %}
+    {% endif %}
+
+[gcode_macro M141]
+gcode:
+    {% set s = params.S|default(0)|float %}
+    {% if params.S is defined %}
+        SET_HEATER_TEMPERATURE HEATER=chamber target={s|int}
+    {% endif %}
+
+[gcode_macro M191]
+gcode:
+    {% set s = params.S|default(0)|float %}
+    {% if params.S is defined %}
+        M141 S{s}
+        {% if s != 0 %}
+            TEMPERATURE_WAIT SENSOR=chamber MINIMUM={s-1} MAXIMUM={s+2}
+        {% endif %}
+    {% endif %}
+
+[gcode_macro M84]
+rename_existing: C84
+gcode:
+    C84
+    SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
+
diff --git a/config/CreatBot_D1000/printer.cfg b/config/CreatBot_D1000/printer.cfg
new file mode 100644
index 000000000..cd8f451ef
--- /dev/null
+++ b/config/CreatBot_D1000/printer.cfg
@@ -0,0 +1,28 @@
+[include base.cfg]
+
+[extruder]
+control = pid
+pid_kp = 26.414
+pid_ki = 1.334
+pid_kd = 130.750
+
+[extruder1]
+control = pid
+pid_kp = 26.414
+pid_ki = 1.334
+pid_kd = 130.750
+
+[heater_bed]
+control = pid
+pid_kp = 52.123
+pid_ki = 0.922
+pid_kd = 736.891
+
+[heater_generic chamber]
+control: pid
+pid_kp: 30.68
+pid_ki: 0.21
+pid_kd: 0
+
+[probe]
+z_offset: 4
\ No newline at end of file
diff --git a/config/CreatBot_D600Pro2.cfg b/config/CreatBot_D600Pro2.cfg
deleted file mode 100644
index 0583ba29b..000000000
--- a/config/CreatBot_D600Pro2.cfg
+++ /dev/null
@@ -1,416 +0,0 @@
-# This is a configuration file for the Creatbot motherboard.
-
-[include D600Pro2_Head.cfg]
-
-[mcu]
-canbus_uuid:000000000010
-canbus_interface: can0
-
-[printer]
-kinematics: cartesian
-max_velocity: 300
-max_accel: 5000
-max_z_velocity: 10
-max_z_accel: 100
-square_corner_velocity: 2.5
-
-[bed_mesh]
-speed: 300
-horizontal_move_z: 3
-mesh_min: 40,60
-mesh_max: 600, 600
-probe_count: 6,6
-mesh_pps: 2,2
-algorithm: bicubic
-bicubic_tension: 0.2
-horizontal_move_z: 10
-
-[stepper_x]
-step_pin: PD1
-dir_pin: PD0
-enable_pin: !PA15
-rotation_distance: 75
-microsteps: 100
-full_steps_per_rotation: 200
-position_min: 0
-position_endstop: 0
-position_max: 600
-homing_speed: 100
-homing_retract_dist: 10
-# homing_positive_dir: true
-
-[stepper_y]
-step_pin: PD4
-dir_pin: !PD3
-enable_pin: !PD2
-rotation_distance: 75
-microsteps: 40
-full_steps_per_rotation: 200
-gear_ratio: 2.5:1
-endstop_pin: PC11
-position_min: 0
-position_endstop: 0
-position_max: 600
-homing_speed: 100
-homing_retract_dist: 10
-# homing_positive_dir: true
-
-[stepper_z]
-step_pin: PD7
-dir_pin: PD6
-enable_pin: !PD5
-rotation_distance: 5
-gear_ratio: 2.5:1
-microsteps: 16
-full_steps_per_rotation: 200
-endstop_pin: probe:z_virtual_endstop
-position_max: 600
-position_min: 0
-homing_speed: 5
-second_homing_speed: 1
-homing_retract_dist: 2.0
-
-[heater_bed]
-heater_pin: PD12
-sensor_type: Generic 3950
-sensor_pin: PC0
-max_power: 1.0
-min_temp: -12
-max_temp: 110
-
-control: pid
-pid_kp: 17.22
-pid_ki: 0.9
-pid_kd: 218.61
-
-[verify_heater heater_bed]
-max_error: 20
-hysteresis: 5
-check_gain_time: 120
-heating_gain: 2
-
-[heater_generic chamber]
-heater_pin:PD15
-max_power:1.0
-sensor_type:Generic 3950
-sensor_pin:PC3
-min_temp:-238
-max_temp:80
-control = pid
-pid_kp: 30.68
-pid_ki: 0.21
-pid_kd: 0
-
-[verify_heater chamber]
-max_error: 120
-hysteresis: 5
-check_gain_time:300
-heating_gain: 1
-
-[fan_generic Air_filter_fan]
-pin: PC8
-max_power: 1.0
-shutdown_speed: 0.0
-kick_start_time: 1.0
-off_below: 0.10
-
-[filament_switch_sensor extruder]
-pause_on_runout: True
-runout_gcode:
-
-event_delay: 3.0
-pause_delay: 0.5
-switch_pin:PC14
-
-[filament_switch_sensor extruder1]
-pause_on_runout: True
-runout_gcode:
-
-event_delay: 3.0
-pause_delay: 0.5
-switch_pin:PC15
-
-[mcu tool]
-canbus_uuid: 000000000001
-canbus_interface: can0
-
-[stepper_x]
-endstop_pin: tool:PC0
-
-[adxl345]
-spi_speed: 5000000
-cs_pin: tool:PB12
-spi_software_sclk_pin:tool:PB13
-spi_software_mosi_pin:tool:PB15
-spi_software_miso_pin:tool:PB14
-rate: 3200
-
-[resonance_tester]
-accel_chip: adxl345
-probe_points: 300, 300, 20
-min_freq: 25
-max_freq: 70
-accel_per_hz: 100
-hz_per_sec: 1
-
-[fan]
-pin:tool:PA10
-kick_start_time: 0.5
-off_below: 0.10
-max_power: 1.0
-
-[heater_fan Sink_fan_0]
-pin:tool:PA8
-max_power: 1.0
-kick_start_time: 0.5
-heater: extruder
-off_below: 0.10
-heater_temp: 100
-
-[heater_fan Sink_fan_1]
-pin:tool:PA9
-max_power: 1.0
-kick_start_time: 0.5
-heater: extruder1
-off_below: 0.10
-heater_temp: 100
-
-[extruder]
-sensor_type: MAX31855
-sensor_pin: tool:PD2
-spi_software_sclk_pin:tool:PB3
-spi_software_mosi_pin:tool:PB5
-spi_software_miso_pin:tool:PB4
-
-[verify_heater extruder]
-max_error: 20
-check_gain_time: 30
-hysteresis: 10
-heating_gain: 2
-
-[extruder]
-step_pin: tool:PB1
-dir_pin: tool:PB2
-enable_pin: !tool:PB0
-microsteps: 16
-full_steps_per_rotation: 200
-rotation_distance:22.9116807962642578993
-gear_ratio: 48:19
-nozzle_diameter: 1.00
-filament_diameter: 1.750
-max_extrude_only_distance: 500.0
-max_extrude_only_velocity: 60.0
-max_extrude_only_accel: 1000.0
-max_extrude_cross_section:5
-heater_pin: tool:PC6
-max_power: 1.0
-min_temp: -235
-max_temp: 450
-min_extrude_temp: 180
-pressure_advance: 0.03
-pressure_advance_smooth_time:0.040
-control = pid
-pid_kp = 23.904
-pid_ki = 1.476
-pid_kd = 96.810
-
-[tmc5160 extruder]
-cs_pin:tool:PB7
-spi_software_sclk_pin:tool:PB3
-spi_software_mosi_pin:tool:PB5
-spi_software_miso_pin:tool:PB4
-run_current: 0.5
-interpolate: False
-sense_resistor: 0.075
-stealthchop_threshold: 0
-
-[extruder1]
-sensor_type: MAX31855
-sensor_pin: tool:PC12
-spi_software_sclk_pin:tool:PB3
-spi_software_mosi_pin:tool:PB5
-spi_software_miso_pin:tool:PB4
-
-[verify_heater extruder1]
-max_error: 20
-check_gain_time: 30
-hysteresis: 10
-heating_gain: 2
-
-[extruder1]
-step_pin: tool:PC4
-dir_pin: tool:PA7
-enable_pin: !tool:PC5
-microsteps: 16
-full_steps_per_rotation: 200
-rotation_distance: 22.9116807962642578993
-gear_ratio: 48:19
-nozzle_diameter: 0.400
-filament_diameter: 1.750
-max_extrude_only_distance: 500.0
-max_extrude_only_velocity: 60.0
-max_extrude_only_accel: 1000.0
-heater_pin: tool:PC7
-max_power: 1.0
-min_temp: -12
-max_temp: 450
-min_extrude_temp: 180
-pressure_advance: 0.032
-pressure_advance_smooth_time:0.040
-control = pid
-pid_kp = 23.904
-pid_ki = 1.476
-pid_kd = 96.810
-
-[tmc5160 extruder1]
-cs_pin:tool:PC11
-spi_software_sclk_pin:tool:PB3
-spi_software_mosi_pin:tool:PB5
-spi_software_miso_pin:tool:PB4
-run_current: 0.5
-interpolate: False
-sense_resistor: 0.075
-stealthchop_threshold: 0
-
-[probe]
-pin: !tool:PC2
-x_offset: 36
-y_offset: 59
-#z_offset: 1.699
-#speed: 10.0
-#samples: 3
-#samples_result: median
-#sample_retract_dist: 4.0
-#samples_tolerance: 0.007
-#samples_tolerance_retries: 3
-deactivate_on_each_sample: False
-activate_gcode: probe_open
-deactivate_gcode: probe_close
-
-[safe_z_home]
-home_xy_position:300,300
-speed:200
-z_hop:5
-
-[servo probe_servo]
-pin: tool:PC8
-
-maximum_servo_angle: 180
-minimum_pulse_width: 0.000900
-maximum_pulse_width: 0.002100
-initial_angle: 160
-# initial_pulse_width:
-
-[servo switch_nozzle]
-pin: tool:PC9
-maximum_servo_angle: 270
-minimum_pulse_width: 0.000512
-maximum_pulse_width: 0.002528
-initial_angle: 135
-# initial_pulse_width:
-
-[gcode_macro M141]
-gcode:
-    {% set s = params.S|default(0)|float %}
-    SET_HEATER_TEMPERATURE HEATER=chamber target={s}
-
-[gcode_macro T0]
-gcode:
-    SET_SERVO SERVO=switch_nozzle angle=135                             
-    G4 P500
-    SET_GCODE_OFFSET Z=0 MOVE=1 MOVE_SPEED=200                        
-    SET_GCODE_OFFSET Y=0 MOVE=1 MOVE_SPEED=200                        
-    SET_GCODE_OFFSET X=0 MOVE=1 MOVE_SPEED=200                        
-    SET_SERVO SERVO=switch_nozzle angle=45                            
-    ACTIVATE_EXTRUDER EXTRUDER=extruder 
-
-[gcode_macro T1] 
-gcode:
-    SET_SERVO SERVO=switch_nozzle angle=135                            
-    G4 P500
-    SET_GCODE_OFFSET Z=0.918228  MOVE=1 MOVE_SPEED=200
-    SET_GCODE_OFFSET Y=0.433750  MOVE=1 MOVE_SPEED=200
-    SET_GCODE_OFFSET X=-59.227500 MOVE=1 MOVE_SPEED=200
-    SET_SERVO SERVO=switch_nozzle angle=225                            
-    ACTIVATE_EXTRUDER EXTRUDER=extruder1
-
-[gcode_macro probe_open]
-gcode:
-    SET_SERVO SERVO=probe_servo angle=15 
-    G4 P1000
-
-[gcode_macro probe_close]
-gcode:
-   SET_SERVO SERVO=probe_servo angle=130
-
-[gcode_arcs]                    
-resolution: 1.0                  
-
-[gcode_macro PRINT_START]  
-gcode:
-    {% set BED_TEMP = params.BED|float %}
-    {% set EXTRUDER_TEMP = params.EXTRUDER|float %}
-    {% set EXTRUDER_TEMP1 = params.EXTRUDER1|default(0)|float %}
-    {% set CHAMBER_TEMP = params.CHAMBER|default(0)|float %}
-   
-    M140 S{BED_TEMP}
-    M104 S{EXTRUDER_TEMP}
-    M104 T1 S{EXTRUDER_TEMP1}
-    M141 S{CHAMBER_TEMP}
-    T0
-    G28                            
-    BED_MESH_CALIBRATE
-    M109 S{EXTRUDER_TEMP}         
-    M109 T1 S{EXTRUDER_TEMP1}
-    G92 E0
-    M117 Printing star...
-
-[gcode_macro PRINT_END]          
-gcode:
-    M400                         
-    G92 E0                       
-    G1 E-10.0 F3600              
-    G91                          
-    G0 Z1.00 X20.0 Y20.0 F6000   
-    TURN_OFF_HEATERS             
-    M107                         
-    G1 Z2 F3000                  
-    G90                          
-    G0  X590 Y590 F3600          
-    BED_MESH_CLEAR               
-
-[gcode_macro M109]
-rename_existing: M109109
-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 LOAD_FILAMENT]
-variable_load_distance:  100
-variable_purge_distance:  25
-gcode:
-    {% set speed = params.SPEED|default(200) %}
-    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 60 %}
-    SAVE_GCODE_STATE NAME=load_state
-    G91
-    G92 E0
-    G1 E{load_distance} F{max_velocity} # fast-load
-    G1 E{purge_distance} F{speed} # purge
-    RESTORE_GCODE_STATE NAME=load_state
-
-[gcode_macro UNLOAD_FILAMENT]
-variable_unload_distance:  100
-variable_purge_distance:  25
-gcode:
-    {% set speed = params.SPEED|default(200) %}
-    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 60 %}
-    SAVE_GCODE_STATE NAME=unload_state
-    G91
-    G92 E0
-    G1 E{purge_distance} F{speed} # purge
-    G1 E-{unload_distance} F{max_velocity} # fast-unload
-    RESTORE_GCODE_STATE NAME=unload_state
diff --git a/config/CreatBot_D600Pro2/base.cfg b/config/CreatBot_D600Pro2/base.cfg
new file mode 100644
index 000000000..384e5bfa5
--- /dev/null
+++ b/config/CreatBot_D600Pro2/base.cfg
@@ -0,0 +1,526 @@
+# This is a configuration file for the Creatbot D600Pro2.
+[include mainsail.cfg]
+
+[virtual_sdcard]
+path: ~/printer_data/gcodes
+on_error_gcode: CANCEL_PRINT
+
+[save_variables]
+filename: ~/printer_data/config/config_variables.cfg
+
+[exclude_object]
+
+[gcode_arcs]
+resolution: 1.0
+
+[force_move]
+enable_force_move: True
+
+[idle_timeout]
+gcode:
+  {% if printer.webhooks.state|lower == 'ready' %}
+    {% if printer.pause_resume.is_paused|lower == 'false' %}
+      TURN_OFF_HEATERS
+    {% endif %}
+  {% endif %}
+timeout: 1800 # 0.5 hour timeout
+
+# F446 MotherBoard ID
+[mcu]
+canbus_uuid:000000000010
+canbus_interface: can0
+
+[printer]
+kinematics: cartesian
+max_velocity: 300
+max_accel: 5000
+max_z_velocity: 10
+max_z_accel: 100
+square_corner_velocity: 2.5
+
+[bed_mesh]
+speed: 300
+horizontal_move_z: 5
+mesh_min: 40,60
+mesh_max: 600, 600
+probe_count: 6,6
+mesh_pps: 2,2
+algorithm: bicubic
+bicubic_tension: 0.2
+
+[stepper_x]
+step_pin: PD1
+dir_pin: PD0
+enable_pin: !PA15
+rotation_distance: 75
+microsteps: 100
+full_steps_per_rotation: 200
+position_min: 0
+position_endstop: 0
+position_max: 600
+homing_speed: 100
+homing_retract_speed: 50
+second_homing_speed: 5
+homing_retract_dist: 10
+# homing_positive_dir: true
+
+[stepper_y]
+step_pin: PD4
+dir_pin: !PD3
+enable_pin: !PD2
+rotation_distance: 75
+microsteps: 40
+full_steps_per_rotation: 200
+gear_ratio: 2.5:1
+endstop_pin: PC11
+position_min: 0
+position_endstop: 0
+position_max: 600
+homing_speed: 100
+homing_retract_speed: 50
+second_homing_speed: 10
+homing_retract_dist: 10
+# homing_positive_dir: true
+
+[stepper_z]
+step_pin: PD7
+dir_pin: PD6
+enable_pin: !PD5
+rotation_distance: 5
+gear_ratio: 3:1
+microsteps: 16
+full_steps_per_rotation: 200
+endstop_pin: probe:z_virtual_endstop
+position_max: 600
+position_min: -4
+homing_speed: 10
+second_homing_speed: 1
+homing_retract_dist: 2.0
+
+[heater_bed]
+heater_pin: PD12
+sensor_type: Generic 3950
+sensor_pin: PC0
+max_power: 1.0
+min_temp: 0
+max_temp: 100
+# control: pid
+# pid_kp: 59.368
+# pid_ki: 1.656
+# pid_kd: 532.083
+
+[verify_heater heater_bed]
+max_error: 20
+hysteresis: 5
+check_gain_time: 120
+heating_gain: 2
+
+[heater_generic chamber]
+heater_pin:PD15
+max_power:1.0
+sensor_type: Generic 3950
+sensor_pin:PC3
+min_temp: 0
+max_temp: 70
+pwm_cycle_time: 0.3
+# control: pid
+# pid_kp: 30.68
+# pid_ki: 0.21
+# pid_kd: 0
+
+[verify_heater chamber]
+max_error: 120
+hysteresis: 5
+check_gain_time:300
+heating_gain: 1
+
+[fan_generic Air_filter_fan]
+pin: PC8
+max_power: 1.0
+shutdown_speed: 0.0
+kick_start_time: 1.0
+off_below: 0.10
+
+[filament_switch_sensor extruder]
+pause_on_runout: True
+runout_gcode:
+event_delay: 3.0
+pause_delay: 0.5
+switch_pin: ^PC14
+
+[filament_switch_sensor extruder1]
+pause_on_runout: True
+runout_gcode:
+event_delay: 3.0
+pause_delay: 0.5
+switch_pin: ^PC15
+
+# F072 nozzle ID
+[mcu tool]
+canbus_uuid: 000000000001
+canbus_interface: can0
+
+[stepper_x]
+endstop_pin: tool:PC0
+
+[adxl345]
+spi_speed: 5000000
+cs_pin: tool:PB12
+spi_software_sclk_pin:tool:PB13
+spi_software_mosi_pin:tool:PB15
+spi_software_miso_pin:tool:PB14
+rate: 3200
+
+[resonance_tester]
+accel_chip: adxl345
+probe_points: 300, 300, 20
+min_freq: 25
+max_freq: 70
+accel_per_hz: 100
+hz_per_sec: 1
+
+[fan]
+pin:tool:PA10
+kick_start_time: 0.5
+off_below: 0.10
+max_power: 1.0
+
+[heater_fan Sink_fan_0]
+pin:tool:PA8
+max_power: 1.0
+kick_start_time: 0.5
+heater: extruder
+off_below: 0.10
+heater_temp: 100
+
+[heater_fan Sink_fan_1]
+pin:tool:PA9
+max_power: 1.0
+kick_start_time: 0.5
+heater: extruder1
+off_below: 0.10
+heater_temp: 100
+
+[extruder]
+sensor_type: MAX31855
+sensor_pin: tool:PD2
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+
+[verify_heater extruder]
+max_error: 20
+check_gain_time: 60
+hysteresis: 10
+heating_gain: 1
+
+[extruder]
+step_pin: tool:PB1
+dir_pin: tool:PB2
+enable_pin: !tool:PB0
+microsteps: 16
+full_steps_per_rotation: 200
+rotation_distance:22.9116807962642578993
+gear_ratio: 48:19
+nozzle_diameter: 0.6
+filament_diameter: 1.750
+max_extrude_only_distance: 500.0
+max_extrude_only_velocity: 60.0
+max_extrude_only_accel: 1000.0
+max_extrude_cross_section:5
+heater_pin: tool:PC6
+max_power: 1.0
+min_temp: 0
+max_temp: 450
+min_extrude_temp: 180
+pressure_advance: 0.03
+pressure_advance_smooth_time:0.040
+# control = pid
+# pid_kp = 24.737
+# pid_ki = 1.137
+# pid_kd = 134.508
+
+[tmc5160 extruder]
+cs_pin:tool:PB7
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+run_current: 0.8
+interpolate: False
+sense_resistor: 0.075
+stealthchop_threshold: 0
+
+[extruder1]
+sensor_type: MAX31855
+sensor_pin: tool:PC12
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+
+[verify_heater extruder1]
+max_error: 20
+check_gain_time: 60
+hysteresis: 10
+heating_gain: 1
+
+[extruder1]
+step_pin: tool:PC4
+dir_pin: tool:PA7
+enable_pin: !tool:PC5
+microsteps: 16
+full_steps_per_rotation: 200
+rotation_distance: 22.9116807962642578993
+gear_ratio: 48:19
+nozzle_diameter: 0.6
+filament_diameter: 1.750
+max_extrude_only_distance: 500.0
+max_extrude_only_velocity: 60.0
+max_extrude_only_accel: 1000.0
+max_extrude_cross_section:5
+heater_pin: tool:PC7
+max_power: 1.0
+min_temp: 0
+max_temp: 450
+min_extrude_temp: 180
+pressure_advance: 0.032
+pressure_advance_smooth_time:0.040
+# control = pid
+# pid_kp = 24.737
+# pid_ki = 1.137
+# pid_kd = 134.508
+
+[tmc5160 extruder1]
+cs_pin:tool:PC11
+spi_software_sclk_pin:tool:PB3
+spi_software_mosi_pin:tool:PB5
+spi_software_miso_pin:tool:PB4
+run_current: 0.8
+interpolate: False
+sense_resistor: 0.075
+stealthchop_threshold: 0
+
+[probe]
+pin: !tool:PC2
+x_offset: 36
+y_offset: 59
+#z_offset: 4
+speed: 5.0
+samples: 3
+samples_result: median
+sample_retract_dist: 2.0
+samples_tolerance: 0.05
+samples_tolerance_retries: 3
+deactivate_on_each_sample: False
+activate_gcode: PROBE_SERVO_OPEN
+deactivate_gcode: PROBE_SERVO_CLOSE
+
+[servo probe_servo]
+pin: tool:PC8
+maximum_servo_angle: 180
+minimum_pulse_width: 0.000900
+maximum_pulse_width: 0.002100
+initial_angle: 160
+# initial_pulse_width:
+
+[servo switch_nozzle]
+pin: tool:PC9
+maximum_servo_angle: 270
+minimum_pulse_width: 0.000512
+maximum_pulse_width: 0.002528
+initial_angle: 135
+# initial_pulse_width:
+
+[safe_z_home]
+home_xy_position: 500,500
+speed:100
+z_hop:5
+z_hop_speed: 10
+
+[gcode_macro T0]
+gcode:
+    SET_SERVO SERVO=switch_nozzle angle=135
+    G4 P500
+    SET_GCODE_OFFSET Z=0
+    SET_GCODE_OFFSET Y=0
+    SET_GCODE_OFFSET X=0
+    SET_SERVO SERVO=switch_nozzle angle=45
+    ACTIVATE_EXTRUDER EXTRUDER=extruder
+
+[gcode_macro T1]
+gcode:
+    {% set sv = printer.save_variables.variables %}
+    {% set x_offset = sv.dual_x_offset|default(60)|float %}
+    {% set y_offset = sv.dual_y_offset|default(0)|float %}
+    {% set z_offset = sv.dual_z_offset|default(0)|float %}
+    SET_SERVO SERVO=switch_nozzle angle=135
+    G4 P500
+    SET_GCODE_OFFSET Z={z_offset}
+    SET_GCODE_OFFSET Y={y_offset}
+    SET_GCODE_OFFSET X={x_offset}
+    SET_SERVO SERVO=switch_nozzle angle=225
+    ACTIVATE_EXTRUDER EXTRUDER=extruder1
+
+[gcode_macro PROBE_SERVO_OPEN]
+gcode:
+    SET_SERVO SERVO=probe_servo angle=15
+    G4 P1000
+
+[gcode_macro PROBE_SERVO_CLOSE]
+gcode:
+   SET_SERVO SERVO=probe_servo angle=130
+
+[gcode_macro START_PRINT]
+gcode:
+    {% set BED_TEMP = params.BED|default(0)|float %}
+    {% set EXTRUDER_TEMP = params.EXTRUDER|default(0)|float %}
+    {% set EXTRUDER_TEMP1 = params.EXTRUDER1|default(0)|float %}
+    {% set CHAMBER_TEMP = params.CHAMBER|default(0)|float %}
+    {% if params.BED is defined %}
+        M140 S{BED_TEMP}
+    {% endif %}
+    {% if params.EXTRUDER is defined %}
+        M104 T0 S{EXTRUDER_TEMP}
+    {% endif %}
+    {% if params.EXTRUDER1 is defined %}
+        M104 T1 S{EXTRUDER_TEMP1}
+    {% endif %}
+    {% if params.CHAMBER is defined %}
+        M141 S{CHAMBER_TEMP}
+    {% endif %}
+    G28
+    #BED_MESH_CALIBRATE
+    {% if BED_TEMP != 0 %}
+        M190 S{BED_TEMP}
+    {% endif %}
+    {% if EXTRUDER_TEMP != 0 %}
+        M109 T0 S{EXTRUDER_TEMP}
+    {% endif %}
+    {% if EXTRUDER_TEMP1 != 0 %}
+        M109 T1 S{EXTRUDER_TEMP1}
+    {% endif %}
+    {% if CHAMBER_TEMP != 0 %}
+        M191 S{CHAMBER_TEMP}
+    {% endif %}
+    G92 E0
+    M117 Printing star...
+
+[gcode_macro END_PRINT]
+gcode:
+    M400
+    G92 E0
+    G1 E-10.0 F3600
+    G91
+    G0 Z1.00 X20.0 Y20.0 F6000
+    TURN_OFF_HEATERS
+    M107
+    G1 Z2 F3000
+    G90
+    G0  X590 Y590 F3600
+    # BED_MESH_CLEAR
+
+[gcode_macro LOAD_FILAMENT]
+variable_load_distance: 120
+variable_purge_distance: 25
+gcode:
+    {% set speed = params.SPEED|default(200) %}
+    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 20 %}
+    SAVE_GCODE_STATE NAME=load_state
+    G91
+    G92 E0
+    G1 E{load_distance} F{max_velocity} # fast-load
+    G1 E{purge_distance} F{speed} # purge
+    RESTORE_GCODE_STATE NAME=load_state
+
+[gcode_macro UNLOAD_FILAMENT]
+variable_unload_distance: 120
+variable_purge_distance: 25
+gcode:
+    {% set speed = params.SPEED|default(200) %}
+    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 20 %}
+    SAVE_GCODE_STATE NAME=unload_state
+    G91
+    G92 E0
+    G1 E{purge_distance} F{speed} # purge
+    G1 E-{unload_distance} F{max_velocity} # fast-unload
+    RESTORE_GCODE_STATE NAME=unload_state
+
+[gcode_macro SET_X_OFFSET]
+gcode:
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_x_offset=params.S|default(-60)|float %}
+    SAVE_VARIABLE VARIABLE=dual_x_offset VALUE={dual_x_offset}
+
+[gcode_macro SET_Y_OFFSET]
+gcode:
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_y_offset=params.S|default(0)|float %}
+    SAVE_VARIABLE VARIABLE=dual_y_offset VALUE={dual_y_offset}
+
+[gcode_macro SET_Z_OFFSET]
+gcode:
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_z_offset=params.S|default(0)|float %}
+    SAVE_VARIABLE VARIABLE=dual_z_offset VALUE={dual_z_offset}
+
+[gcode_macro _ACTIVATE_DEFAULT_EXTRUDER]
+  gcode:
+    {% if printer.toolhead.extruder == 'extruder' %}
+      T0
+    {% elif printer.toolhead.extruder == 'extruder1' %}
+      T1
+    {% endif %}
+
+[gcode_macro G28]
+rename_existing: C28
+gcode:
+    {% set homing_cmd = ''%}
+    {% set do_x = 'X' in params|string %}
+    {% set do_y = 'Y' in params|string %}
+    {% set do_z = 'Z' in params|string %}
+
+    {% if do_x %} 
+        {% set homing_cmd = 'X ' %}
+    {% endif %}
+    {% if do_y %} 
+        {% set homing_cmd = homing_cmd + 'Y ' %}
+    {% endif %}
+    {% if do_z %}
+        {% if 'x' not in printer.toolhead.homed_axes|lower or 'y' not in printer.toolhead.homed_axes|lower %}
+            {% set homing_cmd = 'X Y Z' %}
+        {% else %}
+           {% set homing_cmd = homing_cmd + 'Z' %}
+        {% endif %}
+    {% endif %}
+    {% if not homing_cmd %}
+        C28
+        _ACTIVATE_DEFAULT_EXTRUDER
+    {% else %}
+        C28 {homing_cmd}
+        {% if 'X' in homing_cmd %}
+            _ACTIVATE_DEFAULT_EXTRUDER
+        {% endif %}
+    {% endif %}
+
+[gcode_macro M141]
+gcode:
+    {% set s = params.S|default(0)|float %}
+    {% if params.S is defined %}
+        SET_HEATER_TEMPERATURE HEATER=chamber target={s|int}
+    {% endif %}
+
+[gcode_macro M191]
+gcode:
+    {% set s = params.S|default(0)|float %}
+    {% if params.S is defined %}
+        M141 S{s}
+        {% if s != 0 %}
+            TEMPERATURE_WAIT SENSOR=chamber MINIMUM={s-1} MAXIMUM={s+2}
+        {% endif %}
+    {% endif %}
+
+[gcode_macro M84]
+rename_existing: C84
+gcode:
+    C84
+    SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
+
diff --git a/config/CreatBot_D600Pro2/printer.cfg b/config/CreatBot_D600Pro2/printer.cfg
new file mode 100644
index 000000000..03b88327f
--- /dev/null
+++ b/config/CreatBot_D600Pro2/printer.cfg
@@ -0,0 +1,28 @@
+[include base.cfg]
+
+[extruder]
+control = pid
+pid_kp = 39.960
+pid_ki = 2.537
+pid_kd = 157.344
+
+[extruder1]
+control = pid
+pid_kp = 39.960
+pid_ki = 2.537
+pid_kd = 157.344
+
+[heater_bed]
+control = pid
+pid_kp = 40.673
+pid_ki = 0.837
+pid_kd = 494.176
+
+[heater_generic chamber]
+control = pid
+pid_kp = 59.529
+pid_ki = 0.621
+pid_kd = 1426.459
+
+[probe]
+z_offset: 4
\ No newline at end of file
diff --git a/config/CreatBot_F430NX.cfg b/config/CreatBot_F430NX/base.cfg
similarity index 52%
rename from config/CreatBot_F430NX.cfg
rename to config/CreatBot_F430NX/base.cfg
index c9f40f3fe..e681d1c4b 100644
--- a/config/CreatBot_F430NX.cfg
+++ b/config/CreatBot_F430NX/base.cfg
@@ -1,12 +1,29 @@
 # This is a configuration file for the Creatbot F430NX.
+[include mainsail.cfg]
 
 [virtual_sdcard]
-path: /home/klipper/printer_data/gcodes
+path: ~/printer_data/gcodes
 on_error_gcode: CANCEL_PRINT
+
+[save_variables]
+filename: ~/printer_data/config/config_variables.cfg
+
 [exclude_object]
 
+[gcode_arcs]
+resolution: 1.0
+
+[force_move]
+enable_force_move: True
+
 [idle_timeout]
-timeout: 1800
+gcode:
+  {% if printer.webhooks.state|lower == 'ready' %}
+    {% if printer.pause_resume.is_paused|lower == 'false' %}
+      TURN_OFF_HEATERS
+    {% endif %}
+  {% endif %}
+timeout: 1800 # 0.5 hour timeout
 
 # F446 MotherBoard ID
 [mcu]                           
@@ -16,13 +33,13 @@ canbus_interface: can0
 [printer]                      
 kinematics: cartesian           
 max_velocity: 300               
-max_accel: 5000                 
-max_z_velocity: 8              
+max_accel: 3000                 
+max_z_velocity: 10              
 max_z_accel: 100               
-square_corner_velocity: 4.0     
+square_corner_velocity: 5.0
 
 [bed_mesh]
-speed: 200
+speed: 100
 horizontal_move_z: 5
 mesh_min: 34.6,17.4
 mesh_max: 420, 300
@@ -31,28 +48,26 @@ mesh_pps: 2,2
 algorithm: bicubic
 bicubic_tension: 0.2
 
-
 [stepper_x]
-step_pin: PD1                       
-dir_pin: !PD0                       
-enable_pin: !PA15                  
-rotation_distance: 50.8            
-microsteps: 64                    
-full_steps_per_rotation: 200      
+step_pin: PD1
+dir_pin: !PD0
+enable_pin: !PA15
+rotation_distance: 50.8
+microsteps: 64
+full_steps_per_rotation: 200
 endstop_pin: ^PC10              
-position_min: -10                   
-position_endstop: 0                 
-position_max: 420                   
-homing_speed: 100                   
-homing_retract_dist: 10              
+position_min: -20                   
+position_endstop: -20                 
+position_max: 475                   
+homing_speed: 100
+homing_retract_dist: 10
 
 [tmc5160 stepper_x]                
 cs_pin: PE2                       
 spi_software_sclk_pin: PB3
 spi_software_mosi_pin: PB5
 spi_software_miso_pin: PB4
-run_current: 1.0
-hold_current: 0.5               
+run_current: 1.0             
 interpolate: True                 
 sense_resistor: 0.075              
 stealthchop_threshold: 200
@@ -66,26 +81,23 @@ rotation_distance: 50.8
 microsteps: 64
 full_steps_per_rotation: 200
 endstop_pin: ^PE7
-position_endstop: 495
-position_min: 75
-position_max: 500
+position_endstop: 475
+position_min: 55
+position_max: 475
 homing_speed: 100
 homing_retract_dist: 10
-safe_distance: 20
-
+safe_distance: 75
 
 [tmc5160 dual_carriage]
 cs_pin: PE8                        
 spi_software_sclk_pin: PB3
 spi_software_mosi_pin: PB5
 spi_software_miso_pin: PB4
-run_current: 1.0
-hold_current: 0.5                
+run_current: 1.0             
 interpolate: True                 
 sense_resistor: 0.075              
 stealthchop_threshold: 200      
 
-
 [stepper_y]
 step_pin: PD4
 dir_pin: !PD3
@@ -95,7 +107,7 @@ microsteps: 128
 full_steps_per_rotation: 200      
 gear_ratio: 1:1
 endstop_pin: ^PC11               
-position_min: -10
+position_min: 0
 position_endstop: 0
 position_max: 300
 homing_speed: 60
@@ -106,8 +118,7 @@ cs_pin: PE3
 spi_software_sclk_pin: PB3
 spi_software_mosi_pin: PB5
 spi_software_miso_pin: PB4
-run_current: 2.0
-hold_current: 0.5
+run_current: 2.3
 interpolate: True
 sense_resistor: 0.075
 stealthchop_threshold: 200
@@ -122,7 +133,7 @@ microsteps: 16
 full_steps_per_rotation: 200
 endstop_pin: probe:z_virtual_endstop 
 position_max: 300
-position_min: 0
+position_min: -4
 homing_speed: 10
 second_homing_speed: 1
 homing_retract_dist: 2.0
@@ -132,23 +143,22 @@ cs_pin: PE4
 spi_software_sclk_pin: PB3
 spi_software_mosi_pin: PB5
 spi_software_miso_pin: PB4
-run_current: 1.4
-hold_current: 0.5
+run_current: 0.8
 interpolate: True
 sense_resistor: 0.075
-stealthchop_threshold: 10
+stealthchop_threshold: 0
 
 [heater_bed]
 heater_pin: PD12
 sensor_type: Generic 3950
 sensor_pin: PC0
 max_power: 1.0
-min_temp: -235
-max_temp: 160
-control: pid
-pid_kp: 74.000
-pid_ki: 1.965
-pid_kd: 696.525
+min_temp: 0
+max_temp: 150
+# control: pid
+# pid_kp: 40.673
+# pid_ki: 0.837
+# pid_kd: 494.176
 
 [verify_heater heater_bed]
 max_error: 20
@@ -157,20 +167,22 @@ hysteresis: 5
 heating_gain: 2
 
 [heater_generic chamber]
-heater_pin:PD15
-max_power:1.0
-sensor_type:Generic 3950
-sensor_pin:PC3
-min_temp:-238
-max_temp:80
-control: pid
-pid_kp: 30.68
-pid_ki: 0.21
-pid_kd: 0
+heater_pin: PD15
+max_power: 1.0
+sensor_type: Generic 3950
+sensor_pin: PC3
+min_temp: 0
+max_temp: 70
+# control: pid
+# pid_kp: 30.68
+# pid_ki: 0.21
+# pid_kd: 0
 
 [verify_heater chamber]
-max_error: 20
-hysteresis: 2
+max_error: 120
+hysteresis: 5
+check_gain_time: 120
+heating_gain: 1
 
 [multi_pin fan]
 pins: L_tool:PA10, R_tool:PA10
@@ -188,12 +200,19 @@ max_power: 1.0
 shutdown_speed: 0.0
 kick_start_time: 1.0
 
+[delayed_gcode INIT_LIGHT]
+initial_duration:0.01
+gcode: 
+  {% set svv = printer.save_variables.variables %}
+  {% set luminance = svv.interior_lighting|default(0)|float %}
+  SET_LED LED=Interior_lighting WHITE={luminance} TRANSMIT=1 SYNC=0
+
 [led Interior_lighting]
 white_pin: PC7
 cycle_time: 0.010
-initial_WHITE: 1
+initial_WHITE: 0
 
-[neopixel Status_light]
+[neopixel _Status_light]
 pin: PB8
 chain_count: 1
 color_order: RGB
@@ -201,24 +220,19 @@ initial_RED: 0.3
 initial_GREEN: 0.3
 initial_BLUE: 0.3
 
-[safe_z_home]
-home_xy_position:200,150
-speed:150
-z_hop:5
-
 [filament_switch_sensor extruder]
 pause_on_runout: True
 runout_gcode:
 event_delay: 3.0
 pause_delay: 0.5
-switch_pin:PC14
+switch_pin: ^PC14
 
 [filament_switch_sensor extruder1]
 pause_on_runout: True
 runout_gcode:    
 event_delay: 3.0
 pause_delay: 0.5
-switch_pin:PC15 
+switch_pin: ^PC15 
 
 # F072 Left nozzle ID
 [mcu L_tool]
@@ -237,9 +251,9 @@ rate: 3200
 [resonance_tester]
 accel_chip: adxl345
 probe_points: 200, 150, 20
-min_freq: 25
+min_freq: 20
 max_freq: 70
-accel_per_hz: 100
+accel_per_hz: 200
 hz_per_sec: 1 
 
 [heater_fan Sink_fan_0]
@@ -278,15 +292,15 @@ max_extrude_only_accel: 1000.0
 max_extrude_cross_section:5
 heater_pin: L_tool:PA8
 max_power: 1.0
-min_temp: -235
-max_temp: 465
+min_temp: 0
+max_temp: 450
 min_extrude_temp: 150
 pressure_advance: 0.032
 pressure_advance_smooth_time:0.040
-control = pid
-pid_kp = 10.391
-pid_ki = 0.376
-pid_kd = 71.698
+# control = pid
+# pid_kp = 39.960
+# pid_ki = 2.537
+# pid_kd = 157.344
 
 [tmc2209 extruder]
 uart_pin:L_tool:PB7
@@ -299,16 +313,16 @@ stealthchop_threshold: 0
 pin: ^!L_tool:PA1                 
 x_offset: 34.6            
 y_offset: 17.4          
-z_offset: 0
+# z_offset: 0
 speed: 10.0
 samples: 3
 samples_result: median
-sample_retract_dist: 5.0
-samples_tolerance: 0.007
+sample_retract_dist: 2.0
+samples_tolerance: 0.05
 samples_tolerance_retries: 3
 deactivate_on_each_sample: False
-activate_gcode:     probe_start
-deactivate_gcode:   probe_end
+activate_gcode: PROBE_SERVO_OPEN
+deactivate_gcode: PROBE_SERVO_CLOSE
 
 [servo probe_servo]
 pin:L_tool:PA5
@@ -320,8 +334,8 @@ initial_angle: 160
 
 
 [input_shaper]
-shaper_freq_x: 0
-shaper_freq_y: 0
+#shaper_freq_x: 0
+#shaper_freq_y: 0
 shaper_type: mzv
 #shaper_type_x:
 #shaper_type_y:
@@ -369,15 +383,16 @@ max_extrude_only_accel: 1000.0
 max_extrude_cross_section:5
 heater_pin: R_tool:PA8
 max_power: 1.0
-min_temp: -235
-max_temp: 465
+min_temp: 0
+max_temp: 450
 min_extrude_temp: 150
 pressure_advance: 0.032
 pressure_advance_smooth_time:0.040
-control = pid
-pid_kp = 10.391
-pid_ki = 0.376
-pid_kd = 71.698
+# control = pid
+# pid_kp = 39.960
+# pid_ki = 2.537
+# pid_kd = 157.344
+
 
 
 [tmc2209 extruder1]
@@ -387,36 +402,78 @@ run_current: 0.6
 sense_resistor: 0.110
 stealthchop_threshold: 0
 
-[gcode_macro PARK_extruder]
+[safe_z_home]
+home_xy_position:200,150
+speed:150
+z_hop:5
+
+[gcode_macro ENABLE_FORCE_MOVE]
 gcode:
+    SET_KINEMATIC_POSITION X=200 Y=150 Z=150
+[gcode_macro _RESTORE_DEFAULT_EXTRUDER]
+gcode:
+    SET_GCODE_OFFSET Z=0
+    SET_GCODE_OFFSET Y=0
+    SET_GCODE_OFFSET X=0
+    ACTIVATE_EXTRUDER EXTRUDER=extruder
+    SET_DUAL_CARRIAGE CARRIAGE=0
+
+[gcode_macro _PARK_extruder]
+gcode:
+    ACTIVATE_EXTRUDER EXTRUDER=extruder
+    SET_DUAL_CARRIAGE CARRIAGE=0
     SAVE_GCODE_STATE NAME=park0
     G90
-    G1 X0 F6000
+    G1 X-20 F6000
     RESTORE_GCODE_STATE NAME=park0
 
 [gcode_macro T0]
 gcode:
-    PARK_{printer.toolhead.extruder}
-    ACTIVATE_EXTRUDER EXTRUDER=extruder
-    SET_DUAL_CARRIAGE CARRIAGE=0
-    SET_GCODE_OFFSET Y=0
-    G1 X10 F6000
-    
+    {% if "x" not in printer.toolhead.homed_axes %}
+        G28 X
+        {% set x_home = true %}
+    {% endif %}
+    {% if printer.toolhead.extruder != 'extruder' or x_home %}
+        _PARK_{printer.toolhead.extruder}
+        ACTIVATE_EXTRUDER EXTRUDER=extruder
+        SET_DUAL_CARRIAGE CARRIAGE=0
+        SET_GCODE_OFFSET Z=0
+        SET_GCODE_OFFSET Y=0
+        SET_GCODE_OFFSET X=0
+        G1 X0 F6000
+    {% endif %}
 
-[gcode_macro PARK_extruder1]
+[gcode_macro _PARK_extruder1]
 gcode:
-    SAVE_GCODE_STATE NAME=park1
-    G90
-    G1 X495
-    RESTORE_GCODE_STATE NAME=park1
-    
-[gcode_macro T1]
-gcode:
-    PARK_{printer.toolhead.extruder}
     ACTIVATE_EXTRUDER EXTRUDER=extruder1
     SET_DUAL_CARRIAGE CARRIAGE=1
-    SET_GCODE_OFFSET Y=0
-    G1 X485 F6000
+    SAVE_GCODE_STATE NAME=park1
+    G90
+    G1 X475
+    RESTORE_GCODE_STATE NAME=park1
+
+[gcode_macro T1]
+gcode:
+    {% set svv = printer.save_variables.variables %}
+    {% set x_offset = svv.dual_x_offset|default(0)|float %}
+    {% set y_offset = svv.dual_y_offset|default(0)|float %}
+    {% set z_offset = svv.dual_z_offset|default(0)|float %}
+
+    {% if "x" not in printer.toolhead.homed_axes %}
+        G28 X
+        {% set x_home = true %}
+    {% endif %}
+
+    {% if printer.toolhead.extruder != 'extruder1' or x_home %}
+        _PARK_{printer.toolhead.extruder}
+        ACTIVATE_EXTRUDER EXTRUDER=extruder1
+        SET_DUAL_CARRIAGE CARRIAGE=1
+        SET_GCODE_OFFSET Z={z_offset}
+        SET_GCODE_OFFSET Y={y_offset}
+        SET_GCODE_OFFSET X={x_offset}
+        G1 X455 F6000
+    {% endif %}
+
 
 [gcode_macro ACTIVATE_COPY_MODE]
 gcode:
@@ -434,174 +491,129 @@ gcode:
     G1 X0
     ACTIVATE_EXTRUDER EXTRUDER=extruder
     SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
-    G1 X495
+    G1 X455
     SET_DUAL_CARRIAGE CARRIAGE=1 MODE=MIRROR
     SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
 
     
-[gcode_macro probe_start]
+[gcode_macro PROBE_SERVO_OPEN]
 gcode:
     SET_SERVO SERVO=probe_servo angle=45 
     G4 P500
 
-[gcode_macro probe_end]
+[gcode_macro PROBE_SERVO_CLOSE]
 gcode:
    G4 P500
    SET_SERVO SERVO=probe_servo angle=135
 
 
-[gcode_arcs]
-resolution: 1.0
-
-[gcode_macro PRINT_START]
+[gcode_macro START_PRINT]
 gcode:
-    G28
-   {% set BED_TEMP = params.BED|float %}
-    {% set EXTRUDER_TEMP = params.EXTRUDER|float %}
+    {% set BED_TEMP = params.BED|default(0)|float %}
+    {% set EXTRUDER_TEMP = params.EXTRUDER|default(0)|float %}
     {% set EXTRUDER_TEMP1 = params.EXTRUDER1|default(0)|float %}
     {% set CHAMBER_TEMP = params.CHAMBER|default(0)|float %}
-    M140 S{BED_TEMP}
-    M104 S{EXTRUDER_TEMP}
-    M104 T1 S{EXTRUDER_TEMP1}
-    M141 S{CHAMBER_TEMP}
-    T0
+    {% if params.BED is defined %}
+        M140 S{BED_TEMP}
+    {% endif %}
+    {% if params.EXTRUDER is defined %}
+        M104 T0 S{EXTRUDER_TEMP}
+    {% endif %}
+    {% if params.EXTRUDER1 is defined %}
+        M104 T1 S{EXTRUDER_TEMP1}
+    {% endif %}
+    {% if params.CHAMBER is defined %}
+        M141 S{CHAMBER_TEMP}
+    {% endif %}
     G28
-    BED_MESH_CALIBRATE
-    M109 S{EXTRUDER_TEMP}
-    M109 T1 S{EXTRUDER_TEMP1}
+    # BED_MESH_CALIBRATE
+    {% if BED_TEMP != 0 %}
+        M190 S{BED_TEMP}
+    {% endif %}
+    {% if EXTRUDER_TEMP != 0 %}
+        M109 T0 S{EXTRUDER_TEMP}
+    {% endif %}
+    {% if EXTRUDER_TEMP1 != 0 %}
+        M109 T1 S{EXTRUDER_TEMP1}
+    {% endif %}
+    {% if CHAMBER_TEMP != 0 %}
+        M191 S{CHAMBER_TEMP}
+    {% endif %}
     G92 E0
     M117 Printing star...
 
-[gcode_macro PRINT_END]
+[gcode_macro END_PRINT]
 gcode:
     M400
     G92 E0
     G1 E-10.0 F3600
     G91
-    G0 Z1.00 X20.0 Y20.0 F6000
+    {% if printer["dual_carriage"] is defined %}
+        G0 Z1.00 F6000
+        _PARK_extruder
+        _PARK_extruder1
+    {% else %}
+        G0 Z1.00 X20.0 Y20.0 F6000
+	{% endif %}
     TURN_OFF_HEATERS
     M107
     G1 Z2 F3000
     G90
     G0 Y300 F3600
-    BED_MESH_CLEAR
+    # BED_MESH_CLEAR
 
-[gcode_macro M109]
-rename_existing: M99109
+[gcode_macro SET_LED]
+rename_existing: LED_SET
 gcode:
-    {% if 'S' in params %}
-      {% set s = params.S|float %}
-      M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}  
-      {% if printer[printer.toolhead.extruder].temperature >= s-4 %}  
-      M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}  
-      {% else %} 
-          TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s-4} MAXIMUM={s+10}   
+  {% set led_name = params.LED %}
+  {% set red = params.RED|default(0)|float %}
+  {% set green = params.GREEN|default(0)|float %}
+  {% set blue = params.BLUE|default(0)|float %}
+  {% set white = params.WHITE|default(0)|float %}
+  {% set index = params.INDEX|default(0)|float %}
+  {% set transmit = params.TRANSMIT|default(0)|int %}
+  {% set sync = params.SYNC|default(0)|int %}
+
+  {% if led_name == "Interior_lighting" %}
+      {% if white != 0 %}
+         {% set white = 1 %}
       {% endif %}
-    {% else %}
-      M104 S0
-    {% endif %}
-    
-
-
-[gcode_macro M140]
-rename_existing: M99140
-gcode:
-      {% set s = params.S|float %}
-	    {% if params.S is defined %}
-      {% if params.S|float >= 100 %}
-	    SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=100
-      {% else %}
-      SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={params.S|int}
-	    {% endif %} 
-      {% endif %} 
-
-[gcode_macro M141]
-gcode:
-    {% set s = params.S|default(0)|float %}
-    SET_HEATER_TEMPERATURE HEATER=chamber target={s}
-
-[gcode_macro M190]
-rename_existing: M99190
-gcode:
-    {% if 'S' in params %}
-        {% set s = (params.S|float,100)|min %}
-        {% if params.S|float >= 20 %}
-          {% if printer.heater_bed.temperature >= s-2 %}
-          SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={s|int}
-          TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-2} MAXIMUM={s+10}
-          G4 P10000
-          {% else %}
-          SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={s|int}
-          TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-2} MAXIMUM={s+10}
-          G4 P20000
-          {% endif %}
-        {% else %}
-          {% if printer.heater_bed.temperature >= s-2 %}
-          SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={s|int}
-          G4 P10000
-          {% else %}
-          SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={s|int}
-          TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-2} MAXIMUM={s+10}
-          G4 P10000
-          {% endif %} 
-        {% endif %} 
-    {% else %}
-      M140 S0
-    {% endif %}
-
-
-[gcode_macro M17]
-gcode:
-  {% if 'X' in params or 'Y' in params or 'Z' in params or 'E' in params %}
-  {% if 'X' in params %}
-      SET_STEPPER_ENABLE STEPPER=stepper_x enable=1
-  {% endif %}
-  {% if 'Y' in params %}
-      SET_STEPPER_ENABLE STEPPER=stepper_y enable=1
-  {% endif %}
-  {% if 'Z' in params %}
-      SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
-  {% endif %}
-  {% if 'E' in params %}
-      SET_STEPPER_ENABLE STEPPER=extruder enable=1
+      SAVE_VARIABLE VARIABLE=interior_lighting VALUE={white}
   {% endif %}
+  {% if index == 0 %}
+    LED_SET LED={led_name} RED={red} GREEN={green} BLUE={blue} WHITE={white} TRANSMIT={transmit} SYNC={sync}
   {% else %}
-      SET_STEPPER_ENABLE STEPPER=stepper_x enable=1
-      SET_STEPPER_ENABLE STEPPER=stepper_y enable=1
-      SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
-      #SET_STEPPER_ENABLE STEPPER=extruder enable=1
+    LED_SET LED={led_name} RED={red} GREEN={green} BLUE={blue} WHITE={white} INDEX={index} TRANSMIT={transmit} SYNC={sync}
   {% endif %}
 
-[gcode_macro M84]
-rename_existing:M84.1
+[gcode_macro SET_X_OFFSET]
+gcode: 
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_x_offset=params.S|default(0)|float %}
+    SAVE_VARIABLE VARIABLE=dual_x_offset VALUE={dual_x_offset}
+
+[gcode_macro SET_Y_OFFSET]
+gcode: 
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_y_offset=params.S|default(0)|float %}
+    SAVE_VARIABLE VARIABLE=dual_y_offset VALUE={dual_y_offset}
+
+[gcode_macro SET_Z_OFFSET]
+gcode: 
+    {% set svv = printer.save_variables.variables %}
+    {% set dual_z_offset=params.S|default(0)|float %}
+    SAVE_VARIABLE VARIABLE=dual_z_offset VALUE={dual_z_offset}
+
+[gcode_macro ENABLE_FORCE_MOVE]
 gcode:
-
-  {% if 'X' in params or 'Y' in params or 'Z' in params or 'E' in params %}
-  {% if 'X' in params %}
-      SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
-  {% endif %}
-  {% if 'Y' in params %}
-      SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
-  {% endif %}
-  {% if 'Z' in params %}
-      SET_STEPPER_ENABLE STEPPER=stepper_z enable=0
-  {% endif %}
-  {% if 'E' in params %}
-      SET_STEPPER_ENABLE STEPPER=extruder enable=0
-  {% endif %}
-  {% else %}
-      SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
-      SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
-      SET_STEPPER_ENABLE STEPPER=stepper_z enable=0
-      SET_STEPPER_ENABLE STEPPER=extruder enable=0
-  {% endif %}
+    SET_KINEMATIC_POSITION X=200 Y=150 Z=150
 
 [gcode_macro LOAD_FILAMENT]
-variable_load_distance:  100
-variable_purge_distance:  25
+variable_load_distance:  90
+variable_purge_distance:  20
 gcode:
     {% set speed = params.SPEED|default(200) %}
-    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 60 %}
+    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 20 %}
     SAVE_GCODE_STATE NAME=load_state
     G91
     G92 E0
@@ -610,14 +622,69 @@ gcode:
     RESTORE_GCODE_STATE NAME=load_state
 
 [gcode_macro UNLOAD_FILAMENT]
-variable_unload_distance:  100
-variable_purge_distance:  25
+variable_unload_distance:  90
+variable_purge_distance:  20
 gcode:
     {% set speed = params.SPEED|default(200) %}
-    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 60 %}
+    {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity  * 20 %}
     SAVE_GCODE_STATE NAME=unload_state
     G91
     G92 E0
     G1 E{purge_distance} F{speed} # purge
     G1 E-{unload_distance} F{max_velocity} # fast-unload
     RESTORE_GCODE_STATE NAME=unload_state
+
+[gcode_macro G28]
+rename_existing: C28
+gcode:
+    {% set homing_cmd = ''%}
+    {% set do_x = 'X' in params|string %}
+    {% set do_y = 'Y' in params|string %}
+    {% set do_z = 'Z' in params|string %}
+
+    {% if do_x %} 
+        {% set homing_cmd = 'X ' %}
+    {% endif %}
+    {% if do_y %} 
+        {% set homing_cmd = homing_cmd + 'Y ' %}
+    {% endif %}
+    {% if do_z %}
+        {% if 'x' not in printer.toolhead.homed_axes|lower or 'y' not in printer.toolhead.homed_axes|lower %}
+            {% set homing_cmd = 'X Y Z' %}
+        {% else %}
+           {% set homing_cmd = homing_cmd + 'Z' %}
+        {% endif %}
+    {% endif %}
+    {% if not homing_cmd %}
+        C28
+        _RESTORE_DEFAULT_EXTRUDER
+    {% else %}
+        C28 {homing_cmd}
+        {% if 'X' in homing_cmd %}
+            _RESTORE_DEFAULT_EXTRUDER
+        {% endif %}
+    {% endif %}
+
+[gcode_macro M141]
+gcode:
+    {% set s = params.S|default(0)|float %}
+    {% if params.S is defined %}
+        SET_HEATER_TEMPERATURE HEATER=chamber target={s|int}
+    {% endif %}
+
+[gcode_macro M191]
+gcode:
+    {% set s = params.S|default(0)|float %}
+    {% if params.S is defined %}
+        M141 S{s}
+        {% if s != 0 %}
+            TEMPERATURE_WAIT SENSOR=chamber MINIMUM={s-1} MAXIMUM={s+2}
+        {% endif %}
+    {% endif %}
+
+[gcode_macro M84]
+rename_existing: C84
+gcode: 
+    C84
+    SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
+    _RESTORE_DEFAULT_EXTRUDER
diff --git a/config/CreatBot_F430NX/printer.cfg b/config/CreatBot_F430NX/printer.cfg
new file mode 100644
index 000000000..467622f04
--- /dev/null
+++ b/config/CreatBot_F430NX/printer.cfg
@@ -0,0 +1,28 @@
+[include base.cfg]
+
+[extruder]
+control = pid
+pid_kp = 39.960
+pid_ki = 2.537
+pid_kd = 157.344
+
+[extruder1]
+control = pid
+pid_kp = 39.960
+pid_ki = 2.537
+pid_kd = 157.344
+
+[heater_bed]
+control = pid
+pid_kp = 40.673
+pid_ki = 0.837
+pid_kd = 494.176
+
+[heater_generic chamber]
+control: pid
+pid_kp: 30.68
+pid_ki: 0.21
+pid_kd: 0
+
+[probe]
+z_offset: 4
\ No newline at end of file