Voron V0.2 Bed Leveling — Manual Mesh and Klipper Guide
V0.2 Calibration Bed Leveling Klipper
The Voron V0.2 is a 120mm cube printer with a fixed bed (non-tilting) and a leadscrew-driven Z axis on the gantry. Unlike the Trident or V2.4 with their automatic bed leveling systems, the V0.2 relies on manual bed leveling combined with Klipper's bed mesh compensation to achieve a perfect first layer. The small build plate makes the process more forgiving than on larger machines, but it also amplifies the impact of any error — a 0.05mm tilt on a 120mm bed is proportionally worse than the same tilt on a 350mm bed. This guide covers every aspect of V0.2 bed leveling, from mechanical adjustments through Klipper configuration and advanced mesh tuning.
Understanding the V0.2 Z System
The V0.2 uses a single NEMA 14 or NEMA 17 (depending on your build) stepper motor mounted on top of the gantry, driving a leadscrew that moves the X/Y gantry up and down. The bed is mounted on four adjustable silicone spacers or springs at the corners. There is no Z tilt adjust — all four corners must be leveled manually by adjusting these spacers.
The stock V0.2 ships with a 130mm x 130mm MIC6 aluminum tooling plate (3mm or 4mm thick) with a 120mm x 120mm PEI spring steel build surface on top. The useful print area is approximately 115mm x 115mm after accounting for edge clearance with a Mini-Stealthburner or similar toolhead. The small mass (the bed + plate is about 250g total) means the bed heats up quickly — approximately 2-3 minutes to 100°C — but it also cools rapidly and is more susceptible to thermal deformation during printing.
Mechanical Bed Leveling Procedure
Before touching Klipper settings, you must level the bed mechanically. This is a manual process that uses the four adjustment knobs or screw heads under the bed. The goal is to make the bed surface parallel to the gantry's X/Y plane of motion.
Tools Needed
- Feeler gauge set (0.10mm, 0.15mm, 0.20mm recommended)
- Small hex driver for the adjustment screws
- Digital caliper (optional, for checking spacer compression)
- Sharpie or painter's tape (for marking screw positions)
Step-by-Step Leveling
- Heat the bed to 100°C. Thermal expansion changes the bed geometry. Leveling cold then printing hot will give incorrect results. Set
M140 S100in the console and wait until the bed stabilizes. - Home all axes. Run
G28. This moves the toolhead to the front-left corner (or wherever your endstops are). Ensure the nozzle is clean — any plastic on the tip will give false clearance readings. - Move to the front-left corner of the bed. Use
G1 Z5 F300to lift the nozzle, thenG1 X10 Y10 F3000to position it near the front-left corner. Important: the nozzle should be over the bed surface, not over a heater screw hole or the edge of the PEI sheet. - Check nozzle-to-bed clearance. Lower to Z=0.5 with
G1 Z0.5 F60. Slide a 0.15mm feeler gauge between the nozzle and bed. Adjust the bed height by turning the corresponding adjustment screw. The feeler should slide with slight drag — not loose, not tight. - Repeat for all four corners. Move to each corner (X10 Y10, X110 Y10, X10 Y110, X110 Y110) and adjust each until the 0.15mm feeler gauge drag matches. This is a iterative process — adjusting one corner affects the others. Plan to go around all four corners 3-4 times.
- Center check. Move to the center of the bed (X60 Y60) and check clearance again. If the center is significantly different from the corners (more than 0.10mm), your bed may be warped. Proceed to Klipper bed mesh to handle this.
Silicone Spacer Adjustment Tips
Most V0.2 builds use silicone spacers rather than springs. Silicone spacers provide better thermal isolation and more consistent compression than springs, but they have a narrower adjustment range. If a spacer is fully compressed and the corner is still too low, you need a shorter spacer. If the spacer is barely compressed and the corner is too high, you need a taller spacer or an additional washer. Standard silicone spacer heights for V0.2 are 6mm, 8mm, and 10mm — keep a set of each on hand during the build.
Mark each screw position with a Sharpie dot on the spacer and the screw head. If you ever need to disassemble the bed, this makes reassembly much faster — you can return to the same approximate positions without starting from scratch.
Klipper screw_tilt_adjust Configuration
Klipper's screw_tilt_adjust module provides a guided manual leveling sequence. It probes near each bed adjustment screw and tells you exactly how much to turn each screw. This is much faster than the trial-and-error feeler gauge method.
[screw_tilt_adjust]
screw1: 15, 15
screw1_name: front-left
screw2: 105, 15
screw2_name: front-right
screw3: 15, 105
screw3_name: back-left
screw4: 105, 105
screw4_name: back-right
horizontal_move_z: 5
speed: 100
screw_thread: CW-M3
Using screw_tilt_adjust
- Run
G28to home. - Run
SCREW_TILT_ADJUSTfrom the Klipper console. - Klipper probes all four screw locations and displays output like:
// front-left : x=15.0, y=15.0, z=0.04250
// front-right: x=105.0, y=15.0, z=0.07875
// back-left : x=15.0, y=105.0, z=-0.01375
// back-right : x=105.0, y=105.0, z=0.00750
// 01:20 means 1 full turn and 20 minutes of a turn (CW = clockwise)
// front-right : adjust CW (full) 01:15
The output tells you how much to turn each screw. CW means clockwise (tighten, lower the corner). CCW means counter-clockwise (loosen, raise the corner). One full turn of an M3 screw with a 0.5mm pitch changes the corner height by 0.5mm. Minutes of a turn (01:15 means 1.25 full turns) gives you fine control.
- Adjust each screw as indicated, then re-run
SCREW_TILT_ADJUST. Repeat until all corners report within 0.02mm of each other.
Bed Mesh Calibration
Once the mechanical leveling is within 0.05mm corner-to-corner, enable bed mesh to handle any remaining warp or local height variation. The V0.2's small bed means you can use a finer mesh than on larger printers without a significant time penalty.
[bed_mesh]
speed: 150
horizontal_move_z: 5
mesh_min: 15, 15
mesh_max: 105, 105
probe_count: 5, 5
algorithm: bicubic
bicubic_tension: 0.2
fade_start: 1.0
fade_end: 10.0
fade_target: 0
Configuration Notes
mesh_minandmesh_max: Set these to stay within the flat portion of your bed, away from edges and screw holes. 15mm inset from the edges is generally safe.probe_count: 5, 5: A 5x5 grid gives 25 probe points on a 90mm x 90mm area — approximately one point every 18mm. This is overkill for most beds but takes only 15-20 seconds on a V0.2. For very flat beds, 3x3 is sufficient.algorithm: bicubic: Bicubic interpolation produces a smoother mesh surface than lagrange, which can have oscillation artifacts at the edges. Bicubic is almost always the better choice for bed mesh.fade_startandfade_end: The mesh compensation fades out over the first 10mm of Z height. This prevents the mesh from creating artifacts in the rest of the print. For a V0.2 with a 120mm Z height, this is a very small proportion of total print height — you could setfade_end: 5.0to fade over the first 5mm for thicker first layers.
Running the Full Calibration Sequence
Here is the recommended sequence for your PRINT_START macro on a V0.2:
[gcode_macro PRINT_START]
gcode:
{% set BED_TEMP = params.BED_TEMP|default(100) %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(230) %}
# Heat bed
M140 S{BED_TEMP}
G28
M190 S{BED_TEMP}
G4 P120000 # 2-minute soak for V0.2 small bed
# Bed mesh
BED_MESH_CALIBRATE
# Heat hotend
M109 S{EXTRUDER_TEMP}
# Priming line
G92 E0
G1 Z5 F300
G1 X2 Y20 F3000
G1 Z0.2 F300
G1 X118 Y20 E8 F600
G92 E0
Note the shorter soak time compared to larger Vorons. The V0.2's small bed reaches thermal equilibrium in 2-3 minutes, so a 2-minute soak (G4 P120000 = 120,000ms = 2 minutes) is sufficient. Longer soaks are unnecessary and waste time.
Probe Options for V0.2
The V0.2 has limited space for probes due to its compact toolhead area. Here are the most common options:
- Omron TL-Q5MC2 inductive probe: The standard recommendation. 5mm sensing range, 12mm diameter barrel, M12 threaded. Mounts on the Mini-Stealthburner toolhead. Repeatability: approximately 0.01-0.02mm. Affected by bed temperature — calibrate z_offset at printing temperature.
- PL-08N2 inductive probe: A smaller alternative (8mm barrel vs 12mm) that fits tighter builds. Shorter sensing range (2mm) requires more precise mounting height.
- Klicky MicroProbe: A microswitch-based probe designed specifically for the V0.2 toolhead. Uses a small servo or magnetic retention to deploy and stow a probe arm. Higher repeatability than inductive probes (0.005mm) but adds mechanical complexity.
- Beacon for V0.2: The contactless eddy current sensor mounts behind the toolhead and requires no moving parts. Excellent repeatability (0.003mm) but costs approximately $70-90 and requires CAN bus or additional wiring for the I2C interface.
- No probe — manual mesh: Some V0.2 builders skip the probe entirely and use Klipper's manual probing with
BED_MESH_CALIBRATEin interactive mode. This is tedious (25 manual probe points for a 5x5 mesh) but zero-cost and works reliably if you have a steady hand.
Troubleshooting First Layer Issues
First Layer Too High on One Side
Run SCREW_TILT_ADJUST again. The bed has likely shifted since your last adjustment. Silicone spacers can compress over time as the bed undergoes thermal cycles. Re-check every 50-100 print hours.
First Layer Inconsistent Across the Bed Despite Good Mesh
Check your Z leadscrew alignment. A bent or misaligned leadscrew causes the gantry to tilt slightly as it moves up and down. This is especially noticeable on the V0.2 because the gantry is lightweight. Install a Z leadscrew stabilizer (a printed part that constrains the top of the leadscrew) to reduce wobble.
Mesh Shows a Persistent Dip or Peak in the Same Spot
This is likely a bed defect — a high spot from the magnetic adhesive layer on the PEI sheet, or a low spot from a dent in the aluminum plate. You cannot adjust this mechanically. Use a higher probe_count (7x7 or 9x9) to map it accurately, and let the mesh compensate. If the defect is larger than 0.15mm, consider sanding the PEI sheet with fine grit sandpaper (1000 grit+) on a flat surface, or replacing the build plate.
Z Offset Drifting Between Prints
The V0.2's thermal expansion coefficient means the distance between the probe and the nozzle tip changes as the printer heats up and cools down. Always run the Z offset calibration (Z_ENDSTOP_CALIBRATE) at printing temperature. Consider using a nozzle brush with a Z endstop pin for automatic Z offset calibration before each print — this eliminates drift entirely.