Your Benchy has ghost lines around every porthole, and the ringing gets worse the faster you print. You’ve tightened belts, lubricated rails, and braced the frame — the ghosting is still there. Input shaping is the solution, not mechanical tuning. It measures your printer’s resonant frequencies and cancels them in firmware. A properly tuned input shaper lets you print at double your current speed with zero ringing. Here’s the complete workflow.
Step-by-Step Input Shaping Setup
1. Mount the ADXL345 Accelerometer
The ADXL345 is a 3-axis accelerometer that measures your printer’s vibration during test moves. In Klipper, it connects to the Raspberry Pi’s SPI bus. In Marlin, it connects to the mainboard’s I2C pins.
Klipper SPI wiring (Raspberry Pi):
– ADXL345 VCC → Pi 3.3V (pin 1)
– ADXL345 GND → Pi GND (pin 6)
– ADXL345 CS → Pi GPIO8/CE0 (pin 24)
– ADXL345 SDO → Pi GPIO9/MISO (pin 21)
– ADXL345 SDA → Pi GPIO10/MOSI (pin 19)
– ADXL345 SCL → Pi GPIO11/SCLK (pin 23)
Mount the ADXL345 as close to the nozzle as possible — zip-tied to the hotend fan shroud for X-axis measurements, and to the bed carriage for Y-axis measurements. On CoreXY, a single measurement at the toolhead captures both axes because CoreXY excites both belts simultaneously.
2. Configure and Run the Resonance Test
Klipper:
Add to printer.cfg:
[adxl345]
cs_pin: rpi:None
spi_bus: spidev0.0
[resonance_tester]
accel_chip: adxl345
probe_points:
100, 100, 20 # Center of bed
Run: TEST_RESONANCES AXIS=X then TEST_RESONANCES AXIS=Y
The test vibrates the axis through a frequency sweep (typically 5-133Hz) and records the acceleration response. Output is two CSV files with timestamped frequency-vs-acceleration data.
Marlin (2.1+ with Input Shaping enabled):
Requires #define INPUT_SHAPING_X and #define INPUT_SHAPING_Y in Configuration_adv.h. Run M593 to start the test. Marlin’s implementation is simpler but less precise than Klipper’s — it uses the stepper driver’s back-EMF sensing rather than an external accelerometer, which misses high-frequency resonances above ~80Hz.
3. Generate and Analyze the Frequency Graph
In Klipper, run the auto-processing script:
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png
The script generates a frequency response graph. Peaks in the graph are your printer’s resonant frequencies. A typical Cartesian printer shows a dominant peak at 40-60Hz (Y-axis belt resonance) and a secondary peak at 70-90Hz (X-axis). CoreXY machines often show peaks at higher frequencies (80-120Hz) due to the belt path complexity.
The script also recommends the best shaper type and frequency. For example: Recommended shaper is mzv @ 55.2 Hz (vibrations 1.2%)
4. Apply the Shaper in Firmware
Klipper:
[input_shaper]
shaper_freq_x: 55.2
shaper_type_x: mzv
shaper_freq_y: 48.7
shaper_type_y: zv
Marlin:
M593 X D0.0182 F55.2 ; D = 1/freq, so D = 0.0182 for 55.2Hz
M593 Y D0.0205 F48.7
Add to your start G-code so it’s applied every print.
5. Validate With a Ringing Test Print
Print a test cube at your target speed (100-150mm/s exterior perimeters). Look for ghosting around corners and features. A properly tuned input shaper eliminates 95%+ of visible ringing. If ghosting persists, the shaper frequency is off by 5Hz or more — re-run the resonance test and check for mechanical issues that may have shifted the resonant frequency (loose belts, worn bearings, filament weight on the gantry).
Input Shaper Type Comparison
| Shaper Type | Smoothing Level | Vibration Reduction | Ringing at High Speed | Best For |
|---|---|---|---|---|
| ZV (Zero Vibration) | Minimal | 95% | Slight ringing >150mm/s | Low-speed detail printing |
| MZV (Modified ZV) | Slight | 97% | Minimal ringing | General purpose, best balance |
| ZVD (ZV + Derivative) | Moderate | 99% | Almost none | High-speed printing |
| EI (Extra Insensitive) | Higher | 99%+ | None even with freq. drift | Rigid machines, high speed |
| 2HUMP_EI | Highest | 99%+ | None, robust to freq. change | Loose machines, variable loads |
Input Shaping Mistakes
Mistake 1: Not Re-Running After Mechanical Changes
Every mechanical change shifts resonant frequencies. Tighten belts? Frequency goes up. Add a direct drive extruder? Frequency goes down. Print a heavy part that changes gantry mass? Frequency changes mid-print. If you modify anything on the motion system, re-run the resonance test. I re-run input shaping calibration every 200 print hours even without changes — belt tension drifts and bearing wear shifts resonance slightly.
Mistake 2: Using EI or 2HUMP_EI When MZV Is Sufficient
Higher-order shapers (EI, 2HUMP_EI) suppress more vibration but introduce more corner rounding. On a well-built printer with rigid frame and tight belts, MZV at the correct frequency eliminates visible ringing with minimal smoothing. Reserve EI for machines that can’t hold consistent belt tension or have inherent frame flex. Our linear advance tuning guide explains how pressure advance and input shaping work together — shaper smoothing and pressure advance corner handling affect the same printed corners.
Mistake 3: Running Input Shaping Without Pressure Advance
Input shaping smooths the motion path to cancel vibration. Pressure advance handles filament compression and nozzle pressure dynamics. At high speeds, you need both. Input shaping alone at 150mm/s produces ringing-free prints with bulging corners. Pressure advance alone produces sharp corners with ghosting. Together, they produce clean corners and smooth walls. They’re complementary systems — not alternatives.
Mistake 4: Copying Someone Else’s Shaper Values
Every printer has unique resonant frequencies based on its frame, belt tension, gantry mass, and even the surface it’s sitting on. Copying shaper values from a Reddit post for “Ender 3” means you’re applying a tune for someone else’s printer. The resonant frequency of two identical stock Ender 3s typically differs by 3-8Hz due to manufacturing tolerance in belt tension and frame squareness. Always measure your own machine.
⚠️ Safety Notice: Input shaping modifies stepper motor motion profiles at high frequencies. Ensure your stepper drivers are configured with correct current limits before enabling input shaping — the rapid micro-adjustments can increase motor current draw by 10-15%. If your motors run hot with input shaping enabled, reduce stepper current by 5-10% or improve cooling. The ADXL345 accelerometer mounts near moving parts — secure all wiring away from the motion path before running resonance tests. A cable caught in the belt during a high-speed test sweep can damage the accelerometer, wiring, or printer electronics.
For machines running Klipper, the Klipper vs Marlin firmware comparison details the input shaping implementation differences that make Klipper the preferred platform for high-speed printing. And our silent board upgrade guide covers the TMC2209 drivers that make high-frequency shaper moves inaudible.
The FYSETC Portable Input Shaper kit includes an ADXL345 accelerometer pre-soldered to a USB-C board with a 1.5m silicone cable — no soldering, no SPI wiring. Plug it into your Pi, add three lines to printer.cfg, and you’re measuring resonances in under 5 minutes. Available at uavmodel.com with Klipper configuration files pre-loaded.
