Disclaimer: This is an independent resource site. Not affiliated with the Voron project or its development team.

Voron Calibration Guide — From Build to Perfect Prints

Calibration Tutorial Klipper 15 min read

You've finished your Voron build. All the screws are tight, the wiring is tidy, and Klipper boots up without errors. Now comes the most important phase: calibration. This guide takes you through every calibration step — from squaring the frame to perfecting your first layer — so your Voron prints at its full potential. Last updated: May 2025.

Prerequisite: This guide assumes you've completed the mechanical build and have Klipper installed with basic connectivity. If you haven't set up Klipper yet, see our Klipper setup guide first.

1. Mechanical Check — Before You Power On

The most important calibration happens before you ever heat the bed. A mechanically sound printer will calibrate quickly; a sloppy one will fight you at every step.

Frame Squareness

Use a machinist's square (or the corner of a piece of paper if you don't have one) to check every corner of your frame. All 2020 extrusions should meet at exactly 90°. If your frame isn't square, loosen the corner bracket bolts, adjust, and retighten. On a V2.4, check that the top and bottom frames are parallel by measuring diagonals — they should be within 0.5mm of each other.

Pro tip: Place your frame on a flat surface (glass table or granite countertop) during assembly. If the frame rocks, you have a twist that needs correcting.

Gantry Racking (V2.4)

V2.4 owners: your flying gantry must be perfectly parallel to the frame. With the Z belts disconnected, move the gantry to mid-height and measure from the gantry extrusion to the top frame on both sides. The difference should be < 0.5mm. If one side is higher, adjust the Z belt tension or check that the Z lead screws are the same length above the Z motor mounts.

Gantry Sag (Trident & V2.4)

With the gantry at mid-height, place a precision straightedge (or the edge of a ruler) across the gantry extrusions near the X rail mount. Check for gaps. Trident owners have the advantage of triple-Z auto-alignment — but you still need the gantry to be mechanically level before engaging that feature.

2. Belt Tension — The Most Impactful Tuning

Belt tension single-handedly determines your print quality more than any other mechanical adjustment. Too loose → ghosting and ringing. Too tight → bearing noise, reduced lifespan, and possible skipped steps.

Using a Tension Gauge (Recommended)

Target: 2-3 N/cm for all Voron models. A Gates Sonic Tension Meter or the Klipper BELT_TENSION_GAUGE macro (if you have an ADXL345 on the toolhead) gives precise readings. Pluck the belt like a guitar string at the middle of its longest span. The frequency should be approximately:

If you don't have a tension meter, the "pluck test" is a reliable approximation: the belt should produce a low bass note — think the lowest string on a cello, not a guitar. If it sounds like a rubber band, it's too loose. If it feels like a violin string, it's too tight.

Belt Tension Procedure

  1. Run the G28 command to home the printer
  2. Move the toolhead to the centre of the build plate
  3. Loosen the belt tension screws on the idler pulleys
  4. Pull the belt ends to achieve target tension, then retighten
  5. Check that both sides of each axis have equal tension — if one side is tighter, the gantry will rack
  6. Home again and recheck — belt tension sometimes shifts after the first homing cycle

3. Z Leadscrew Alignment

On multi-Z printers (Trident with 3, V2.4 with 4), misaligned leadscrews cause Z binding at certain heights. Test this by moving Z through its full range at 10mm/s — listen for clicking, grinding, or inconsistent motor current sounds.

4. Klipper Firmware Calibration

All the following steps are done in Klipper's terminal via Mainsail, Fluidd, or Moonraker.

Rotation Distance

Rotation distance tells Klipper how far the axis moves per full rotation of the stepper motor. The formula is:

rotation_distance = <full_steps_per_rotation> × <microsteps> × <belt_pitch> × <pulley_teeth>

For a standard Voron with 200 step/rev motors, 16× microstepping, 2mm GT2 belts, and a 20-tooth pulley: rotation_distance = 200 × 16 × 2 × 20 = 40mm

If your measured movement doesn't match commanded movement, adjust the rotation_distance proportionally:

new_rotation_distance = current_rotation_distance × (commanded_distance / measured_distance)

To measure: mark a point on the gantry, command 100mm of movement (G91 then G1 X100 F600), measure the actual distance with calipers, and apply the formula.

PID Auto-Tune

PID tuning calibrates your hotend and bed heater controllers. Run separately for each:

