├── 1 - Primary Configuration Files ├── adxlmcu-KUSBA.cfg ├── display.cfg ├── adxlmcu-BTT.cfg ├── steppers.cfg ├── tmc2130.cfg ├── einsy-rambo.cfg ├── printer.template.cfg └── macros.cfg ├── LICENSE └── README.md /1 - Primary Configuration Files/adxlmcu-KUSBA.cfg: -------------------------------------------------------------------------------- 1 | [mcu adxl] 2 | serial: /dev/serial/by-id/usb-Anchor_Rampon-if00 3 | 4 | [adxl345] 5 | cs_pin: adxl:CS 6 | 7 | [resonance_tester] #Pre-configured specifically for the Prusa MK3S/+, based on the logic below provided by: https://github.com/xbst/KUSBA/blob/main/Firmware/v2-Rampon/adxlmcu.cfg 8 | accel_chip: adxl345 9 | probe_points: 10 | 105,105,20 11 | 12 | # More info: https://www.klipper3d.org/Config_Reference.html#adxl345 -------------------------------------------------------------------------------- /1 - Primary Configuration Files/display.cfg: -------------------------------------------------------------------------------- 1 | # WARNING: DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING 2 | 3 | [output_pin LCD_backlight_pin] 4 | pin: PE3 5 | pwm: True 6 | hardware_pwm: True 7 | 8 | value: 0.01 # 1% of backlight 9 | shutdown_value: 1 # Back to full backlight (without PWM) on restart 10 | cycle_time: 0.001 # Default 0.1s cycle time flickers as hell 11 | 12 | [display] 13 | lcd_type: hd44780 14 | rs_pin: PD5 15 | e_pin: PF7 16 | d4_pin: PF5 17 | d5_pin: PG4 18 | d6_pin: PH7 19 | d7_pin: PG3 20 | encoder_pins: ^PJ1,^PJ2 21 | click_pin: ^!PH6 22 | -------------------------------------------------------------------------------- /1 - Primary Configuration Files/adxlmcu-BTT.cfg: -------------------------------------------------------------------------------- 1 | # Config file for using the BIGTREETECH (BTT) ADXL345 USB board on Prusa MK3S+ 2 | # 3 | # You will first need to build and flash the firmware onto the BTT board. 4 | # Follow the instructions in the user manual here: https://github.com/bigtreetech/ADXL345 5 | # 6 | 7 | [mcu adxl] 8 | serial: /dev/serial/by-id/usb-Klipper_rp2040_5044506120C1481C-if00 9 | 10 | [adxl345] 11 | cs_pin: adxl:gpio9 12 | spi_software_sclk_pin: adxl:gpio10 13 | spi_software_mosi_pin: adxl:gpio11 14 | spi_software_miso_pin: adxl:gpio8 15 | axes_map: -y,-z,-x 16 | 17 | [resonance_tester] #Pre-configured specifically for the Prusa MK3S/+, based on the logic below provided by: https://github.com/xbst/KUSBA/blob/main/Firmware/v2-Rampon/adxlmcu.cfg 18 | accel_chip: adxl345 19 | probe_points: 20 | 105,105,20 21 | 22 | # More info: https://www.klipper3d.org/Config_Reference.html#adxl345 23 | -------------------------------------------------------------------------------- /1 - Primary Configuration Files/steppers.cfg: -------------------------------------------------------------------------------- 1 | # WARNING: DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING 2 | 3 | [stepper_x] 4 | step_pin: PC0 5 | dir_pin: !PL0 6 | enable_pin: !PA7 7 | microsteps: 16 8 | rotation_distance: 32 9 | endstop_pin: tmc2130_stepper_x:virtual_endstop 10 | position_endstop: 0 11 | position_max: 255 12 | homing_speed: 50 13 | homing_retract_dist: 0 14 | 15 | [stepper_y] 16 | step_pin: PC1 17 | dir_pin: PL1 18 | enable_pin: !PA6 19 | microsteps: 16 20 | rotation_distance: 32 21 | endstop_pin: tmc2130_stepper_y:virtual_endstop 22 | position_endstop: -4 23 | position_max: 212.5 24 | position_min: -4 25 | homing_speed: 50 26 | homing_retract_dist: 0 27 | 28 | [stepper_z] 29 | step_pin: PC2 30 | dir_pin: !PL2 31 | enable_pin: !PA5 32 | microsteps: 16 33 | rotation_distance: 8 34 | endstop_pin: probe:z_virtual_endstop 35 | position_max: 215 36 | position_min: -2 37 | homing_speed: 13.333 38 | 39 | [extruder] 40 | step_pin: PC3 41 | dir_pin: PL6 42 | enable_pin: !PA4 43 | microsteps: 32 44 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /1 - Primary Configuration Files/tmc2130.cfg: -------------------------------------------------------------------------------- 1 | # WARNING: DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING 2 | # Values for run_current gathered from https://github.com/prusa3d/Prusa-Firmware-Buddy/include/marlin/Configuration_MK3.5_adv.h 3 | 4 | [tmc2130 stepper_x] 5 | cs_pin: PG0 6 | interpolate: True 7 | #stealthchop_threshold: 0 8 | #run_current: .281738 #dz0ny repo value 9 | run_current: .300 #based on Prusa MK3.5 factory firmware current 10 | sense_resistor: 0.220 11 | diag1_pin: !PK2 12 | driver_IHOLDDELAY: 8 13 | driver_TPOWERDOWN: 0 14 | driver_TBL: 2 15 | driver_TOFF: 3 16 | driver_HEND: 1 17 | driver_HSTRT: 5 18 | driver_PWM_FREQ: 2 19 | driver_PWM_GRAD: 2 20 | driver_PWM_AMPL: 230 21 | driver_PWM_AUTOSCALE: True 22 | driver_SGT: 3 23 | 24 | [tmc2130 stepper_y] 25 | cs_pin: PG2 26 | interpolate: True 27 | #stealthchop_threshold: 0 28 | #run_current: .281738 #dz0ny repo value 29 | run_current: .370 #based on Prusa MK3.5 factory firmware current 30 | sense_resistor: 0.220 31 | diag1_pin: !PK7 32 | driver_IHOLDDELAY: 8 33 | driver_TPOWERDOWN: 0 34 | driver_TBL: 2 35 | driver_TOFF: 3 36 | driver_HEND: 1 37 | driver_HSTRT: 5 38 | driver_PWM_FREQ: 2 39 | driver_PWM_GRAD: 2 40 | driver_PWM_AMPL: 230 41 | driver_PWM_AUTOSCALE: True 42 | driver_SGT: 3 43 | 44 | [tmc2130 stepper_z] 45 | cs_pin: PK5 46 | #run_current: .53033 #dz0ny repo value 47 | run_current: .600 #based on Prusa MK3.5 factory firmware current 48 | sense_resistor: 0.220 49 | diag1_pin: !PK6 50 | interpolate: True 51 | driver_IHOLDDELAY: 8 52 | driver_TPOWERDOWN: 0 53 | driver_TBL: 2 54 | driver_TOFF: 3 55 | driver_HEND: 1 56 | driver_HSTRT: 5 57 | driver_PWM_FREQ: 2 58 | driver_PWM_GRAD: 4 59 | driver_PWM_AMPL: 200 60 | driver_PWM_AUTOSCALE: True 61 | driver_SGT: 4 62 | 63 | [tmc2130 extruder] 64 | cs_pin: PK4 65 | interpolate: True 66 | #run_current: .513757 #dz0ny repo value 67 | run_current: .490 #based on Prusa MK3.5 factory firmware current 68 | sense_resistor: 0.220 69 | diag1_pin: !PK3 70 | driver_IHOLDDELAY: 8 71 | driver_TPOWERDOWN: 0 72 | driver_TBL: 2 73 | driver_TOFF: 3 74 | driver_HEND: 1 75 | driver_HSTRT: 5 76 | driver_PWM_FREQ: 2 77 | driver_PWM_GRAD: 4 78 | driver_PWM_AMPL: 240 79 | driver_PWM_AUTOSCALE: True 80 | driver_SGT: 3 81 | -------------------------------------------------------------------------------- /1 - Primary Configuration Files/einsy-rambo.cfg: -------------------------------------------------------------------------------- 1 | # WARNING: DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING 2 | 3 | [temperature_sensor einsy_board] 4 | sensor_pin: PF6 5 | sensor_type: TDK NTCG104LH104JT1 6 | min_temp: -10 7 | max_temp: 70 8 | 9 | [probe] 10 | pin: ^PB4 11 | x_offset: 23 12 | y_offset: 5 13 | speed: 20.0 14 | samples: 3 # Sampling, primarily for bed mesh. 3 is fine for normal PINDA probes. 15 | samples_result: average 16 | sample_retract_dist: 1.0 17 | 18 | [gcode_arcs] 19 | resolution: 0.25 20 | 21 | [bed_screws] 22 | # Nozzle above the screws 23 | screw1: 13,6 24 | screw1_name: Front Left 25 | screw2: 13,115 26 | screw2_name: Center Left 27 | screw3: 13,210 28 | screw3_name: Back Left 29 | 30 | screw4: 123,6 31 | screw4_name: Front Center 32 | screw5: 123,210 33 | screw5_name: Back Center 34 | 35 | screw6: 228,6 36 | screw6_name: Front Right 37 | screw7: 228,115 38 | screw7_name: Center Right 39 | screw8: 228,210 40 | screw8_name: Back Right 41 | 42 | ### Uncomment this if you use the nylock or silicon mod onn your bed 43 | ### to enable semi-automatic tilt adjustment. 44 | # [screws_tilt_adjust] 45 | # # PINDA should be above the screw 46 | # screw1: 102,104 47 | # screw1_name: Center (Fixed) 48 | # screw2: 0,0 49 | # screw2_name: Front Left 50 | # screw3: 100,1 51 | # screw3_name: Front Center 52 | # screw4: 203,1 53 | # screw4_name: Front Right 54 | # screw5: 0,110 55 | # screw5_name: Center Left 56 | # screw6: 203,99 57 | # screw6_name: Center Right 58 | # screw7: 0,205 59 | # screw7_name: Back Left 60 | # screw8: 100,205 61 | # screw8_name: Back Center 62 | # screw9: 203,205 63 | # screw9_name: Back Right 64 | # screw_thread: CCW-M3 # Prusa screws from the top, so it is inverted from the default of CW-M3 65 | 66 | [extruder] 67 | nozzle_diameter: 0.400 68 | filament_diameter: 1.750 69 | heater_pin: PE5 70 | sensor_type: ATC Semitec 104GT-2 71 | sensor_pin: PF0 72 | 73 | [heater_bed] 74 | heater_pin: PG5 75 | sensor_type: EPCOS 100K B57560G104F 76 | sensor_pin: PF2 77 | min_temp: 0 78 | max_temp: 125 79 | 80 | 81 | [heater_fan nozzle_cooling_fan] 82 | pin: PH5 83 | heater: extruder 84 | heater_temp: 50.0 85 | fan_speed: 1.0 86 | 87 | # Part Cooling Fan 88 | [fan] 89 | pin: PH3 90 | tachometer_pin: ^PE7 91 | tachometer_poll_interval: 0.0015 92 | 93 | [temperature_sensor raspberry_pi] 94 | sensor_type: temperature_host 95 | min_temp: 10 96 | max_temp: 80 97 | 98 | [bed_mesh] 99 | algorithm: bicubic 100 | fade_end: 10 101 | faulty_region_1_min: 100.583, 187.376 102 | faulty_region_1_max: 122.083, 229.376 103 | faulty_region_2_min: 125.672, -18.124 104 | faulty_region_2_max: 147.172, 23.876 105 | faulty_region_3_min: 192.261, 5.126 106 | faulty_region_3_max: 234.261, 26.626 107 | faulty_region_4_min: 114.422, 39.876 108 | faulty_region_4_max: 135.922, 81.876 109 | faulty_region_5_min: 21.422, 87.126 110 | faulty_region_5_max: 42.922, 129.126 111 | faulty_region_6_min: 54.172, 97.376 112 | faulty_region_6_max: 96.172, 118.876 113 | faulty_region_7_min: 154.172, 97.376 114 | faulty_region_7_max: 196.172, 118.876 115 | faulty_region_8_min: 205.136, 87.126 116 | faulty_region_8_max: 226.636, 129.126 117 | faulty_region_9_min: 114.422, 134.376 118 | faulty_region_9_max: 135.922, 176.376 119 | faulty_region_10_min: 176.177, 191.394 120 | faulty_region_10_max: 218.177, 212.894 121 | horizontal_move_z: 5 122 | mesh_max: 228,210 123 | mesh_min: 24, 6 124 | mesh_pps: 3 125 | probe_count: 3,3 126 | speed: 200 127 | 128 | 129 | # Keeps Debug LED off / not floating 130 | [static_digital_output debug_led] 131 | pins: !PB7 132 | 133 | [output_pin BEEPER_pin] 134 | pin: PH2 135 | pwm: True 136 | value: 0 137 | shutdown_value:0 138 | cycle_time: 0.001 139 | scale: 1000 140 | 141 | [respond] 142 | default_type: command 143 | 144 | [filament_switch_sensor fsensor] 145 | pause_on_runout: False #updated from True on 3/27/24 146 | runout_gcode: 147 | M118 Filament Runout Detected 148 | M600 149 | insert_gcode: 150 | M118 Filament Load Detected 151 | LOAD_FILAMENT 152 | event_delay: 3.0 153 | pause_delay: 0.01 154 | switch_pin: ^!PK0 155 | 156 | # Tools 157 | 158 | [virtual_sdcard] 159 | path: ~/printer_data/gcodes 160 | 161 | [display_status] 162 | 163 | [force_move] 164 | enable_force_move: True 165 | -------------------------------------------------------------------------------- /1 - Primary Configuration Files/printer.template.cfg: -------------------------------------------------------------------------------- 1 | ##### CharminULTRA Prusa MK3S+ Klipper Config Template 2 | 3 | ##### ***********REVIEW THE README INSTRUCTIONS FOR ALL STEPS*************** 4 | 5 | # Uncomment the necessary items as you walk through this file. Many are already uncommented. Look for TUNE ME for important areas to tune to your specific printer. 6 | # TUNING STEPS ARE NOT OPTIONAL. 7 | 8 | ### UI and Built-in Macros (see macros.cfg for added macros) 9 | [include mainsail.cfg] 10 | 11 | ### PRINTER - Machine Limits are set inside of Klipper rather than from PrusaSlicer 12 | [printer] 13 | kinematics: cartesian 14 | 15 | ## MK3.5 Settings based on MK3.5 IS PrusaSlicer factory profile machine limits 16 | max_velocity: 300 17 | max_accel: 4000 18 | minimum_cruise_ratio:0.5 19 | max_z_velocity: 12 20 | max_z_accel: 750 21 | 22 | ## MK3S+ Settings based on MK3S+ PrusaSlicer factory profile machine limits, if you want to maintain stock speed limits for some reason. 23 | #max_velocity: 200 24 | #max_accel: 1000 25 | #max_accel_to_decel: 500 26 | #max_z_velocity: 12 27 | #max_z_accel: 200 28 | 29 | ## Z-OFFSET 30 | ## Copy this from your current setting on Prusa, but make it absolute (removing -). You WILL need to still calibrate this properly, 31 | ## as the probe algorithms between Prusa and Klipper firmware are slightly different. 32 | ## Note: Different Z-Offsets for different bed sheets is not yet implemented, but editing this file is a fairly simple method. You can only enable ONE at a time. 33 | [probe] 34 | z_offset = 0.000 #Regular bed sheet 35 | #z_offset = 0.000 #PETG on regular bed sheet, add/delete/edit as needed 36 | #z_offset = 0.000 #Satin bed sheet, add/delete/edit as needed 37 | #z_offset = 0.000 #Textured bed sheet, add/delete/edit as needed 38 | #z_offset = 0.000 #Smooth bed sheet, add/delete/edit as needed 39 | 40 | [mcu] 41 | serial: /dev/ttyACM0 # If you are using RPI via USB connection to printer 42 | #serial: /dev/serial0 # If you are using internal RPI serial port, not recommended. 43 | restart_method: command 44 | 45 | ### CONTROL BOARD 46 | [include einsy-rambo.cfg] 47 | 48 | ### BASE SETUP 49 | [include display.cfg] 50 | [include steppers.cfg] 51 | [include tmc2130.cfg] 52 | 53 | 54 | 55 | ### HOTEND, BED and EXTRUDER - 56 | 57 | ## Possible Hotends - This config file is intended for stock Prusa components. If you are using a non-stock hotend or extruder, please see the example configuration files in the dz0ny repository, upon which this project is based. These are not guarunteed to be correct, but a good start. 58 | ## 1) Stock V6 59 | ## 2) Dragon Standard Flow 60 | ## 3) Rapido 61 | ## 4) Revo 62 | ## 5) Other hotends are easily configurable, but do not have existing pre-made config code. 63 | 64 | ##Possible Extruders: If you are using a non-stock extruder, please see the example configuration files in the dz0ny repository, upon which this project is based. Changing extruders can require significant modification to your overall configuration, and will require your own research/work. 65 | ## 1) Stock Prusa 66 | ## 2) BMG 67 | ## 3) Sherpa 8T and 10T 68 | ## 4) Other extruders are configurable, but do not have existing pre-made config code. 69 | 70 | [extruder] 71 | ##TUNE ME 72 | ##Extruder Rotation Distance - Prior to calibration, make sure your Idler Screw Tension is correct: https://help.prusa3d.com/article/idler-screw-tension_177367 73 | rotation_distance: 22.95981632 #Make sure you tune this for your individual machine: https://ellis3dp.com/Print-Tuning-Guide/articles/extruder_calibration.html 74 | 75 | ##TUNE ME 76 | ##Items below come from performing PID Tuning, yours will be unique!! 77 | control = pid 78 | pid_kp = 29.944 79 | pid_ki = 2.037 80 | pid_kd = 110.045 81 | 82 | 83 | ##TUNE ME 84 | ##Pressuer Advance Section - Perform this tuning for your individual machine: https://ellis3dp.com/Print-Tuning-Guide/articles/index_pressure_advance.html 85 | ##ENTER THE PA VALUE VALUE IN SLICER FILAMENT SETTINGS - In Filament Settings Custom G Code section (allows you to print with different PA for each filament, more flexibile than here). 86 | ##You may also enter a set a global value here if you want, but it's not recommended. 87 | #pressure_advance: 0.05 88 | 89 | nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. 90 | min_extrude_temp: 170 91 | min_temp: 0 92 | max_temp: 285 93 | full_steps_per_rotation: 200 94 | filament_diameter: 1.750 95 | max_extrude_only_distance: 200 96 | max_extrude_cross_section: 50.0 97 | max_extrude_only_velocity: 120.0 98 | max_extrude_only_accel: 1250.0 #Limited to the retraction accel on the MK3.5 99 | 100 | [heater_bed] 101 | ##TUNE ME 102 | ##Items below come from performing PID Tuning, yours will be unique!! 103 | control = pid 104 | pid_kp = 48.658 105 | pid_ki = 0.603 106 | pid_kd = 981.685 107 | 108 | 109 | 110 | 111 | ### MACROS 112 | [include macros.cfg] 113 | 114 | ### INPUT SHAPING 115 | 116 | # Uncomment ONE of the two lines below, depending on which accelerometer board you are using. 117 | #[include adxlmcu-KUSBA.cfg] # ONLY FOR USE DURING INPUT SHAPING TESTING - Leaving this on without the accelerometer plugged in will cause Klipper to not work. 118 | #[include adxlmcu-BTT.cfg] # ONLY FOR USE DURING INPUT SHAPING TESTING - Leaving this on without the accelerometer plugged in will cause Klipper to not work. 119 | 120 | [input_shaper] 121 | 122 | 123 | ### OTHER FEATURES OR TUNING 124 | [exclude_object] 125 | 126 | ### SKEW CORRECTION - This is the LAST tuning procedure. Follow instructions. 127 | ##TUNE ME 128 | [skew_correction] 129 | 130 | ### THIRD PARTY FEATURES 131 | 132 | ### MISC 133 | [menu __main __octoprint] 134 | type: disabled #Removes Octoprint from physical printer menu. Not needed. 135 | 136 | [safe_z_home] 137 | home_xy_position: 11,6 138 | speed: 50.0 139 | z_hop: 15 140 | z_hop_speed: 15.0 141 | move_to_previous: False 142 | 143 | 144 | 145 | ### 146 | ### STOP 147 | ### 148 | ### Do not edit anything below this line. The printer will store values here automatically when you 149 | ### perform the SAVE_CONFIG command. They may look like they are commented out but any line that 150 | ### starts with #*# will be read in by Klipper and applied. 151 | ### 152 | ### When you are done with the guide you should see sections below for extruder, heater_bed, probe, and input_shaper. 153 | ### 154 | 155 | #*# <---------------------- SAVE_CONFIG ----------------------> 156 | #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. 157 | #*# 158 | -------------------------------------------------------------------------------- /1 - Primary Configuration Files/macros.cfg: -------------------------------------------------------------------------------- 1 | # WARNING: DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING 2 | 3 | #Start of Charmin's additions: 4 | 5 | # Print Start 6 | [gcode_macro PRINT_START] 7 | gcode: 8 | {% set BED_TEMP = params.BED_TEMP|default(60)|float %} 9 | {% set BED_CAL_TEMP = params.BED_CAL_TEMP|default(60)|float %} 10 | {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(215)|float %} 11 | {% set EXTRUDER_CAL_TEMP = params.EXTRUDER_CAL_TEMP|default(170)|int %} ; 170*C gets common filaments like PETG, PLA, and ASA/ABS nice and soft without oozing. 12 | {% set PRINTER_MODEL = params.PRINTER_MODEL|default("MK3S+")|string %} 13 | {% set FILAMENT_TYPE = params.FILAMENT_TYPE|default("PLA")|string %} 14 | 15 | ; Make sure the MK3S+ uses the bed temp as the calibration temp since SuperPINDA has internal compensation 16 | {% if PRINTER_MODEL == "MK3S+" %} 17 | {% set BED_CAL_TEMP = BED_TEMP %} 18 | {% endif %} 19 | 20 | ; using TEMPERATURE_WAIT instead of M109/M190 speeds up the startup time by minutes. Klipper seems to wait 21 | ; with very little hysteresis and especially with the bed, this can take a long time. 22 | 23 | M117 Preheating... 24 | M140 S{BED_CAL_TEMP} ; Start bed heating and don't wait 25 | M104 S{EXTRUDER_CAL_TEMP} ; Start heating extruder and don't wait. Saves time later between bed mesh calibration and purge. 26 | SET_GCODE_OFFSET Z=0.0 ; Reset the G-Code Z offset 27 | BED_MESH_CLEAR ; Clear bed mesh 28 | G28 ; Home the printer 29 | G90 ; Absolute positioning mode 30 | G0 Z50 F4000 ; Raise up a bit for any nozzle cleaning while the bed heats (and keep PINDA cool) 31 | TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={BED_CAL_TEMP-1} MAXIMUM={BED_CAL_TEMP+3} 32 | TEMPERATURE_WAIT SENSOR=extruder MINIMUM={EXTRUDER_CAL_TEMP-1} MAXIMUM={EXTRUDER_CAL_TEMP+5} 33 | {% if PRINTER_MODEL == 'MK3S' or PRINTER_MODEL == "MK3" %} 34 | ; This is a poor way of utilizing PINDA. Normally one would want to calibrate it and store those values. 35 | ; Prusa implements calibration of temp vs offset and storage/retrival of those values in EEPROM. 36 | ; So for a lack of that, just always do bed mesh at the same temp. 37 | G0 X20 Y60 Z0.15 ; Move to pinda preheat position (based on calibration position in MK3/3S firmware) 38 | {% for timer in range(45,0,-1) %} 39 | M117 PINDA Heatsoak...{timer|int} 40 | G4 P1000 41 | {% endfor %} 42 | {% endif %} 43 | M117 Probing bed... 44 | BED_MESH_CALIBRATE ADAPTIVE=1 ; Measure bed mesh 45 | M117 Heating... 46 | M140 S{BED_TEMP} ; Start heating bed to final temp and don't wait 47 | M104 S{EXTRUDER_TEMP} ; Start heating extruder to final temp and don't wait 48 | G0 X0 Y-4 Z15 F4000 ; move to the purge starting position 49 | TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={BED_TEMP-1} MAXIMUM={BED_TEMP+3} 50 | TEMPERATURE_WAIT SENSOR=extruder MINIMUM={EXTRUDER_TEMP-1} MAXIMUM={EXTRUDER_TEMP+5} 51 | M117 ; Clear message on LCD 52 | PRUSA_LINE_PURGE ; Purge and then ready to go 53 | #LINE_PURGE ; You can use this instead of PRUSA_LINE_PURGE if you install KAMP 54 | #SKEW_PROFILE LOAD=CaliFlower 55 | 56 | 57 | # Print End 58 | [gcode_macro PRINT_END] 59 | gcode: 60 | #SET_SKEW CLEAR=1 61 | M83 ; extruder relative mode 62 | G1 E-4 ; retract filament a bit for minimizing ooze 63 | _TOOLHEAD_PARK_PAUSE_CANCEL ; Park 64 | G90 ; absolute positioning 65 | G0 Z{[printer.toolhead.position.z, 50]|max} F300 ; park at least 50mm off the bed 66 | M84 X Y E ; Disable steppers 67 | TURN_OFF_HEATERS ; Disable heaters 68 | M106 S0 ; Disable fans 69 | BED_MESH_CLEAR ; Clear bed mesh 70 | 71 | 72 | 73 | 74 | [gcode_macro PRUSA_LINE_PURGE] 75 | ## Purge line macro based on the MK4 76 | gcode: 77 | SAVE_GCODE_STATE NAME=prusa_line_purge 78 | M83 ; extruder relative mode 79 | G0 X0 Y-4 Z15 F4000; move to the purge starting position 80 | G92 E0 ; reset extruder position 81 | G1 E3 ; prime hotend 82 | G0 E7 X15 Z0.2 F500 ; purge 83 | G0 X25 E4 F500 ; purge 84 | G0 X35 E4 F650 ; purge 85 | G0 X45 E4 F800 ; purge 86 | G0 X48 Z0.05 F8000 ; wipe, move close to the bed 87 | G0 X51 Z0.2 F8000 ; wipe, move quickly away from the bed 88 | RESTORE_GCODE_STATE NAME=prusa_line_purge 89 | G92 E0 ; reset extruder position 90 | 91 | 92 | 93 | [force_move] 94 | enable_force_move: true ; enable FORCE_MOVE and SET_KINEMATIC_POSITION 95 | 96 | 97 | 98 | ## Macros below obtained from origina dz0ny repository 99 | 100 | [gcode_macro M486] 101 | gcode: 102 | CLEAR_PAUSE 103 | 104 | [gcode_macro G80] 105 | gcode: 106 | M117 Bed leveling 107 | BED_MESH_CALIBRATE 108 | G1 X0 Y0 Z0.4 F4000 109 | M117 110 | M400 111 | 112 | [gcode_macro G81] 113 | gcode: 114 | BED_MESH_OUTPUT 115 | 116 | [gcode_macro M300] 117 | gcode: 118 | # Use a default 1kHz tone if S is omitted. 119 | {% set S = params.S|default(1000)|int %} 120 | # Use a 10ms duration is P is omitted. 121 | {% set P = params.P|default(100)|int %} 122 | SET_PIN PIN=BEEPER_pin VALUE=0.5 CYCLE_TIME={ 1.0/S if S > 0 else 1 } 123 | G4 P{P} 124 | SET_PIN PIN=BEEPER_pin VALUE=0 125 | 126 | [gcode_macro UNLOAD_FILAMENT] 127 | gcode: 128 | # Default ram distance and sequence copied from MK3.5 in https://github.com/prusa3d/Prusa-Firmware-Buddy/include/marlin/Configuration_MK3.5_adv.h 129 | {% set RAM_DISTANCE = params.RAM_DISTANCE|default(20)|int %} 130 | SAVE_GCODE_STATE NAME=unload_state 131 | G91 132 | {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} 133 | M117 Heating... 134 | # Heat up hotend to provided temp or 220 as default as that should work OK with most filaments. 135 | M109 S{params.TEMP|default(220, true)} 136 | {% endif %} 137 | SET_FILAMENT_SENSOR SENSOR=fsensor ENABLE=0 138 | M117 Unloading filament... 139 | G92 E0.0 ; reset extruder distance 140 | G91 ; relative positioning 141 | G1 E{RAM_DISTANCE} F1500 ; ram to build up pressure 142 | G1 E-50 F2700 ; fast, long retract to thin the whisp 143 | G1 E-5 F50 ; slow retract to break the whisp 144 | G1 E-50 F1500 ; move filament past gears 145 | G92 E0.0 ; reset extruder distance 146 | M400 ; wait for planner to flush 147 | M117 Remove Filament Now! 148 | M300 S300 P1000 ; beep 149 | M117 Filament unloaded! 150 | RESTORE_GCODE_STATE NAME=unload_state 151 | SET_FILAMENT_SENSOR SENSOR=fsensor ENABLE=1 152 | 153 | [gcode_macro LOAD_FILAMENT] 154 | gcode: 155 | SAVE_GCODE_STATE NAME=load_state 156 | G91 157 | # Heat up hotend to provided temp or 220 as default as that should work OK with most filaments. 158 | {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} 159 | M117 Heating... 160 | M109 S{params.TEMP|default(220, true)} 161 | {% endif %} 162 | SET_FILAMENT_SENSOR SENSOR=fsensor ENABLE=0 163 | M117 Loading filament... 164 | # Load the filament into the hotend area. 165 | G92 E0.0 166 | G91 167 | G1 E70 F400 168 | G1 E40 F100 169 | G90 170 | G92 E0.0 171 | M400 172 | M117 Filament loaded! 173 | SET_FILAMENT_SENSOR SENSOR=fsensor ENABLE=1 174 | RESTORE_GCODE_STATE NAME=load_state 175 | 176 | [delayed_gcode clear_display] 177 | initial_duration: 0. 178 | gcode: 179 | M117 180 | 181 | 182 | 183 | # Prusa's calibrate Z 184 | [gcode_macro Calibrate_Z] 185 | description: Calibrate Z axis 186 | gcode: 187 | {% set max_z = printer.toolhead.axis_maximum.z|float %} 188 | {% if printer.toolhead.homed_axes != "xyz" %} 189 | G28 190 | {% endif %} 191 | G1 X20 Y0 192 | G1 Z{max_z-10} F2000 #Update with Z height. 193 | FORCE_MOVE STEPPER=stepper_z Distance=20 Velocity=10 194 | G1 Z{max_z-50} F2000 # Move down 195 | G28 # Home again 196 | 197 | [gcode_macro PREHEAT_PLA] 198 | gcode: 199 | # Start bed heating 200 | M140 S60 201 | # Start nozzle heating 202 | M104 S200 203 | 204 | [gcode_macro PREHEAT_PETG] 205 | gcode: 206 | # Start bed heating 207 | M140 S90 208 | # Start nozzle heating 209 | M104 S240 210 | 211 | [gcode_macro PREHEAT_TPU] 212 | gcode: 213 | # Start bed heating 214 | M140 S50 215 | # Start nozzle heating 216 | M104 S190 217 | 218 | # Color change or filament runout 219 | [gcode_macro M600] 220 | description: Color change or filament runout 221 | gcode: 222 | # Default to the middle front of the bed. MK4 likes the right side but with the MK3 you might need access 223 | # to the idler to unjam filament during a runout. 224 | # 225 | # No Z specified here since PAUSE hands over to _TOOLHEAD_PARK_PAUSE_CANCEL which doesn't take a Z argument. 226 | # If you want to change the amount of Z lift for parking, change the value of 'custom_park_dz' in mainsail.cfg. 227 | # 228 | # If a manual Z move is done, its not possible to know the restore context since this is generally followed 229 | # by an asynchronous filament load and resume. 230 | {% set X = params.X|default(printer.toolhead.axis_maximum.x / 2)|float %} 231 | {% set Y = params.Y|default(-4)|float %} 232 | PAUSE X={X} Y={Y} 233 | UNLOAD_FILAMENT RAM_DISTANCE=7 ; reuse the unload routine so we don't have to maintain two implementations 234 | M117 Swap filament now 235 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Klipperized Input Shaping for the MK3S/+, a simplified guide for a powerful upgrade 2 | 3 | Latest updates: 4 | 5 | 4/2025 6 | - Guidance update 7 | - Reworked PrusaSlicer settings based on latest version (2.9.2 at time of writing). 8 | - Updated IS instructions based on current Klipper. 9 | - Macros update 10 | - Print start and purge chagned to be more like the MK4. 11 | - Print end will raise toolhead to at least 50mm for easier access to clean leftover filament before next start. 12 | - Filament runout reuses unload filament macro and parks in a more favorable location. 13 | - Filament unload uses MK3.5 sequence for cleaner break 14 | - IS update - Include support for BIGTREETECH (BTT) ADXL345 accelerometer board. 15 | - Enable adaptive bed mesh calibration 16 | - Stepper settings for current and microsteps set to MK3.5 values 17 | 18 | 4/17/2024 - Guidance update - In PrusaSlicer, Print Settings > Advanced: DISABLE "Arc Fitting" - G2/G3 should not be used with Klipper and is not necessary. 19 | 20 | 4/2/2024 - Removed Mechanical Gantry Calibration macro. I'm not sure if it ever worked properly. 21 | 22 | 4/1/2024 - Fixed missing tabs on PRUSA_LINE_PURGE in macros, and removed duplicate gcode_arc lines in einsy-rambo. 23 | 24 | 3/27/2024 - Filament runout code updated to prevent double pause 25 | 26 | 3/26/2024 - Removed duplicative Pause/Cancel/Resume macros from macros.cfg 27 | 28 | 3/25/2024 - Added "pullups" to einsy-rambo.cfg 29 | 30 | 31 | Tired of seeing everyone upgrading to MK4s and feeling like you're missing out on the action? This project is an attempt to create simple, easy-to-follow documentation for performing an inexpensive, simple, and powerful upgrade to your Prusa MK3S/+. Originally based on work by dz0ny (https://github.com/dz0ny/klipper-prusa-mk3s). 32 | 33 | WARNING: This upgrade involves the use and installation of Klipper, which is a significantly different experience than Prusa's firmware. Think Klipper = Custom Android, vs. Prusa = Apple iOS. Klipper is powerful, but can be potentially dangerous if misconfigured. We take no responsibility for damage or injury. This guide and configuration files may contain errors or omissions. 34 | 35 | **As of 3/31/2024 - Current discussion and live help can be found here, may need to join Klipper Discord first:** https://discord.klipper3d.org/ in this channel: https://discord.com/channels/431557959978450984/1205590905378312293 36 | 37 | **There are several reasons you should try this upgrade:** 38 | 1. **Speed** - As you may know, Input Shaping can allow for substantial speed and print quality improvements to your printer. It's all the rage right now in the 3D Printing community. 39 | 1. **Low Cost** - It's inexpensive, requiring just $50-100 in hardware, which is a reasonable savings compared to the Prusa MKS3.5 Upgrade Kit. 40 | 1. **Simplicity** - We have structured our instructions and documentation to make this as simple as possible, despite the fact that Klipper is involved, and historically has been thought of as difficult to implement. Klipper is very powerful, and can be simple when implemented correctly. 41 | 1. **Easy to Return to Stock** - Undoing this upgrade and returning to stock Prusa firmware takes just a few steps, and can be completed in under 10 minutes. 42 | 1. **No Waste** - Your MK3S/+ Printer will not collect dust. Many in the Prusa community recommend either buying an MK4 while selling or keeping your MK3S. This upgrade allows you to keep your printer, while substantially increasing speed, and potentially increasing print quality. 43 | 44 | **How will we do this?** 45 | 46 | We will implement Input Shaping on your MK3S/+ with the use of Klipper. "YIKES, Klipper?! Isn't that super complicated?" No, while Klipper can be difficult to use, we've put in the work for you to allow for a simple installation and configuration of Klipper. That doesn't necessarily mean it'll be easy, as implementing Klipper's Input Shaping can reveal hardware misconfigurations. 47 | 48 | **What if I need to return to stock?** 49 | 50 | Undoing this upgrade and returning to stock Prusa firmware can be completed in under 10 minutes. Please see the section "[Reverting to Stock Prusa Firmware](https://github.com/charminULTRA/Klipper-Input-Shaping-MK3S-Upgrade/blob/main/README.md#reverting-to-stock-prusa-firmware)". 51 | 52 | ## Hardware Required 53 | 54 | - Prusa MK3S or MK3S+ 55 | - While configuration files for this project are intended for use with the STOCK hotend and extruder. Other hotends and extruders listed below are possible to use with a modified configuration, but are out of the scope of this repository. For example configurations, please see the dz0ny repository, upon which this project is based: https://github.com/dz0ny/klipper-prusa-mk3s 56 | - Possible hotends: Stock, Dragon ST, Dragon HF, Revo, many others are supported by Klipper itself. 57 | - Possible extruders: Stock, Bondtech BMG, many others are supported by Klipper itself. 58 | - As with Prusa firmware, non-stock extruders require more extensive modification of the configuration. 59 | - Raspberry Pi (one of the following options) 60 | - Raspberry Pi 3B+: https://amzn.to/3PuZN7D 61 | - Raspberry Pi 4: https://amzn.to/4a2ZE3p 62 | - Raspberry Pi Zero 2 W (requires USB adapter in the kit): [https://amzn.to/3ODvStE](https://amzn.to/3TzhrIL) 63 | - MainSailOS also supports the Orange Pi Zero 2, and the Orange Pi 3 LTS / 4 LTS. 64 | - Raspberry Pi Zero 1 W is not recommended, as it is underpowered. 65 | 66 | 67 | - USB Type B male to USB Type A male cable (Came with your Prusa) 68 | - USB Type A female to MicroUSB male converter (if using a Pi Zero 2 W, included in kit linked above) 69 | - An accelerometer (enables easier Input Shaping calibration, optional, but recommended): 70 | - Direct support in this guide is provided for: 71 | - KUSBA: Klipper USB Accelerometer (~$20 USD): [https://amzn.to/4bzgAzA](https://amzn.to/49QFR79) 72 | - NOTE 3/1/2024 - 3D-printed KUSBA mounts online worked but required modification to fit, the nozzle-mounted accelerometer could work better. 73 | - BTT: BIGTREETECH USB Accelerometer v2.0 (~$16 USD): [https://amazon.com/dp/B0CHJQ6CXF](https://amazon.com/dp/B0CHJQ6CXF) 74 | - Most easily mounted on the MK3S+ 75 | - Alternative options that may require some configuration: 76 | - Cheaper alternative: BTT Nozzle-mountable USB Accelerometer v1.0 (~$14 USD): [https://amzn.to/4cg55gQ ](https://amzn.to/3Vgk6t9) 77 | - Another alternative: FYSETC 3D (~$17 USD) https://amzn.to/3VqvN0B 78 | 79 | As an Amazon Associate I earn from qualifying purchases. 80 | 81 | ## High-level Procedure Overview (see detailed guide below) 82 | **Do not print using PrusaSlicer until Step 6!** 83 | 84 | 1. Install MainsailOS to your Raspberry Pi 85 | 1. Create configuration using the Primary Configuration Files in this repo 86 | 1. Flash firmware 87 | - Use USB method, serial method may only be necessary for some users 88 | 1. Perform Config Checks 89 | 1. Customize PrusaSlicer for Klipper 90 | 1. Follow Ellis' Guide for primary tuning steps (NOT OPTIONAL) 91 | 1. Perform Input Shaper calibrations and measurements - FYI, This step revealed several hardware misconfigurations/issues for me personally as a secondhand printer owner. 92 | 1. Re-do Pressure Advance Calibration after enabling IS 93 | 94 | 95 | 96 | # Detailed procedures 97 | 98 | ## Step 0. Pre-Check and Expectations 99 | 100 | - Watch this YouTube video for a basic introduction to Klipper: https://www.youtube.com/watch?v=iNHta6zljoM 101 | - Depending on your familarity with Klipper, expect this full process (including tuning, which is the most time intensive) to take anywhere from 5-20 hours. This range is large because it depends on: 1) your own familarity with tuning procedures that Prusa normally takes care of for you, 2) your familiarity with Klipper, 3) your familiarity with tools like Raspberry Pi, SSH, and command line interfaces. It can also be on the high side if hardware misconfiguration contributes to issues such as bad vibrations in your printer, which will make Input Shaping calibration difficult until addresses. Please be prepared for this. 102 | - Get Z offset value from your current firmware (Menu -> Calibration -> Z-offset), you will need it for the Klipper config. 103 | - Your bed needs to be perpendicular (based on Prusa XYZ Calibration results). An uneven printer means you need to fix the physical hardware first and re-visit the assembly instructions. If not you will have to do the skew calibration before printing or you risk crashing your nozzle to the bed. 104 | - Some of the instructions will be direct links to external guides, which would not make sense to add here, particularly Ellis' 3D Printing guide. 105 | 106 | ## Step 1. Install MainSailOS on your Raspberry Pi 107 | 108 | - We will use MainSailOS as it provides you with all of the components you'll need on your Raspberry Pi. There are other methods, but this is the most simple. 109 | - Please follow this external guide: https://docs-os.mainsail.xyz/ 110 | 111 | ## Step 2. Connect to Raspberry Pi via PC and Configure Klipper 112 | 113 | 1. Using a web browser, navigate to the URL you selected for your printer, such as `mainsailos.local`. 114 | 1. Once loaded, this will be your primary interface for connecting to your Raspberry Pi and Printer in one place. Remember, the Pi will be running the printer just like the Einsy board did on your Prusa. 115 | 1. Navigate to Machine. In the Root dropdown, select "config". This is the location of Klipper's critical configuration files. 116 | 1. In the Update Manager on the right, update everything. DO NOT UPDATE THESE IN THE FUTURE UNLESS YOU ARE CERTAIN THEY WILL NOT BREAK YOUR CONFIGURATION. 117 | 1. In the Config folder, use the files found in this repository's Primary Configuration Files to replace the existing files: https://github.com/charminULTRA/Klipper-Input-Shaping-MK3S-Upgrade/tree/main/1%20-%20Primary%20Configuration%20Files 118 | - NOTE: Either re-name Printer.Template.cfg, or copy/paste the contents into your own printer.cfg. 119 | 1. Edit the printer.cfg as necessary, instructions are inside of the printer.template.cfg file. 120 | 1. DO NOT edit the other files unless you know what you are doing. 121 | 1. Once all the files have been updated, hit the Power icon at the top right, and select "Restart". 122 | 123 | ## Step 3. Connect Prusa MK3S/+ physical printer, and flash the Klipper firmware to your printer 124 | 125 | 1. Plug in the USB Type B male to USB Type A male cable, between your Raspberry Pi and your Prusa printer. 126 | 1. We will now be running some commands that will flash the Using SSH (please Google for appropriate methods depending on your PC's operating system), connect to your Raspberry Pi and log in. 127 | 1. Run the following commands one by one: 128 | ```yml 129 | cd ~/klipper/ 130 | make menuconfig 131 | ``` 132 | Within the configuration menu, the firmware should be compiled for the AVR atmega2560. To use via USB, in "make menuconfig" select "Enable extra low-level configuration options" and select **UART0** when you plan to connect via the USB. Continue by running the following command in order to determine your printer's unique port ID: 133 | ```yml 134 | ls /dev/serial/by-id/* 135 | ``` 136 | After this, run the following one by one. Be sure to update the YOUR_UNQIUE_ID with the printer's unique USB port ID. 137 | ```yml 138 | sudo service klipper stop 139 | make flash FLASH_DEVICE=/dev/serial/by-id/YOUR_UNIQUE_ID 140 | sudo service klipper start 141 | ``` 142 | 143 | If this process fails, it is possible that you may need to connect via the Serial port, which is a more involved process, requiring some hardware modification. The Serial port approach is out-of-scope for this guide. Please search Google for the method or reach out on the Klipper Discord: https://discord.com/channels/431557959978450984/1205590905378312293 144 | 145 | ## Step 4. Perform configuration checks and PID tune 146 | 147 | Perform all verify and PID tuning instructions EXCEPT endstops on Klipper's configuration checks page: https://www.klipper3d.org/Config_checks.html 148 | 149 | ## Step 5. Customize PrusaSlicer for Klipper (DO NOT PRINT FROM THE SLICER UNTIL COMPLETING STEP 6!!) 150 | 1. Add MK3.5 printer to PrusaSlicer configuration from the Configuration Wizard 151 | 1. Ensure you are in "Expert mode" by selecting it in the mode dropdown menu located in the top, right of the window. 152 | 1. Copy the MK3.5 printer: 153 | - Go to Dependencies > "Detach from System Preset" 154 | - Rename the newly detached printer, you can now use this for your Klipper Printer Profile. 155 | - Open your new printer by going to "Printers" and select your new printer from the dropdown on the top left. 156 | - Set G-code flavor to Klipper by going to General > Firmware > set "G-code flavor" to "Klipper" 157 | - Disable binary g-code by going to General > Firmware > Uncheck "Supports binary G-code". 158 | - Clear *everything* under Custom G-code 159 | - Delete ALL existing data in ALL boxes. 160 | - Uncheck "Emit temperature commands automatically" 161 | - Set the start and end code to the contents below. You will not use the factory start and end g-code. The "PRINT_START" and "PRINT_END" commands activate the identically-named macros in your macros.cfg file. Macros are like containers for their own set of Gcode which can be referenced more easily. 162 | 163 | Start Code MK3S+ 164 | ```yml 165 | PRINT_START EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature] 166 | ``` 167 | 168 | Start Code MK3S 169 | ```yml 170 | PRINT_START EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature] PRINTER_MODEL="MK3S" 171 | ``` 172 | 173 | End Code 174 | ```yml 175 | PRINT_END 176 | ``` 177 | 178 | - Save your preset by clicking on the save icon towards the top of the screen. 179 | 1. Copy the factory Prusa printing profiles: 180 | - For "Print Settings" Presets, and Filament Setting Presets - Using the MK3.5 system presets, go to Dependencies > "Detach from System Preset" 181 | - Rename the newly detached presets, you can now use this for your Klipper Printer Profile. 182 | - IMPORTANT: In Print Settings > Advanced - DISABLE "Arc Fitting" - G2/G3 should not be used with Klipper and is not necessary. 183 | 184 | 185 | ## Step 6. Tuning 186 | 1. **Prior to printing with PrusaSlicer**, follow Ellis' Guide for primary tuning steps: https://ellis3dp.com/Print-Tuning-Guide/articles/index_tuning.html 187 | - **Extruder calibration and Pressure Advance are critcal parts of implementing Klipper and cannot be skipped**. Following the other steps are recommended but can be revisited as required. 188 | 1. For Pressure Advance and Extrusion Multiplier - It is recommended to add these values in to each individual Filament Profile in PrusaSlicer. PA can be added to the Filaments > Custom G-Code > Start G-code, such as `SET_PRESSURE_ADVANCE ADVANCE=.055` 189 | 1. Once you finish tuning, try printing some test prints using the STOCK MK3S+ PROFILES. 190 | 191 | ## Almost Done!! 192 | You can now print using PrusaSlicer with your found speed. However, this speed comes at the price of worse print quality (ringing) than stock and tuning Input Shaping is the only way to bring it back! It is **highly** encouraged that you continue and tune with an accelerometer. Optionally, print a Benchy now and then run the exact same G-code again after IS tuning to see the difference. If you don't want to or can't get an accelerometer, there are alternatives to the next step that can work well such as https://www.klipper3d.org/Resonance_Compensation.html. 193 | 194 | ## Step 7. INPUT SHAPING :) 195 | There are many steps, but this doesn't actually take much time and is very automated by Klipper. 196 | 197 | To set some expectations, it is important that you run your input shaping tests on a very sturdy surface. Use of foam or any cushioning under your printer is not recommended, as it can skew the results, and you won't be using it after implementing IS anyway. This process, through the resonance measurements, can also reveal potential issues with hardware misconfiguration, such as loose components, loose belts, etc, which can be time consuming to troubleshoot, but will pay off later. 198 | 199 | 1. Update the firmware on the accelerometer by following the user manual 200 | - KUSBA: https://github.com/xbst/KUSBA/blob/main/Docs/v2-Firmware.md 201 | - BTT: https://github.com/bigtreetech/ADXL345 202 | 1. Print a toolhead and bed accelerometer mount (if not using the nozzle mount option) 203 | - KUSBA: https://www.printables.com/search/models?q=kusba&ctx=models 204 | - BTT v2.0 MK3S+ toolhead: https://www.printables.com/model/1270348-bigtreetech-btt-adxl345-prusa-mk3s-extruder-mount 205 | - BTT v1.0/v2.0 MK3S/MK3S+ bed: https://www.printables.com/model/1270385-bigtreetech-btt-adxl345-prusa-mk3s-bed-mount 206 | 1. Install the accelerometer on the toolhead and connect the USB cable to the Raspbery Pi 207 | 1. Uncomment the appropriate accelerometer config file (either adxlmcu-BTT.cfg or adxlmcu-KUSBA.cfg) in your printer.cfg then save and restart the firmware. 208 | 1. Verify the accelerometer is sending values 209 | - Using the console, send the command "ACCELEROMETER_QUERY" 210 | 1. Perform X-axis calibration: 211 | - Using the console, send the command "SHAPER_CALIBRATE AXIS=X" 212 | - When complete, send the command "SAVE_CONFIG" 213 | 1. Remove accelerometer from the toolhead and install onto the bed 214 | 1. Perform Y-axis calibration: 215 | - Using the console, send the command "SHAPER_CALIBRATE AXIS=Y" 216 | - When complete, send the command "SAVE_CONFIG" 217 | 1. Unplug the accelerometer and remove it from the bed. Store it away safely for another day. 218 | 1. Open your printer.cfg and comment out (or remove) the accelerometer config file that you enabled in step 5. 219 | 1. Save printer.cfg & restart the firmware. You are done tuning IS! 220 | 221 | ## Step 8. Re-do Pressure Advance after finishing your IS setup 222 | You might get lucky here, but re-running the same test quickly to verify the PA setting is always a good idea. 223 | 224 | ## THE END! Happy printing. 225 | 226 | ## Reverting to Stock Prusa Firmware 227 | 1. Connect the USB cable from your printer to your PC 228 | 1. Download Prusa's firmware from their website: https://help.prusa3d.com/downloads 229 | 3. From PruasSlicer, Configuration > Flash Firmware. Select your file and flash. 230 | 231 | 232 | 233 | --------------------------------------------------------------------------------