Voron V2.4 Z Drive Mods — Belted Z, BelZed, and Dual Motor Options
V2.4 Mod Z-Axis Mechanical
The Voron V2.4 uses a four-corner leadscrew Z drive system with a single stepper motor driving all four Z screws through a gearbox and belt network. While this works well out of the box, many builders eventually look to modify the Z drive for better bed leveling consistency, higher Z speed, or independent bed adjustment. This guide covers the three most popular V2.4 Z drive modifications: the BelZed conversion (belt-driven Z), the full belted Z mod that replaces leadscrews entirely, and the dual independent Z motor upgrade. Each has distinct tradeoffs in complexity, cost, and performance.
Stock Z Drive System Overview
The stock V2.4 Z system uses a single NEMA 17 stepper motor mounted on the bottom rear extrusion. It drives a central worm gearbox that distributes torque to four leadscrew nuts via GT2 belts. Each Z corner has an 8mm leadscrew with a 2mm pitch (4 starts, 8mm lead). This setup provides 0.01mm Z resolution with 1/16 microstepping — adequate for FDM printing — but has several limitations:
- Single motor failure point: If the Z motor stalls or the gearbox strips, the entire bed drops. There is no redundancy.
- Mechanical backlash: The worm gearbox introduces measurable backlash that Klipper's gcode_offset can partially compensate for, but it is never truly eliminated.
- Limited Z speed: The stock gear ratio limits reliable Z hop speeds to around 10-15mm/s. Faster moves risk the motor losing steps.
- No independent corner adjustment: All four corners move together. You cannot correct a twisted gantry or tilted bed via software alone without a Z tilt adjust mod.
BelZed Conversion — Belt-Driven Leadscrew Replacement
The BelZed mod replaces the four leadscrews with a belt-and-pulley system. Instead of rotating leadscrews to lift the bed, the BelZed uses GT2 belts running from the stock gearbox to the bed corners. Each corner has a carriage that rides on linear rails, with the belt looped over a fixed pulley at the top and an idler at the bottom. When the belts move, the bed rises and falls.
BelZed Advantages
- Zero backlash: Belts have no mechanical slop when properly tensioned. Z banding from leadscrew nut play disappears entirely.
- Higher Z speed: Belt drives can reliably move at 30-50mm/s for Z hops, significantly reducing print time on models with frequent Z lifts.
- Smoother motion: No leadscrew threads means no periodic Z-banding artifacts in the 8mm wavelength range.
BelZed Disadvantages
- Requires printed parts: You need to print the BelZed carriage and idler mounts. These must be printed in ABS or better — ASA or PC is recommended for heat resistance near the bed.
- Additional hardware: Eight F695 bearings, four M5x40 shoulder bolts, GT2 belts (about 2.5m total for a 350mm build), and extra M3 hardware.
- Tensioning complexity: All four Z belts must be tensioned equally. Uneven tension causes the bed to tilt as it moves in Z.
- Lost Z resolution: Belt drives reduce effective Z resolution compared to leadscrews. With a 20-tooth pulley and 1/16 microstepping, resolution drops from 0.01mm to approximately 0.025mm — still fine for FDM but noticeable for very thin layers.
BelZed Klipper Configuration
Klipper configuration for a BelZed mod is nearly identical to stock — the Z stepper driver settings remain the same. The key changes are in the rotation_distance and max_z_velocity:
[stepper_z]
step_pin: PB4
dir_pin: !PC5
enable_pin: !PB3
microsteps: 16
rotation_distance: 40
# For 20-tooth pulley with GT2 belt: 20 * 2 = 40mm per rotation
full_steps_per_rotation: 200
endstop_pin: ^PA7
position_endstop: 0.0
position_min: -4
position_max: 250 # Change to 300 or 350 for larger builds
homing_speed: 15
second_homing_speed: 5
homing_retract_dist: 5
The rotation_distance of 40mm (20-tooth pulley x 2mm belt pitch) replaces the stock leadscrew value of 8mm. The max_z_velocity in the printer.cfg can be safely increased to 30mm/s, and max_z_acceleration to 100mm/s2.
If you are using independent Z motors with Klipper's Z tilt adjust, change the config to use [stepper_z], [stepper_z1], [stepper_z2], and [stepper_z3] sections, each with the same rotation_distance.
Full Belted Z Replacement
A more radical approach than BelZed is replacing the entire stock Z drive — worm gearbox, leadscrews, and motor — with a fully independent belted system. This typically uses four NEMA 17 motors (one per corner), each driving a GT2 belt loop. The motors are controlled independently by Klipper, allowing full Z tilt adjustment. This is the same approach used on Trident and V2.4 builds that run CanBus on all axes.
Hardware Requirements
- 4x NEMA 17 stepper motors (0.9-degree recommended for higher Z resolution)
- 4x GT2 20-tooth pulleys
- ~3m GT2-6mm belt
- 4x F695 or 625 bearings for idlers
- 4x stepper motor drivers (TMC2209 or TMC5160)
- A controller board or expansion board with 4 free stepper driver slots
Klipper Z Tilt Adjust Configuration
With independent Z motors, you enable Klipper's powerful z_tilt system. This automatically adjusts each Z motor to level the bed after probing:
[z_tilt]
z_positions:
-175, -129 # Front-left corner
175, -129 # Front-right corner
-175, 129 # Back-left corner
175, 129 # Back-right corner
# Coordinates depend on your build size and probe location
points:
0, 0
200, 0
0, 200
200, 200
speed: 100
horizontal_move_z: 5
retries: 3
retry_tolerance: 0.01
Run Z_TILT_ADJUST before every print via your PRINT_START macro. The gantry levels automatically within 0.01mm flatness across all four corners. This eliminates the need for manual bed leveling entirely.
Quad Gantry Leveling (QGL) vs. Z Tilt
QGL on the stock V2.4 controls the A and B steppers (Z belts) to level the gantry. With independent Z motors, Z tilt adjust replaces QGL's role. You should not run both. Disable QGL in your print start routine and substitute Z_TILT_ADJUST instead. QGL is designed for the stock single-motor Z system; it will fight with independent Z control and cause erratic behavior.
Dual Independent Z Motor Upgrade
A middle-ground modification is keeping the stock leadscrews and gearbox but adding a second Z motor. This provides redundancy without abandoning the stock architecture. Two motors drive the gearbox in parallel through a belt loop. If one motor fails, the other can still move the bed.
Configure this with Klipper using [stepper_z] and [stepper_z1] sections. Both use the same rotation_distance (8mm for stock leadscrews), but the second motor is slaved to the first. Full Z tilt adjust is not possible with only two motors driving a shared gearbox, but you gain safety redundancy and can distribute the load across two drivers, reducing thermal stress on each.
Performance Comparison
| Mod | Z Speed | Backlash | Complexity | Cost |
|---|---|---|---|---|
| Stock | 10-15 mm/s | ~0.05mm | None | $0 |
| BelZed | 30-50 mm/s | ~0.01mm | Medium | $20-30 |
| Full Belted | 50-80 mm/s | ~0.005mm | High | $80-120 |
| Dual Motor | 10-15 mm/s | ~0.05mm | Low | $25-40 |
Choosing the Right Mod for Your Build
If you are printing primarily functional parts and ABS, the stock Z system is perfectly adequate. Upgrade to BelZed if you are chasing surface finish and want to eliminate Z-banding. Go for the full belted conversion if you print at high speeds (300mm/s+) and need frequent Z hops. The dual motor upgrade makes sense for reliability-focused builds running 24/7 production where a single motor failure would be costly.
Whichever path you choose, ensure your linear rails on all four Z corners are well lubricated and smooth. The best Z drive mod in the world cannot compensate for sticky or binding Z rails. Use Super Lube 21110 synthetic grease or equivalent — lithium grease is not recommended as it thickens in cold environments and can cause Z binding on the first layer after printer cooldown.
Z Endstop Considerations
All Z drive mods require rethinking your Z endstop strategy. The stock V2.4 uses a microswitch endstop triggered by the gantry at Z=0. With a belted mod, the bed position relative to the gantry changes. You have two options:
- Bed-mounted endstop: Mount a microswitch or optical endstop on the frame that triggers from the bed carriage. This measures the bed position directly, independent of belt stretch or wear.
- Probe-based homing: Use a probe (Klicky, Euclid, TAP, or Beacon) to home Z by probing the bed surface. This is the most accurate method and eliminates the endstop entirely from Z homing.
Probe-based homing is strongly recommended with any Z drive mod. Add [probe] and [safe_z_home] sections to your Klipper config:
[safe_z_home]
home_xy_position: 175, 175
speed: 100
z_hop: 10
z_hop_speed: 20
The home_xy_position should be the center of your build plate. This moves the toolhead to center, then probes down to find Z=0, avoiding any bed tilt issues when homing at a corner.