Duet Maestro in MakerGear M3

  • So, I've gotten the Maestro installed, firmware V2.05 installed and utilized the online configurator to get some basic things going. The M3 has a Bltouch installed as it's stock configuration which i have working.

    The first couple of issues i'm working on in regards to the Z axis and Bltouch is that I need the Z axis to both set zero via the BLtouch but also need the Z axis to read the endstop switch for when the Z axis goes to it's max position. This is of course mostly just for the initial homing before it uses the Bltouch to find zero.

    Second question is for the best method to go about setting the Z offset for the Bltouch.

  • @DC42, can you shed some light?

  • @guycobb2
    You don't need the endstop for homing.

    Standard procedure for homing Z (eg. script in homez.g):
    Z-Axis is lifted 5mm to current position
    Pin of Bltouch deploys
    Z-Axis is lowered till probe touches the build plate
    Position will be stored

    G28 (first 25s)

  • @DIY-O-Sphere that is currently what it does. However if the bed is lowered close to maximum position and it goes to raise Z (lower bed) any further it will bottom out. I want that end stop to prevent that. The endstop should only be needed, potentially, during the homing procedure. Hope that makes sense.

  • @guycobb2

    Limit you z-axis a little bit, then you are on the save side

  • @DIY-O-Sphere I’d rather not if I could instead utilize the endstop already there. Is it not a possibility?

  • @guycobb2
    Doesn't make sense to me.



    1. You also have to limit the working area.
    2. Time needed for moving from min position to max position and back.

  • I’m not following what you’re getting at.

    The current available Z is 210mm. If I print something that is 205mm and then shut off the printer I only have 5 mm of down travel left. The next time I turn the printer on and go to home all the axis the bed is set to lower 10mm before making any X or Y movements. Obviously I only have 5mm to work with, so I want it to trigger the end stop and know that it can go no further. This will only happen on the rare occasion that I print something that is fairly tall, relatively speaking, prior to an initial how homing taking place.

    In stock form this was being carried out via a RAMBo board and a raspberry pi running octoprint. Surely a duet board can make this happen.

  • Moderator

    If you really want to use Z max and the probe, you can check out this guide



    In the guide the homez macro is used to home to zmax, and homeall uses the probe to home to zmin. It also includes a way of using the probe to find Z0 and then homing to zmax to set the actual height of the z axis.

    Please note that the Zmax endstop is only active during a homing move (G1 H1) it's not active all the time.

    @guycobb2 said in Duet Maestro in MakerGear M3:

    This will only happen on the rare occasion that I print something that is fairly tall, relatively speaking, prior to an initial how homing taking place

    The problem is that you'd have to home to Z max every time in homeall or manually use homez before moving the axis back up.

    The endstop won't be active during that 10mm raise movement to stop it from going past.

  • Thanks. I’ll look into it. I guess I can live with the extra 15 seconds for Z travel during the initial homing. G28 wouldn’t trigger this sequence would it? Because it’s obviously in the starting gcode and I wouldn’t want this entire procedure to run before every print. Would just want to have XY homed and Z height zeroed then a bed mesh ran.

  • Moderator

    10mm for the BLtouch raise is probably more than necessary. I use 3mm for instance. And I have left just enough travel at the zmax height to allow for this movement even if I have used the full 300mm.

    You can also drop the Z axis motor current so that if it's at the max of travel it will simply stall the motor rather than cause damage. Then you can use the probe to home as normal.

  • Thanks again. Will probably do as you said and see about dropping the current during the homing procedure on the Z axis.

    The more I think about it I’m betting they actually didn’t use the Z endstop in stock configuration. Originally the M3 did not come with a BLtouch. I’m betting that endstop was never removed from the design. I could be wrong. But I’ll probably just remove it and make my life easier.

  • Moderator

    Well the Zmax endstop has it's uses, mainly for homing the Z axis to resume a print after a powerloss.

  • @guycobb2 said in Duet Maestro in MakerGear M3:

    But I’ll probably just remove it and make my life easier.


  • @Phaedrux Dang it. I didn’t think about resuming a print. How well would that work though if zero was set with the bltouch and not the endstop?

  • Moderator

    @guycobb2 said in Duet Maestro in MakerGear M3:

    How well would that work though if zero was set with the bltouch and not the endstop?

    See the guide I linked for exactly that solution.

  • Gotten a little further in the set up process. The next thing I’m looking to do is set up manual bed level assistance. After that I plan on setting up the bed mesh compensation but was curious, do both of those call on the bed.g file?

  • Moderator

    manual bed level assistance and bed mesh compensation are two different things and you can use them together.

    Bed.g is just a macro file that happens to get called by G32. You can put whatever you want into bed.g. It's up to you how you use it.

    Manual bed level assistance as laid out in the documentation would make sense to put into bed.g so that you can run it with G32.

    Mesh compensation is different. G29 will run a probe routine and map the bed surface and save the results. G29 S1 can then be used later to load that saved result.

    So your bed.g file could be setup to home the printer, clear any bed adjustments, probe the points nead the screws for manual leveling assistance, and then load the saved heightmap if you wish, or probe the entire bed. It's entirely up to you.

    I would suggest visualizing how you want things to proceed when you start a print and write that out step by step, and then trying to work through how that would look with Gcode. Ask yourself if something needs to be done before each print, or only occasionally. Do you want it to happen automatically, or only by request? What state does the machine need to be in before each step? What state will it be in afterwards?

  • So what’s the m671 stuff in the config.g for?

    I’ll just be looking to do the manual adjustment on occasion, of course. It seems to hold its position quite well. However, before each print I plan on a somewhat quick 9 point mesh compensation as that’s what it used in stock form and I had zero complaints. The print area is only 202 x 233

  • Moderator

  • Ok, that makes more sense. So, if I place the nozzle above a screw to find it’s XY coordinates, do I use the numbers shown on the GUI or do I need to compensate for the 21mm X offset of the BLtouch? I have the BLtouch offset defined in the config.g file.

  • Moderator

    M671 would be the location of the screws in absolute coordinates. So yes the nozzle position should define it. It's in your bed.g where you would be defining the probing points that you may have to account for the probe offset so that you're positioning the probe close to the screws rather than the nozzle close to the screws.

    I assume you've seen these:


  • Excellent. Thanks. I do indeed already have both of those docs opened in tabs. Currently at work, just trying to determine my attack plan for when I get home tonight.

    Some of the docs just didn’t explain enough detail as to what everything did (or at least I didn’t see it if it did) but you’re making things more clear.

  • So I have the manual bed adjustment assistant working and used it to tram the bed.

    After that I setup the m557 for the bed mesh compensation and tried running it. However, I keep getting a “Error G29: no valid grid defined for bed probing” .

    Here’s my bed.g that’s setup for the leveling assistant.

    ; bed.g
    ; called to perform manual bed level assistant via G32
    ; generated by RepRapFirmware Configuration Tool v2.1.8 on Mon Feb 24 2020 01:49:32 GMT-0600 (Central Standard Time)
    M561 ; clear any bed transform
    G28 ; home all axis
    G30 P0 X25 Y16 Z-99999
    G30 P1 X215 Y16 Z-99999
    G30 P2 X25 Y248 Z-99999
    G30 P3 X215 Y248 Z-99999 S4
    G1 X100 Y126.5 F9000 ; go to center of bed

    And here’s a chunk from my config.g file....what am I missing?

    M558 P9 H5 F300 T9000 ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X21.0 Y0 Z1.048 ; set Z probe trigger value, offset and trigger height
    M557 X25:215 Y16:Y248 P3 ; define mesh grid with P defining number of points to probe in each axis

    ; Manual Bed Leveling Assistant
    M671 X21:219.5:21:219.5 Y8.5:8.5:257.5:257.5 P0.7 ; bed adjustment screws are front left (x21,y8.5), front right (x219.5,y8.5), rear left (x21,257.5), rear right (x219.5,y257.5), thread pitch is 0.7

  • Moderator

    @guycobb2 M557 looks okay, assuming that the X and Y limits you have set can be reached by the probe. Did you restart after changing config.g? Try entering the M557 command directly in the console. Sending M557 on it's own should report the settings. G29 doesn't use the bed.g, G32 does.


Log in to reply