Understanding bed levelling : G29 vs G32

  • I am still trying to understand the bed leveling procedure.

    Now what are the differences between G29 and G32 ?
    Which part of the configuration this 2 commands read?
    If I understand correctly the button in the web interface on "Machine Control " tab called "Auto bed compensation " run a G32 command .
    In my case this run a procedure of probing and at the end I can see the mesh grid map, so it seems to me that the G32 command run the bed.g commands, right?

    Now , with G29 command all seems to work the same except that the probel ( bltouc) doesn't deploy , so where I can add the deploy routine?

    In my other printer ,Marlin based ,I have a script that run G28 and G29 before all the printing , what script should I use for compensate bed in this case?

    Thank you for your patience

    My config.g part of bltouch
    [c];*** BLTouch
    M307 H3 A-1 C-1 D-1
    M558 P5 X0 Y0 Z1 H5 F200 T5000
    M574 E0 S0
    G31 P100 X0 Y-20 Z0.91 P1[/c]

    And my bed.g
    G1 Z6 F200
    M98 Pdeployprobe.g
    G29 S2
    M557 X30:270 Y30:270 S60
    M98 Pretractprobe.g[/c]

  • administrators

    G32 just runs bed.g. In bed.g for a Cartesian printer you put one of two things:

    1. A sequence of 3, 4 or 5 G30 commands with coordinates. This is the old way of doing it. You are limited to just 5 points, and you can specify trigger height corrections for those points.

    2. A G29 command to do mesh leveling. You don't get to choose individual points (just the grid) and you can't specify trigger height corrections. But you can have a lot more points.

    Either way, if you use a deployable probe then you need to deploy it at the start and retract it at the end.

    Your bed.g file looks good to me, a!though you don't need the G29 S2 command because the height map is cleared at the start of the G29 probing command anyway.

    HTH David

  • thank you very very much for your kind answer , as usual 🙂
    Excuse me but I am still mising some concept.
    the point I am missing is :
    If I understand correctly I can make mesh levelling in 2 way

    1. run G29
    2. run G32 with a bed.g containing a M557 command

    In my case if I run G32 , the probe deploy correctly and mesh levellingwill be completed without errors , while If I run G29 the probe miss the deploy even if the deploy command is present in the bed.g routine.
    Where the Duet read the mesh levelling info while running G29 command?

    Other question.
    I can't undestand how bed compensation is achieved during printing.
    What I undrestand is that the mesh levelling map is stored in the firmware , is this map checked every print if not cancelled?
    Do I have to make mesh levelling every print as I am doing on my marlin based printer?

    My start printing script should contain G32 only for bed levelling compensation to work ?

    Please be patient with my bad English and my dumb questions .

  • administrators

    At present, G29 does not deploy and retract the probe. I may change this in a future release; but it is no big deal because you can wrap the G29 command in either bed.g or another macro file that deploys the probe, does G29, and retracts the probe.

    The height map generated when you run G29 is stored in a file on the SD card. The default filename is sys/heightmap.csv. If you don't want to probe each time you turn the printer on, you can use the existing height map by running G29 S1. This loads the height map from the file on the SD card.

    Once you have a height map stored in memory, it will be retained until you turn the printer off, or run G20 to probe again, or run G29 S1 to load a height map from file, or run G29 S2 or M561 to clear the height map, or perform old-style bed probing using G30 Pnnn commands.

    Most of this is covered at https://duet3d.com/wiki/Using_mesh_bed_compensation.

    HTH David

  • Thank you for your answer ; i read the wiki many times but many basic concept is supposed as "already know " and not explained from the basics. I am reading the reprap site also and I am starting to understand.
    Please can you answer to the last question regarding this subject,
    If I want to use a fresh bed level for every print it is sufficient put G32 in the slicing software start script

  • administrators

    Yes you can use G32 in your slicer start gcode, with the bed.g file set up as you listed in your earlier post. Or use G29 S1 in your start script to load the most recent height map you generated.

  • Is it sane to use G29 S1 in config.g? I'd like it to load the heightmap when the machine is turned on, rather than in my start gcode, since I like to run the same print file on multiple machines.

  • Perfect now it seems clear thank you dc42!

  • administrators


    Is it sane to use G29 S1 in config.g? I'd like it to load the heightmap when the machine is turned on, rather than in my start gcode, since I like to run the same print file on multiple machines.

    Yes that should be ok. Or you could put it at the end of homeall.g.


Looks like your connection to Duet3D was lost, please wait while we try to reconnect.