Hotend: PID_CALIBRATE HEATER=extruder TARGET=245 (or your printing temperature for ABS/ASA)
Bed: PID_CALIBRATE HEATER=heater_bed TARGET=100 (typical ABS bed temperature)

The process takes 5-10 minutes per heater. It cycles the heater on and off while measuring temperature response, then calculates optimal P, I, and D values. After completion, run SAVE_CONFIG to store the values in your printer.cfg.

Important: If your bed PID tune fails or produces unstable temperature control, check that your SSR (solid-state relay) is functioning and your bed wiring can handle the full current draw. Many Vorons need a 30-minute warm-up before PID tuning to reach thermal equilibrium.

Input Shaper — VFA & Ringing Calibration

Input shaper is Klipper's secret weapon against ringing (ghosting) at high speeds. It measures the printer's natural resonance frequencies and filters the motion to cancel them out.

With ADXL345 accelerometer (best method):

  1. Mount the ADXL345 on the toolhead (or use the built-in accelerometer on boards like Manta M8P)
  2. Run ACCELEROMETER_QUERY to verify the sensor is detected
  3. Run MEASURE_AXES_NOISE to check the noise floor
  4. Run SHAPER_CALIBRATE — this performs a frequency sweep on X and Y axes
  5. Klipper will recommend the best shaper type (ei, 2hump_ei, 3hump_ei, mzv) and frequency for each axis
  6. Run SAVE_CONFIG to apply the recommended settings

Without ADXL345 (manual method):

  1. Print a ringing test tower (download from Klipper docs)
  2. Examine the print for ringing — measure the frequency of the ghosting pattern
  3. Enter the measured frequency into your config manually under [input_shaper]
  4. Test different shaper types (start with mzv for smooth prints, ei for maximum smoothing)

Recommended accelerations after shaper calibration:

These are starting points. Your actual max acceleration depends on your frame rigidity, belt tension, and component mass. Test by printing a high-speed benchy and increasing acceleration until you see quality degradation.

Pressure Advance — Filament Flow Control

Pressure advance compensates for the elasticity of molten filament in the nozzle. Without it, you get blobs at corners and under-extrusion after retractions.

Method 1: Tower test (easiest)

  1. Download the pressure advance tower from Klipper docs
  2. Slice with variable pressure advance (add SET_PRESSURE_ADVANCE ADVANCE=0 at layer 1, incrementing by 0.005 per layer)
  3. Print the tower — look for the layer where corner blobs disappear but extrusion remains consistent
  4. Set your pressure advance to the value at that layer

Method 2: Line test (more precise)

  1. Run the Klipper command: TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=0.005
  2. Print a single-walled cube (vase mode, no infill)
  3. Measure the wall thickness at different heights — the wall should be consistent throughout
  4. Adjust your pressure advance value until the wall thickness varies by less than 0.02mm

Typical pressure advance values:

5. Bed Mesh Calibration

A perfect first layer requires knowing exactly how flat your bed is and compensating for any deviation.

Screw Tilt Adjust — Virtual Z Endstop Levelling

Instead of manually leveling your bed with a piece of paper (though you can still do that), use Klipper's screw tilt adjust feature:

  1. Add a [screws_tilt_adjust] section to your printer.cfg with the coordinates of your bed levelling screws
  2. Run SCREWS_TILT_CALCULATE — Klipper will tell you exactly how many turns each screw needs
  3. Adjust each screw, run the command again, repeat until all screws show < 0.05mm deviation

This automates the tedious paper method. For Trident and V2.4 owners, this step is partially handled by Z_TILT_ADJUST or QUAD_GANTRY_LEVEL, but screw tilt adjust gives you finer manual control of the bed itself.

Bed Mesh

  1. Ensure your bed is at printing temperature (100°C for ABS) — the bed warps slightly when hot
  2. Run BED_MESH_CALIBRATE with an appropriate grid size (5×5 for V0.2, 7×7 for Trident/V2.4)
  3. Klipper will probe the bed at each grid point and build a compensation map
  4. Run BED_MESH_OUTPUT PGP=1 to visualise the mesh — deviations under 0.2mm are excellent
  5. Add BED_MESH_PROFILE SAVE=default to save the profile
  6. Add BED_MESH_PROFILE LOAD=default to your PRINT_START macro

If your bed mesh shows more than 0.4mm of deviation, your bed may be warped or your frame may not be square. Check frame squareness before trying to mesh-compensate for large errors — mechanical fixes beat software compensation every time.

6. Extruder Calibration

Accurate extrusion ensures dimensional accuracy and consistent layer adhesion.

