Skip to main content

Site Navigation

Your Account

Choose Language


This guide describes how to configure RepRapFirmware 2 to drive two Z motors from separate drivers, with each motor having its own endstop switch.

Note that in RRF3 you do not need to create new axes in order to use multiple endstops on an axis. You simply need to list the pins used for endstops in your M574 command. See Bed levelling using multiple independent Z motors

See: Gcode Wiki M574

  1. Don't forget to put back the 2 jumpers on the ZB socket if you had the second Z motor plugged into it it before.
    • Don't forget to put back the 2 jumpers on the ZB socket if you had the second Z motor plugged into it it before.

    • Don't do any connection with the power on, these are current drivers.

    • Connect the endstops to their connectors. Make sure the endstop connected to Z is the one closest to the Z motor, and the one connected to E0 is closer to the E0 motor.

    • edit it first to avoid forgetting.

    • The M584 line is critical, it's combining the axes. The P3 parameter only shows 3 axes to hide the U axis.

    • Because we'll split the axes during the homing we have to configure everything for U: acceleration, endstops, etc.

    • Don't forget to configure the new motor too.

    Shouldn’t you be calling the Dual Z parameters and not E? eg. ->

    M566 X600 Y600 Z12:12 U12 E300 ; … etc since your m584 is stating Z has 2 drivers M584 X0 Y1 Z2:3 U3 E4 P3

    Chris Conway - Reply

    agreed, thanks

    Nicolas Raynaud - Reply

    • The first M584 splits the axes into independent Z and U. It also displays U (P4) because otherwise the controller doesn't move it.

    • After splitting, we move Z and U simultaneously and at the same speed towards their respective home switch.

    • The second M584 re-combines the axes as Z and hides U (P3)

Finish Line

4 other people completed this guide.

Nicolas Raynaud

Member since: 06/14/2018

319 Reputation

1 Guide authored


Thanks for this guide! I was struggling with using M584 P3 in config.g and not having the the U (and V in my case) leadscrews moving. Updating the P parameter in homez.g did the trick.

George Joseph - Reply

This is a good guide,

I solved the problem this way.

I mechanically limited the the two lead screws, wired the 2 limit switches in series and made the homez.g go up once to limit, advance 1-2 mm (trip trip trip), rehome. Works perfect every time.

When the table is way off, one side bumps up against the stop until both limit switches close.

I could see this working with 3 and 4 screws too. Just need a limit switch for each one.

All motors need to connect to the Z output. (Series) I think?

James Harrison (Jimbo) - Reply

James, can you provide some more information on how you achieved your approach? How did you mechanically limit the 2 lead screws, wire in series for the end stops, and gcode you needed to add? Your way sounds a bit more direct. Thanks in advanced!

Bill McDaniel -

I used this guide - really well done! Thanks!

Bill McDaniel - Reply

Note that the line:

G1 Z2 F6000 ; Lift Z relatively to current position

Needs S2 added to it, so should read:

G1 Z2 S2 F6000 ; Lift Z relatively to current position

Its a FW requirement for current versions.

Bill McDaniel - Reply

Thanks, looks like it has been updated in the text.

Tony -

Excellent guide! But I was going in circles with the second value for extruder :xxx in the motor settings.

I set up a CR-10S with dual Z using E1 as the second Z (U Axis). Copying & pasting these settings and correcting the ASSIGNMENTS without removing the :xxx values had my machine (and me) going nuts until @dc42 figured it out.

I thought the second extruder setting (E92.6:92.6) was the actual motor value for each axis, when it just needed to be removed from each line!

To clarify a bit, in the example;

M92 X320 Y320 Z1600 U1600 E92.6:92.6

in my case needed to be:

M92 X80.00 Y80.00 Z400.00 U400.00 E410.00 (the high 410 number is because I have a Bondtech BMG geared extruder)

Note the missing second value for the extruder. Same thing for steps/mm and stepper values M566 to M906.

For those still confused, the example is a machine with TWO extruders, which becomes a problem when reassigning the second extruder to run the Z Axis (axis U).

Just a heads up for other CR-10S upgraders who are new to all this :-)

PuterPro - Reply

I removed the confusion thing, sorry.

Nicolas Raynaud -

Hi, I’ ve done everthing according this manual, dual Z homing fine, but right after homing when I move with any axis X/Y it starts to move with U drive up to the endstop and crashing one side of Z axis.. Any suggestions where should I look for mistake ?

flyin Goat - Reply

Please ask for help in a new thread on the forum, and include your config.g and homing files in that post.

David Crocker -

I will try the use of this info to double y axis motors and z motor axis to get electrical power dissipation of drivers splitted among specific I.C.

Paolo Francia - Reply

Ok, My machine both z-motors are wired in series on one output.

I limit the Z screws on both sides with a clamp on the z screw.

The clamps are 3D printed split disks with screws to tighten them on z-screws

The clamps have a screw sticking down that hits one of the hold down screws on the z-nut as the bed rises.

I install z limit switches on both sides of the bed, these are very touchy until you figure it out.

No code changes, machine goes up until both switches close, one side will “Ratchet” until the other side matches up.

once it is setup, works perfectly .

The z-limit switches should have a very fine adjustment method, Fine thread screw with a lock nut.

You need to go back and forth, one side lower to start, then the other.

It’s Touchy, but not impossible.


James Harrison (Jimbo) - Reply

Hi do u have or know where I can get a config file for reprap Ver. 2.05? The config I downloaded from duet contains code for the 3.xx ver..

heaters & extruder don,t work, unsupported code error. thanx chris

fire fli - Reply

If you used the configuration tool, on the ‘General’ tab there is an option for Firmware Version, where you can select ‘2.03 to 2.05’. See

Otherwise please use the forum for support:

Ian A-S -

Add Comment

View Statistics:

Past 24 Hours: 13

Past 7 Days: 66

Past 30 Days: 312

All Time: 12,598