Duet Wifi in Core XY Homes correctly but Bedlevel does not

  • Hello DocTrucker, thanks for the reply.
    I home Z on Zmax so that it is possible in case of a interrupted print to continue the print.

    • and - is in relation to the hotend, which is common in 3d printing as far as i know......
      Homing of z is also not the problem. Only the probing.

  • Here is my config for axis minima and maxima:

    M208 X0 Y-5.0 Z-10 S1 ; Set axis minima
    M208 X325 Y300 Z299 S0 ; Set axis maxima

    Are you using G92 to set the current z to 0 during your paper procedure?

    If so that will prevent you moving the elevator away form the nozzle as you have set the axis maxima as 0.

    Edit: I also have a core xy that homes on max z. I then use a microswitch based bed probe for bed compensation and auto bed levelling. I've set up my axis maxima and minima so that z=0 is approximately where the nozzle contacts the bed. The -10 allowance is so that I have a margin to correct for this with the microswitch bed probe.

  • My logic for the home on max z was that the position of the bed is not known until you bed probe, and I can't get the head in a position where the bed can raise all the way to the top of travel and trigger the limit switch without crashing the nozzle into the bed.

    Thanks for raising this though as I've just realised I may be able to do this now following recent mods and save myself having to drop the elevator right to the bottom in order to home! 😄

  • Thanks a lot for the help. I will try it later.
    I had microswitch before on a servoarm but could not have it running properly. So i switched to an inductive sensor. Seems to work better.
    Elevator movement: For me it does not make a difference if homing takes a minute longer or not when i think out hour long prints.
    I hope it works with your setting idea.
    Let you know later. Thanks

  • Thanks a lot for the support.
    Homing still moves into the right direction (down onto z endstop)
    Probing still moves into the wrong direction ( down and does not stop either if endstop is triggered).
    Another problem is that i can not edit macro files in the webeditor (1.21). Also the tab systemeditor is missing there.......
    really frustrating at the moment as i need this bloody thing to work..................

  • What commands are you using to start the probing / bed proebe?

  • ; bed.g file for RepRapFirmware, generated by Escher3D calculator
    ; 7 points, 4 factors, probing radius: 100, probe offset (38, 0)
    G30 P0 X0.00 Y93.48 Z-99999 H0
    G30 P1 X64.50 Y-37.24 Z-99999 H0
    G30 P2 X-86.60 Y-50.00 Z-99999 H0
    G30 P3 X0.00 Y39.81 Z-99999 H0
    G30 P4 X25.45 Y-14.70 Z-99999 H0
    G30 P5 X-43.30 Y-25.00 Z-99999 H0
    G30 P6 X0 Y0 Z-99999 S4

  • sorry that was the bed.g.

    here the config.g

    ; Drives
    M569 P0 S1 ; Drive 0 goes forwards
    M569 P1 S1 ; Drive 1 goes forwards
    M569 P2 S0 ; Drive 2 goes backwards
    M569 P3 S1 ; Drive 3 goes forwards
    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
    M92 X80 Y80 Z1600 E80 ; Set steps per mm
    M566 X900 Y900 Z12 E120 ; Set maximum instantaneous speed changes (mm/min)
    M203 X6000 Y6000 Z300 E1200 ; Set maximum speeds (mm/min)
    M201 X500 Y500 Z250 E250 ; Set accelerations (mm/s^2)
    M906 X800 Y800 Z800 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X300 Y300 Z400 S0 ; Set axis maxima

    ; Endstops
    M574 Z2 S0 ; Set active low endstops
    M574 X1 Y2 S1 ; Set active high endstops

    ; Z-Probe
    M558 P3 H5 F120 T6000 I1 ; Set Z probe type to ultrasonic and the dive height + speeds
    G31 P500 X0 Y0 Z1.5 ; Set Z probe trigger value, offset and trigger height
    M557 X20:280 Y20:280 S20 ; Define mesh grid

    ; Heaters
    M301 H0 S0.90 P10 I0.1 D200 T0.4 W180 B30 ; Use PID on bed heater (may require further tuning)
    M305 P0 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 0
    M143 H0 S120 ; Set temperature limit for heater 0 to 120C
    M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1
    M143 H1 S280 ; Set temperature limit for heater 1 to 280C

    ; Fans
    M106 P0 S1 I0 F500 H1 T50 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S1 I0 F500 H-1 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off

    ; Tools
    M563 P1 D H1 ; Define tool 1
    G10 P1 X0 Y0 Z0 ; Set tool 1 axis offsets
    G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C

    ; Automatic power saving
    M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss

    ; Custom settings are not configured

    ; Miscellaneous

  • administrators

    @joe71 said in Duet Wifi in Core XY Homes correctly but Bedlevel does not:

    Another problem is that i can not edit macro files in the webeditor (1.21). Also the tab systemeditor is missing there.......
    really frustrating at the moment as i need this bloody thing to work..................

    Please check on the Settings General page of Duet Web Control that both the firmware and Duet web Control are at version 1.21.

    Which browser are you using?

  • Sorry I meant which command are you using to trigger the bed probe?

  • @dc42

    Good morning and thanks for the quick reply.
    well well well, what should i say?
    After updating everything to 1.21, i am now able to edit the macros directly from inside the web browser.
    As it is mostly the case, the mistake was sitting between the ears. I did not check for new versions.
    Thanks a lot for the support, that is the way it should be. Iwill for sure spread the word under the people i know that duet is the way to go.

  • Ok, looking into it a bit more a plain G32 call should the bed mesh probe whose co-ordinates have been set up by the M557 in your config file. This should set up a mesh of points from 20 to 280 in each axis with a 20mm spacing.

    Your bed.g file is ignored if you call G32 I think...

    So the M558 and g31 are the only places I can thing to look for any other errors. You have the lines:

    M558 P3 H5 F120 T6000 I1
    G31 P500 X0 Y0 Z1.5

    This reads as you have told the machine that when it sees a sensor value of 500 that location is 1.5mm from 0. 500 looks very neat. Have you checked this? You can see the probe value on the web control and it is updated regularly. Move the head to the z=1.5 and see what it says the sensor value is?

    Edit: G32 does call bed.g over following the bed mesh co-ordinates set up by M557 - https://duet3d.dozuki.com/Wiki/Gcode#Section_G32_Probe_Z_and_calculate_Z_plane

    G29 will run the sequence where it checks all of the mesh points set up by M557.

  • Looking just at your M558 line:

    M558 P3 H5 F120 T6000 I1
    P3 = Control signal to probe driven low. Sensor value rises with decreasing gap between sensor and bed.
    I1 = Invert the sensor probe reading. So this converts the P3 to: "Sensor value decreases with decreasing gap between sensor and bed."
    H5 = Dive height of 5mm. Start probing at z=5mm.
    F120 = Probe at 120mm/sec.
    T6000 = Travel speed of 600mm/min between probe points.

    So if your sensor value is reading lower than 500 at the start point the bed probe will need to drive away from the build surface to reach the trigger point. The be probe routines normally move the nozzle closer to the bed (or bed closer to the nozzle) to reach the trigger point. Try to ensure the set up will need to reduce the gap between the nozzle and the bed to reach the trigger point.

  • My checks now would be:

    • Ensure the sensor value when the nozzle is 1.5mm from the build surface is 500.
    • Check the sensor readings at a z height of 0, 0.5, 1, 1.5, 2, 2.5 and just read them off the duet web control. If the numbers get larger with increasing z height then you have M558 set up fine. If they get smaller change I1 to I0 or remove it completely.

    Rather than calling G32 each time to test call "G30 S-1". This will just run a single probe in the head's current location. Start the move at z=5 call G30 S-1 and it should move down to the trigger height set in your G31. Get this working and G32 should be fine.

    Edit: Judging by the following link the I parameter will invert the reading before it is displayed. Therefore I would assume that you are looking for a low value when the nozzle is far from the bed and a high value when it is close. If you have the opposite then switch the I1 to I0.


  • I've recently built an Ormerod 2 that was produced by the now defunct RepRapPro and marketed by RS. This had a thorough user manual which was hosted by RepRapPro, but since that website has gone down one of the members of the RepRap forums (you are currently asking in the right place for Duet configuration issues!) hosted the site.

    There are some bits that may help including a simpler test for the probe by calling G31:


    On the Duet Gcode reference that is here:


    This is an alternative to reading the sensor value off the web page. If you can see the sensor value fine on the web page you will get the same result that way but it is sometimes useful to know the direct gcode commands.

    Here is the set up procedure for getting the P value in the G31 command found in the config file set up:


    ...and in order to give a nod to the person that is hosting those instructions at the moment this is the thread in the RepRap forum with the link to the hosted documents:


    I'll have a hunt around on the Duet wiki now for their equivalent of the above guides.

  • Here are the relevant Duet wiki pages which are more up to date:

    Wiring a z-probe: https://duet3d.dozuki.com/Wiki/Connecting_a_Z_probe

    Using G32: https://duet3d.dozuki.com/Wiki/Setting_up_automatic_probing_of_the_print_bed

    Using Mesh bed compensation: https://duet3d.dozuki.com/Wiki/Using_mesh_bed_compensation

    ...and where all the duet wiki pages live: https://duet3d.dozuki.com/

Log in to reply