Voron Klipper Resonance Profiling — Complete Shaper Tuning Guide
Calibration Klipper Advanced
Resonance compensation is the single biggest quality upgrade you can make to a Voron. Without it, ghosting (ringing) mars every surface where the frame vibrates at its natural frequencies. With proper input shaper tuning, those artifacts vanish — your prints look injection-molded clean. This guide covers the complete workflow: installing an ADXL345 accelerometer, collecting vibration data, analyzing frequency response, selecting the optimal shaper type, and configuring per-axis settings. Last updated: May 2025.
Why Resonance Profiling Matters for Vorons
Voron printers are structurally stiff but not infinitely rigid. The V2.4's gantry, the Trident's moving bed, the V0.2's cantilever Z — each has resonant frequencies where small motor vibrations amplify into visible ringing on the print surface. Input shaping works by measuring these resonances and applying opposing vibrations to cancel them. The result? You can print faster without ghosting, often 2x to 3x your previous acceleration limits.
Without profiling, you might guess a shaper type and frequency — and maybe get 70% of the benefit. With actual measured data, you get 95%+ cancellation. On a Voron, where you've invested hundreds of hours building and tuning, the extra hour of profiling is the highest-ROI calibration you can do.
Hardware: ADXL345 Accelerometer Setup
You need an ADXL345 accelerometer connected to your Raspberry Pi (or other Klipper host) via SPI or I2C. USB accelerometers (like the ADXL345 USB stick) also work but introduce more cable management hassle.
Wiring (SPI Mode, Recommended)
ADXL345 -> Raspberry Pi GPIO
VCC -> 3.3V (pin 1 or 17)
GND -> GND (pin 6, 9, 14, 20, 25, 30, 34, or 39)
CS -> GPIO5 (pin 29)
SDO -> GPIO4 (pin 7) — also called MISO
SDA -> GPIO2 (pin 3) — also called MOSI
SCL -> GPIO3 (pin 5) — also called SCLK
Note: On Pi 4 and Pi 5, pin assignments are identical for these GPIOs. Double-check your pin numbering — physical pin vs BCM GPIO confusion is the most common wiring mistake.
Attaching the Accelerometer
For accurate readings, the ADXL345 must be rigidly mounted to the toolhead. A dab of hot glue or a dedicated mount (many STL options on Printables/Thingiverse) works well. Do NOT use double-sided tape alone — it dampens high-frequency vibrations and skews your measurements. For the bed, attach the ADXL345 directly to the bed surface with a screw mount or thermal pad.
Klipper Configuration
Add the following to your printer.cfg. Adjust the cs_pin and spi_bus if you used different GPIOs.
[adxl345]
cs_pin: rpi:gpio5
spi_speed: 2000000
spi_bus: spidev1.2
axes: x,y
[resonance_tester]
accel_chip: adxl345
probe_points:
125,125,20 # Center of bed — adjust for your printer
For Voron V2.4 350mm, use 175,175,20. For Trident 300mm, use 150,150,20. For V0.2, use 60,60,20.
Restart Klipper and verify the ADXL345 is detected:
ACCELEROMETER_QUERY
You should see X, Y, Z acceleration values near 0 (at rest). If you get an error, check wiring and SPI bus selection.
Data Collection: Measuring Resonance
X-Axis Scan
TEST_RESONANCES AXIS=X
This moves the toolhead back and forth along X at increasing frequencies while recording acceleration data. The process takes about 2 minutes. Keep the bed at room temperature — thermal expansion affects resonance frequencies.
Y-Axis Scan
TEST_RESONANCES AXIS=Y
For the Y axis, the bed moves instead of the toolhead (on a V2.4) or the toolhead moves along Y (on a Trident/V0.2). Either way, the ADXL345 on the toolhead captures the relevant data.
Generating the CSV Data Files
Klipper stores the raw frequency response in /tmp/resonances_x_*.csv and /tmp/resonances_y_*.csv. These are tabular data files with frequency and power spectral density (PSD) columns.
Frequency Response Analysis
You have three options for analyzing the CSV files:
Option 1: Klipper's Built-in Calibrate Command
SHAPER_CALIBRATE
This runs both X and Y scans automatically, then analyzes the results and recommends a shaper type and frequency. It's the simplest option and works well for most users. Save the result with:
SAVE_CONFIG
Option 2: Web-Based Analyzer
Upload your CSV files to the Klipper Input Shaper Analyzer web tool (resonance.klipper3d.org). It generates frequency response plots and shaper recommendations visually. This is useful if you want to understand the shape of your resonance curve.
Option 3: Manual Analysis with Python
For advanced users, the scripts/calibrate_shaper.py script in the Klipper repo provides detailed analysis:
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv /tmp/resonances_y_*.csv
This outputs recommended shaper type, frequency, and estimated remaining vibration for each axis.
Reading the Results: Frequency Peaks
A typical Voron V2.4 350mm produces frequency response graphs with these characteristics:
- X-axis: Dominant peak around 45-60 Hz (gantry resonance). Secondary peaks at 80-100 Hz (belt tension harmonics).
- Y-axis: Dominant peak around 30-45 Hz (bed+frame resonance). Broader peak due to moving bed mass.
- V0.2: Higher frequencies — X peaks around 60-80 Hz, Y around 50-70 Hz (stiffer, smaller frame).
- Trident: Similar to V2.4 but Y resonance is often lower (25-35 Hz) due to the heavier moving bed.
Multiple peaks mean the resonance isn't a single clean frequency. Some shaper types handle this better than others.
Shaper Type Selection
Klipper offers several shaper algorithms. Here's how to choose:
ZV (Zero Vibration)
Narrow notch filter. Cancels one frequency precisely but is sensitive to frequency changes. Not recommended for most Vorons — temperature and belt tension drift shift your resonance, and ZV doesn't tolerate that well.
MZV (Modified ZV)
Slightly wider than ZV. Better tolerance for frequency variation but still narrow. Useful if your resonance is very clean with a single sharp peak.
ZVDD (Zero Vibration Double Derivative)
Good balance between vibration reduction and shaper time (smoothing). Recommended for most Vorons with a single dominant resonance peak. Adds about 0.5-0.7 shaper time.
EI (Extra-Insensitive)
Very wide notch, excellent tolerance to frequency changes. Best for Y axis on Voron V2.4/Trident where the moving bed resonance shifts with bed temperature and print weight. Adds about 1.5 shaper time (more smoothing).
2HUMP EI
Even wider than EI, handles two close resonance peaks. Good for V2.4 X-axis if you have strong secondary harmonics. Adds about 2.0 shaper time.
3HUMP EI
Widest notch, handles three peaks. Only needed on printers with very complex resonance profiles. Adds about 2.5 shaper time. Rarely needed on well-built Vorons.
Per-Axis Configuration
You can (and should) use different shaper types for X and Y. Here are typical recommendations:
[input_shaper] shaper_type_x: zvdd shaper_freq_x: 52.4 shaper_type_y: ei shaper_freq_y: 37.8
Replace the frequencies with your measured values. A common mistake is using the same shaper for both axes — X and Y have very different mechanical dynamics on most Vorons.
Verifying Results
After configuring input shaper, run a test print with a ringing test model (available on Printables). Look for:
- Clean corners with no ghosting at 100 mm/s, 5000 mm/s^2 acceleration
- Minimal ghosting at 150 mm/s, 8000 mm/s^2 acceleration
- No excessive corner rounding (too much smoothing from overly aggressive shaper)
If you see corner rounding but no ghosting, your shaper is too aggressive — try a narrower type (ZVDD instead of EI, or EI instead of 2HUMP). If you see ghosting with no corner rounding, your shaper isn't aggressive enough or your frequency is wrong.
Advanced: Maximum Acceleration Tuning
Input shaper lets you run higher accelerations without ghosting, but motor torque still limits you. After configuring shaper, tune acceleration with:
[input_shaper] max_accel: 10000
Start at 5000 mm/s^2 and increase by 1000. Watch for skipped steps (layer shifts) or excessive motor noise. Most Vorons run comfortably at 8000-12000 mm/s^2 with input shaper. Beyond that, you're limited by stepper torque more than resonance.
Troubleshooting Common Issues
"Invalid shaper frequency" Error
Your measured frequency is outside Klipper's valid range. Minimum is 5 Hz, maximum is 133 Hz for most shapers. If you measure below 5 Hz, your accelerometer is likely loose or the bed isn't rigid enough.
No Clear Resonance Peak
The frequency response graph looks flat or noisy. Common causes: loose ADXL345 mount, incorrect SPI wiring (check with ACCELEROMETER_QUERY), or running the scan at too high a speed. Try TEST_RESONANCES AXIS=X OUTPUT=raw first to collect more data.
Different Results Between Prints
Resonance frequencies shift with bed temperature (thermal expansion of the frame) and print head position. If you get different results each time, your frame might not be bolted down tightly, or your belts need retensioning. Re-measure with the bed at printing temperature.
Conclusion
Resonance profiling transforms your Voron from a good printer into an exceptional one. The process takes about an hour start to finish and the results are permanent — re-profile only if you change your toolhead, bed, or frame. Install the ADXL345, run the scans, analyze with SHAPER_CALIBRATE, and save your config. Your print quality will thank you.