questions on bed leveling g32 and g29 together?

  • I have a corexy with 4 z motors next to each of 4 rods and bltouch. I can perform g32 and g29 manually which as far as i can tell perform their function and adjust accordingly.

    I have a couple problems:

    1. g32 compensation does not seem to hold after reboot. i verified by running g32 after a reboot and it has to compensate each time.
      • Are these settings stored somewhere?
      • if so where, and how do i call on it?
    2. after performing both tasks, and then manually move the print head around i do see that the bed is level with the paper method on a warm bed/nozzle, i then try to print a sliced file. as the nozzle moves 1/3 to 1/2 across the bed, it crashes into the build plate. I can only assume g32 and or g29 did not load.
      • must i call the result of g32 then g29s1 in my slicer?
      • if i call just g29s1, will it also take into account g32?

    Ideally id want to have the duet leveled once and not before every print/reboot. if that is possible, i am at a loss at how to achieve it

    G28 ; home
    M401 ; deploy Z probe (omit if using bltouch)
    G30 P0 X20 Y150 Z-99999 ; probe near a leadscrew,
    G30 P1 X20 Y370 Z-99999 ; probe near a leadscrew,
    G30 P2 X450 Y370 Z-99999 ; probe near a leadscrew,
    G30 P3 X450 Y150 Z-99999 S4 ; probe near a leadscrew and calibrate 2 motors
    M402 ; retract probe (omit if using bltouch)

    ; Drives
    M584 X0 Y1 Z7:6:5:2 E3
    M569 P0 S0 ; physical drive 0 goes backwards
    M569 P1 S0 ; physical drive 1 goes backwards
    M569 P2 S1 ; physical drive 2 goes forwards
    M569 P3 S0 ; physical drive 3 goes backwards
    M569 P4 S1 ; physical drive 4 goes forwards
    M569 P5 S0 ; physical drive 4 goes forwards
    M569 P6 S0 ; physical drive 4 goes forwards
    M569 P7 S0 ; physical drive 4 goes forwards
    M584 X0 Y1 Z7:6:5:2 E3:4 ; set drive mapping
    M671 X-50:-50:560:560 Y145:370:370:145 S3 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis

    -Thank you

  • @monsterfd What is your firmware version please. If you are running RRF3 I can post a link to that someone help me with conditionals, so I do not have to perform a Home and a 4 point probe on every print on my CoreXY, only at the beginning.

    G32 result AFAIK is held in memory, so that is why when you reboot or power off/on you have to perform a G32 again. Personally I would not want the values stored and then read on power on, the bed could of dropped / moved and am fine with running a G32.


  • G32 slightly adjusts the motors so they are all in sync.
    If power is lost/removed from the motors, there's no guarantee that the motors won't move slightly.
    Therefore, you won't be able to remove the need for G32 after a reboot.

  • administrators

    Also, when you reboot the Duet, the stepper drivers don't remember which microstep they were on and start up at the same microstep each time (*). So the motors will jump up to about 2 full steps in either direction. Unless you have very high Z steps/mm, this will wreck the G32 calibration.

    (*) In some systems the drivers will also execute a random number of microsteps at power up. This may be particularly likely to happen if there are stepper motor wires running across or under the Duet. Recent 3.01-RC firmware releases counter this by resetting the microstep counters to 0 after power up.

  • @PaulHew im on 2.05.1 and rrf3

    thank you

  • @dc42 thank you. my question now then is what is the correct procedure to get g32 and g29 values after a power cycle? do i just need to run g32 after booting, and have g29s1 in slicer? or must i redo g29 after g32 on reboot?

  • @monsterfd

    Run G32 and include G29 S1 in your slicer.
    As long as you've not removed and reinstalled your bed you'll be fine

Log in to reply