Input shaping explained: measuring ringing frequency and picking a shaper
Short answer
Input shaping reshapes motion commands so they cancel the frame's own vibration, which otherwise shows as ringing on walls [1]. With an accelerometer, Klipper's SHAPER_CALIBRATE picks a shaper and frequency automatically [2]. Without one, print a ringing tower and compute frequency = speed × oscillations ÷ distance [1]. Marlin applies results with M593 [5]. Prusa printers ship factory-calibrated, and Bambu Lab printers measure vibration during their own auto-calibration [6, 7].
What input shaping fixes, and what it does not
Ringing, also called ghosting or echoing, is a faint repeat of an edge or feature on the surface just after it. Klipper attributes it to frame vibration after quick direction changes, and lists the mechanical root causes to check first: a flexible frame, loose or springy belts, misaligned parts and heavy moving mass [1]. Input shaping is an open-loop technique: the firmware alters its own motion commands so that the vibration they excite cancels out. It also reduces general shaking of the printer [1].
It has a cost. Every shaper smooths the toolpath a little, and stronger shapers smooth more, which is why Klipper’s calibration output pairs each shaper with a suggested maximum acceleration [2]. Klipper also notes that ringing frequencies below about 20–25 Hz point to a printer worth stiffening or lightening before tuning [1]. For the visual diagnosis, see ringing and ghosting.
Klipper: accelerometer or ringing tower
With an accelerometer
Klipper supports ADXL345, MPU-9250, LIS2DW and LIS3DH-compatible accelerometers [2]. With one configured, SHAPER_CALIBRATE runs the resonance test on each axis, fits every shaper type, and recommends one [3]. Klipper’s sample output fits MZV at 34.6 Hz with a suggested max_accel of 3,500 mm/s² or less, against 4,500 for ZV and 2,800 for 3HUMP_EI on the same axis. SAVE_CONFIG stores the shaper but does not change max_accel, which must be updated by hand. Bed-slinger printers can calibrate one axis at a time with SHAPER_CALIBRATE AXIS=Y and move the sensor between runs [2].
With a ringing tower
Without an accelerometer, Klipper’s manual method measures ringing on a printed tower [1]:
- Slice
docs/prints/ringing_tower.stlat 0.2 or 0.25 mm layers, with no infill or top layers and 1–2 perimeters or vase mode. Use 80–100 mm/s outer walls, a minimum layer time of 3 s or less, and no dynamic acceleration control. Do not rotate the model. - Reset
square_corner_velocityto 5.0, then sendSET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=0,SET_PRESSURE_ADVANCE ADVANCE=0andSET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0. - Send
TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5. Acceleration rises by 500 mm/s² every 5 mm, from 1,500 to 7,000 in the last band. - On the side marked X, measure a distance D across N oscillations, skipping the first one or two.
- Compute frequency = V × N ÷ D, where V is the outer wall speed. Klipper’s example: 100 × 6 ÷ 12.14 ≈ 49.4 Hz. Repeat for Y.
- Enter the values as
shaper_freq_xandshaper_freq_yin[input_shaper], then print the tower again with MZV and with EI and keep EI only if it is clearly better.
The [input_shaper] defaults are MZV and a damping ratio of 0.1, which Klipper says rarely needs changing [4]. Its guide adds that EI tolerates frequency drift better, which can suit bed slingers whose moving mass grows as the part prints [1].
Marlin: M593
Marlin 2.1.2 added ZV input shaping through M593, compiled with INPUT_SHAPING_X, _Y or _Z. Marlin provides no accelerometer tuning and documents two print-based methods [5].
Frequency sweep. Marlin’s calibration tool generates zigzag patterns printed with Linear Advance off and very high acceleration. Measure where the pattern changes; Marlin’s example breaks at 62 mm, giving 62 ÷ 2 = 31 Hz, set with M593 X F31 and saved with M500. Two more patterns step the damping factor up by 0.05 per pass from 0.05; if the seventh is most uniform, damping is 7 × 0.05 = 0.35, set with M593 X D0.35 [5].
Ringing tower. Add a layer-change command that sweeps frequency, such as this one for PrusaSlicer: M593 F{(layer_num < 2 ? 0 : 15 + 45.0 * (layer_num - 2) / 297)}. At 0.2 mm layers the frequency at a height z is 15 + 45 × (z ÷ 0.2 − 2) ÷ 297, so the best X result at 20 mm gives 29.84 Hz [5]. Marlin advises rotating the model 45° on CoreXY printers. M593 F0 turns shaping off. Since the sweep runs with Linear Advance disabled, Marlin suggests re-checking the K factor afterwards; see pressure advance.
Prusa: factory values and an optional accelerometer
Input Shaper arrived with firmware 5.0.0 on the MK4 and 5.1.0 on the MINI/+ and XL, and is standard on the CORE One, MK4S, MK3.9/S and MK3.5/S [6]. Prusa calibrates it at the factory, so a stock printer usually needs nothing. After hardware modifications, it can be recalibrated with an optional accelerometer; the CORE One L and XL have one built in. Prusa recommends checking belt tension, the nozzle and the smooth rods first, and notes that crash detection is not compatible [6].
Prusa’s M593 takes more parameters than Marlin documents: F frequency (0 disables), D damping (default 0.1), T type (0 ZV, 1 ZVD, 2 MZV, 3 EI, 4 2HUMP_EI, 5 3HUMP_EI; default ZV), R vibration reduction for the EI types (default 20), and X1 or Y1 to limit changes to one axis [6]. Commands written for one firmware should not be assumed to work on the other.
Bambu Lab: vibration compensation
Bambu Lab printers include vibration compensation in their auto-calibration, alongside bed leveling and motor noise cancellation on the P1 series [7]. Bambu Lab recommends rerunning it after moving the printer, because the printer maps vibration on its new surface and uses that data to cancel vibration during fast moves. It also suggests recalibrating after firmware updates, belt tensioning, hardware changes or a drop in quality. Start it from the printer screen, Bambu Studio’s Device tab, or Bambu Handy [7].
OrcaSlicer’s input shaping test
OrcaSlicer’s test is for printers without an accelerometer; if a printer has one, OrcaSlicer recommends using it instead [8].
- Use an opaque, glossy filament with a volumetric speed of at least 10 mm³/s, and set high acceleration and speed, for example 20,000 mm/s² and 200 mm/s.
- Choose the Ringing Tower model, or Fast Tower for printers with heavy ringing, and a shaper type supported by your firmware.
- Start with the default 15–110 Hz range and a damping of 0.1–0.2, or 0 to use the firmware default.
- Measure the X and Y heights with the least ringing and read the frequency at those heights in OrcaSlicer.
- Print the damping test at those frequencies and read the damping the same way.
- Restore normal acceleration and speed, then save the type, frequencies and damping in firmware, in the printer profile under Motion ability → Resonance Compensation, or in start G-code.
OrcaSlicer lists MZV as Klipper’s default shaper and ZV as Marlin’s [9]. Its example commands are SET_INPUT_SHAPER SHAPER_TYPE=MZV SHAPER_FREQ_X=37.25 DAMPING_RATIO_X=0.16 ... for Klipper and M593 X F37.25 D0.16 plus M500 for Marlin [8].
Two related tests sit nearby. The VFA test finds print speeds that excite motor resonance ripple, a different artifact that input shaping does not target [10]. And OrcaSlicer’s adaptive pressure advance guide says not to calibrate PA above the acceleration your shaper recommends, because shaper smoothing at corners mimics a PA error [11]. Cornering limits interact with all of this; see jerk, junction deviation and square corner velocity. If ringing comes with skipped steps, check layer shifting first.
Questions
Sources
- Resonance Compensation. Klipper documentation. Firmware documentation. Ringing tower procedure, frequency formula and example, MZV vs EI selection. Accessed October 12, 2026.
- Measuring Resonances. Klipper documentation. Firmware documentation. Supported accelerometers, SHAPER_CALIBRATE output, suggested max_accel, SAVE_CONFIG. Accessed October 12, 2026.
- G-Codes. Klipper documentation. Firmware documentation. SHAPER_CALIBRATE and SET_INPUT_SHAPER. Accessed October 12, 2026.
- Configuration reference. Klipper documentation. Firmware documentation. [input_shaper] options and defaults. Accessed October 12, 2026.
- M593 - ZV Input Shaping. Marlin Firmware documentation. Firmware documentation. Frequency sweep and ringing tower methods, formula, examples, parameters. Accessed October 12, 2026.
- Input Shaper (CORE One, MK4/S, MK3.9/S, MK3.5/S, XL, MINI/+). Prusa Knowledge Base. Manufacturer documentation. Firmware versions, factory calibration, M593 parameters on Prusa firmware. Accessed October 12, 2026.
- Printer Calibration Guide. Bambu Lab Wiki. Manufacturer documentation. Vibration compensation in auto-calibration; when to rerun. Accessed October 12, 2026.
- Input Shaping. OrcaSlicer Wiki. Slicer documentation. Test settings, frequency and damping tests, Klipper/Marlin/RepRap commands. Accessed October 12, 2026.
- Motion Ability. OrcaSlicer Wiki. Slicer documentation. Shaper types per firmware and their defaults. Accessed October 12, 2026.
- VFA. OrcaSlicer Wiki. Slicer documentation. Motor resonance ripple test and resonance avoidance. Accessed October 12, 2026.
- Adaptive Pressure Advance. OrcaSlicer Wiki. Slicer documentation. Do not calibrate PA above the shaper's recommended acceleration. Accessed October 12, 2026.