Duet3D boards are universal 3D printer control boards, but their setup on the firmware side can be complex. This page serves as a way to assist in the setup of an EZABL Bed Leveling kit with your Duet3D board. We’ll give some examples of configuration lines and connections for these Duet3D boards.
The Duet boards are not recommended for new users. They require a lot of reading and settings to get them running. This information is provided as-is to assist with making sense of their documentation for setting up a probe on their boards.
The included technical support on the EZABL kits is limited to the kit itself, and setting up your Duet board is not included with the included technical support on the EZABL. This information is provided as-is and as a courtesy for our customers who want to use an EZABL with their Duet powered 3D printer. Duet does not provide direct technical support but they do have their forum should you have questions about their boards: https://forum.duet3d.com/
This guide was written based on the Duet 3.X firmware version. Make sure to update to the latest firmware version on your Duet board & LCD (if any) before continuing. Refer to Duet documentation for updating your board/LCD.
The Duet3D boards all have IO pins. The Duet 2 series has a dedicated Z_PROBE header on the board. The Duet 3 series have general IO pins available for you to use. The connection is simple – select an input pin and a ground pin from a header to use for the EZABL connection.
The EZABL control board has a Z endstop screw terminal for connecting to a control board. Run 2 wires from the Z endstop screw terminal on the EZABL control board to one of the input and ground pins on the Duet board’s IO header.
You will still supply power to the EZABL control board from your printer PSU or the Always-on “fan” headers on the Duet board. The EZABL control board needs 12-24V to operate correctly.
Use the dedicated Z_PROBE header if you have a Duet 2 Wifi/Ethernet board
You can use any IO pin input, but for this document purpose you should use IO_7
You can use any IO pin input, but for this document purpose you should use IO_6
If you are used to Marlin, then the Duet will require a large learning curve. Their Gcode command reference is crucial to understanding how to use their firmware that their boards run. There are a few values that you need to set to get the optimal settings. Some will need to be modified based on your printer bed size.
All these commands go in your config.g file. If you are using their web tool see the steps below on the web tool and recommended setting selections.
For the M566 command, we recommend setting the Z parameter to 300. This sets the maximum speed change for an axis. Example: M566 X900.00 Y900.00 Z300.00 E120.00
For the M203 command, we recommend setting the Z parameter to 900. This sets the maximum speed for the axis. Our EZABL pro can handle up to 15mm/s speeds. Example: M203 X6000.00 Y6000.00 Z900.00 E6000.00
For the M201 command, we recommend setting the Z parameter to 500. This sets the acceleration value for z. Example: M201 X1000.00 Y1000.00 Z500.00 E250.00
For the M208 command, we recommend setting the Z parameter to -2. This sets the limit on the Z movement. If set to 0, you will not be able to use the babystepping feature. Example: M208 X0 Y0 Z-2 S1
At the end of your config.g file, make sure you have the below lines. These activate the 1st extruder and enable the EEPROM support.
T0 ; Select tool 0
M501 ; Enable EEPROM support
These configuration lines set the probe to mode 5 and specify the IO pin with inversion (!) since the EZABL uses a Normally Open logic type. These commands are based on the above wiring pictures.
M558 P5 C"!zprobe.in" H3 F900 T12000
M558 P5 C"!io7.in" H3 F900 T12000
M558 P5 C"!io6.in" H3 F900 T12000
AFTER the M558 command listed above, you need to specify your probe offsets. This is done with the G31 command.
The P parameter specifies the trigger level; use our recommend 25 value for quick registration of the signal.
The X parameter is your X offset. If it is to the left of the nozzle, it is a negative number; to the right of the nozzle is a positive number.
The Y parameter is your Y offset. If it is in front of the nozzle, it is a negative number; behind the nozzle is a positive number.
The Z parameter is your Z offset. Unlike Marlin, this is a positive number. You can edit this after determining the Z offset distance once you have the probe calibrated and installed. If the offset is -2.0 to get to the 0 height on Z on the bed, it would be Z2.0 for the Z parameter.
G31 Example line
G31 P25 X30 Y12 Z2.0
You’ll then need to define the area you want to probe. This is done with the M557 command. Let’s go over the parameters that are required for setup and what they do. This goes AFTER the G31 command that we entered above.
M557 X35:265 Y35:265 P3:3
In the example above, we have a few parameters. The X and Y ones specify the probing boundaries on the bed. This should be set in from the edge of the bed and also where the probe can reach. Take into consideration your probe offsets when setting these.
The P parameter specifies how many probe points you want. In the example, we are probing 9 points in a 3×3 grid.
Unlike Marlin, you need to specify where you are homing the Z-axis. This requires setting the correct values for your machine in the homeall.g and homez.g files. Below are examples of a CR-10 size machine with probe offsets of X30 Y12. Modify them for your specific bed size and probe mount offsets.
; homeall.g
; called to home all axes
G91 ; relative positioning
G1 H2 Z5 F6000 ; lift Z relative to current position
G1 H1 X-305 Y-305 F3000; move quickly to X and Y axis endstops and stop there (first pass)
G1 H2 X5 Y5 F6000 ; go back a few mm
G1 H1 X-305 Y-305 F1800; move slowly to X and Y axis endstops once more (second pass)
G90 ; absolute positioning
G1 X120 Y138 F6000 ; go to first bed probe point and home Z
M558 F900 ; Home EZABL Fast 15mm/s
G30 ; home Z by probing the bed
M558 F450 ; Home EZABL Slow 7.5mm/s
G30 ; home Z by probing the bed
homez.g Example
; homez.g
; called to home the Z axis
G91 ; relative positioning
G1 H2 Z5 F6000 ; lift Z relative to current position
G90 ; absolute positioning
G1 X120 Y138 F6000 ; go to first bed probe point and home Z
M558 F900 ; Home EZABL Fast 15mm/s
G30 ; home Z by probing the bed
M558 F450 ; Home EZABL Slow 7.5mm/s
G30 ; home Z by probing the bed
Duet has a web config tool that you can use to get setup and upload to your board. Below are the recommended settings.
The config tool gets you most of the way there and this generates a baseline configuration setup to use. You will need to then go back into your Duet board and make sure your config.g, homeall.g, and homez.g files all are set up in the way that is detailed in the above steps for best performance.
Duet web config tool: https://configtool.reprapfirmware.org/Start
Set the Z dive height on the General page.
Setting the IO mappings. Your pin needs to be in the “(inverted)” mode to work correctly
Set the Z axis speeds to our recommended ones
Set the endstop configuration and probe settings.
Set the correct settings on the Endstop page.
Set your probing boundaries. Ignore the Grid spacing setting. Replace the S20 on the M557 line in your Config.g file with P3:3 to set the number of probe points. See “Defining the Mesh Grid” section above
We hope the information here helps you get started with the EZABL on your Duet powered 3D printer. The Duet boards are nice but definitely not for the new user due to their complexity. For further information on the Duet products, see the below links:
The included technical support on the EZABL kits is limited to the kit itself, and setting up your Duet board is not included with the included technical support on the EZABL. This information is provided as-is and as a courtesy for our customers who want to use an EZABL with their Duet powered 3D printer.