Unified/Marlin Input Shaping Tuning Guide

What is Input Shaping and Why Should I Use It? #

Input shaping is a software process of resonances compensation to help cancel out the “ghosting” or ringing artifacts seen on 3d prints when quickly changing directions, as well as some of the vibrations of the printer itself. This is done by the firmware adjusting the accelerations while printing based on the M593 values set after tuning to combat the vibrations caused by the change in print direction, resulting in cleaner prints. Though, the ringing artifacts are generally caused by issues with the machine itself: the frame not being ridged, belt issues, and heavy mass movement from the bed or hotend and should be addressed first, if possible. While not a required feature, we have seen some noticeable improvements in print quality in our testing. Marlin has introduced this feature the 2.1.2 thanks to the work of tombrazier and the Marlin team. To read more on Toms work on Marlins Input Shaping, you can read his github post here.

Prerequisites and Recommendations #

  • Firmware updated to Marlin 2.1.2 or Unified 2.60 beta or later with Input Shaping enabled
  • For best results, a 32-bit board is recommended due to the extra processing required.
  • For a slicer that can use custom Gcode macros, we recommend PrusaSlicer or SuperSlicer for this guide we will be using SuperSlicer.
  • A shiny/non-matte color filament to better highlight the ringing

Pre-Sliced 120mm/s Test GCode Files #

We also have pre-sliced 120mm/s test files for printers with a 200×200 or larger bed. Please note this is a general file for PLA temperatures. If using with other materials adjust the hotend and bed temperature when you 1st start the print. These also have starting Gcode pre-loaded for ABL sensors as well to generate a mesh.

This file is provided as-is with no implied support or warranty from TH3D Studio LLC.

Profile Setup & Slicing #

Its recommended to have your slicer and filament profiles tuned for best results. Teaching Tech has an amazing resource for calibrating your profiles here.

Download the Ringing Tower STL which you will slice and use for the print test. The model should be sliced as imported.

  • layer height set to .2mm
  • 1-2 perimeters or enable vase mode
  • 0 infill and top layers
  • Do not use the Arachne engine as it smooths out corners.
  • High speeds settings for external perimeters, (90mm/s+ or the fastest you can reasonably achieve)
  • High acceleration values  (>= 1000mm/s^2) for X and Y
  • Disable any minimum layer time settings (in SuperSlicer: Filament Settings> Very short layer time> Layer time goal = 0 to disable)
  • Disable any slicer acceleration setting changes (Printer Settings>Machine Limits and set Max feed rates/accels and jerk limits to 0
  • Turn off Linear Advance via the LCD menus on the printer or by adding M900 K0 to the starting Gcode
  • Add the Input Shaping Test Gcode into Printer Settings> Custom G-code >After later change Gcode
M593 F{(layer_num < 2 ? 0 : 15 + 45.0 * (layer_num - 2) / 297)} ; Hz Input Shaping Test

This will run a test range from 15Hz to 60Hz

Slice the model with the required changes and verify the speeds are correct in the Gcode Viewer tab by changing the View: Feature Type at the bottom left to Speed

Correctly Sliced file

The model color fully matches the max speed set

Incorrectly Sliced file

Speed is capped at some layers due to minimum layer time settings and will not yield the desired results

Measurements and Calculations #

After the print is complete, you will want to find the point where the print looks the best with the least amount of ringing. Measure the heights of the best results on X and Y and use the formula:
15 + 45 * (z / 0.2 – 2) / 297
Where ‘z’ is the measured Z height of the best results or input the values into our Input Shaping Calculator to get the values and Gcode commands to set compensation values.

For our example print the X looks best around 26.66mm and Y looks best around 26.62mm as well but your results may vary

X Axis measurements
Y Axis measurements

Using the calculator, our end frequencies are 34.89 for X and 34.86 for Y and can be input with the Gcode command:
M593 X F34.89 Y F34.86
and saved with M500

The Results #

Finally we print a test calibration cube print with Input Shaping off and with it tuned and turned on,

On the left, Input Shaping turned off — on the right, Input Shaping turned on and tuned
A noticeable reduction in the X and Y “ghosting” with the new Input shaping enabled. Though it slightly rounds the corners of the print the quality improvement is great.

While still being a new feature to Marlin, we have seen promising results so far with our testing and tuning of it. All while not requiring a raspberry Pi or ADXL to use it like you would with Klipper.

Was this article helpful?