Rotation Distance (E-Steps)

  1. Mark the filament 120mm above the extruder entry point
  2. Command G1 E100 F60 to extrude 100mm
  3. Measure the remaining distance — you should have 20mm from the entry point to your mark
  4. If the measurement is off, use the same formula as axis rotation distance to adjust

Flow Rate (Extrusion Multiplier)

  1. Print a 20mm calibration cube with 100% infill and 2 walls
  2. Measure the wall thickness with calipers — it should match your nozzle diameter × number of walls
  3. If your wall is 0.88mm with a 0.4mm nozzle and 2 walls (expected: 0.80mm), your flow rate is 0.88/0.80 = 1.10 (110%)
  4. Adjust extrusion_multiplier in your slicer profile

7. First Layer Tuning

The first layer is the foundation of every successful print. Take your time here.

  1. Heat the bed to 100°C and the hotend to 245°C (ABS/ASA)
  2. Apply a thin layer of glue stick or hairspray to a clean PEI sheet
  3. Run PROBE_CALIBRATE to set your Z offset — use the paper method: the nozzle should grip a piece of paper with slight resistance
  4. Print a first layer test pattern (a 100mm square, 1 layer high, with a brim)
  5. Observe the extrusion: if the lines are round and separate, lower Z by 0.02mm. If the lines are translucent and rough, raise Z by 0.02mm
  6. A perfect first layer has lines that are slightly squished together with no gaps and a smooth matte finish

Live Z adjustment: During the first layer test, use SET_GCODE_OFFSET Z_ADJUST=0.01 to fine-tune without restarting. Increments of 0.01mm make visible differences on Voron printers.

8. Final Validation Print

Once all calibrations are complete, print a full test set:

  1. 20mm calibration cube — check dimensional accuracy (should be 20.00 ± 0.10mm in X, Y, Z)
  2. Benchy — check overhangs, bridging, stringing, and surface finish
  3. All-in-one calibration print — tests retraction, temperature tower, flow rate

If your calibration cube measures 20mm in X and Y but not Z, adjust Z rotation distance. If X and Y don't match each other, adjust the respective rotation distances or check belt tension. If all dimensions are off by the same percentage, adjust flow rate (extrusion multiplier).

Troubleshooting Common Calibration Issues

My first layer is bad even after bed mesh

Check that you're loading the bed mesh profile in your PRINT_START macro. Verify the mesh visually with BED_MESH_OUTPUT PGP=1. If the mesh shows a consistent slope, your gantry may be tilted — run Z_TILT_ADJUST (Trident) or QUAD_GANTRY_LEVEL (V2.4) before the bed mesh.

Input shaper isn't helping

Make sure you're running at accelerations high enough for ringing to appear. Input shaper cancels vibrations most effectively at the acceleration where ringing occurs. If you're printing at 3,000 mm/s² on a V0.2, you may not see ringing at all — try increasing to 8,000 mm/s² and re-test.

Pressure advance makes things worse

Reduce the pressure advance value. Start at 0 and increment by 0.01 until corner blobs disappear. If you're using a high-flow hotend, start at a lower value. Also verify that your extruder rotation distance is accurate — PA depends on precise extrusion measurement.

PID tune fails or times out

Increase the max_power parameter in your heater config if the bed can't reach temperature. Make sure your SSR is wired correctly and the bed heater is the correct voltage for your region. A 120V bed heater on 240V will overheat; a 240V heater on 120V won't reach temperature.

Need Help With Your Build?

Stuck on a calibration step or need help sourcing parts? Contact us through our mini-program for one-on-one support from experienced Voron builders.

Contact Us / 联系我们

Calibration Quick Reference Card

Step Klipper Command Target Value
PID hotend PID_CALIBRATE HEATER=extruder TARGET=245 Stable at ±0.5°C
PID bed PID_CALIBRATE HEATER=heater_bed TARGET=100 Stable at ±1°C
Input shaper SHAPER_CALIBRATE Auto-detect frequency & shaper
Pressure advance TUNING_TOWER ... 0.02-0.08 (varies by hotend)
Bed mesh BED_MESH_CALIBRATE < 0.2mm deviation
Belt tension Manual / tension gauge 2-3 N/cm (80-130 Hz)
Z offset PROBE_CALIBRATE Paper drag feel

Get China-Direct Pricing

Need replacement parts or upgrades for your Voron? Get factory-direct pricing on linear rails, hotends, boards, and more through our mini-program.

Contact Us