DEV2: G30 / G32 z-probe height

I needed to replace my servo of my probe for measuring the bed height.
Therefore I started to use G30 to calibrate my probe. I observed things:
1. Using the graphic display and the control I was not able to set values above 10mm (but I need around 13mm).
2. When changing the value in the eeprom using reptier server, it has no effect.

When using G32 S2 the changes in the EEPROM have the expected effect.

Do I have to use G30 in a different way? Or is there a mistake?


  • menu.cpp

    void __attribute__((weak)) menuProbeTrigHeight(GUIAction action, void* data) {
    GUI::flashToString(GUI::tmpString, PSTR("Trigger Height:"));
    DRAW_FLOAT(GUI::tmpString, Com::tUnitMM, ZProbeHandler::getZProbeHeight(), 2);
    if (GUI::handleFloatValueAction(action, v, -10.0f, 10.0f, 0.01f)) {

    is causing the 10mm limit. Have increased it to 20mm for next update also 13mm is quite high.

    2. When I change it in eeprom and reset it is still there and also shown in menu (except if value is out of range of course then it might get clipped). But it does nothing until next command using it.

    What code exactly do you run with G30 to calibrate? There are many uses and variation on that command.
  • I think I see my problem now.

    The high value of 13 mm allows me to press reset before the nozzle is broken, if there is a problem with the z-probe. And it is simply the end of the standard length of the servo.

    The workflow of G30 was like:
    0. In EEPROM ProbeHeight is 13 mm
    1. Home
    2. Move to a goog bed position
    3. Move down to roughly 20mm above bed
    4. Enter G30 with no parameters in repetier server
    5. Check height using the "moving or scratching paper"-method. Lets assume the heated nozzle hits the paper at 0.3 mm.
    6. Change the ProbeHeight to 13 mm-0.3mm +0.1mm(for the thickness of the paper)
    GOTO 1.
    Check if paper is hit at 0.1 mm. But this is not the case, even if I change the EEPROM value to 16 mm, at point 5 I get 0.3 mm.

    If I do the same like above but with G32 S2 instead of G30, than it works fine.

    Looking in the code of GCodes.cpp I do see that there might be a need of using G30 H13 to make it a calibration and not only a measurement. I looked at that part before my first post, but did not understand it. So it looks like I did not see the difference between measuring and setting a new value.
    So the correct usage would be "G30 H"ProbeHeight", right?

    By the way: I use this not perfectly updated g-code table with explanations:
    Is there a comparable list for Repetier only?

  • In main.cpp you have a list of currently supported g-codes. Also I'm adding them to our dev documents especially the complex ones, but that is currently incomplete due to free time.

    The problem with G30 is that it depends if you already correct bed rotation or not. So it is fine to run G32 S2 and then do a G30 test as you did - if the bed planar. If bed rotation correction is off z is not adjusted so real Z depends on where you run your test.
Sign In or Register to comment.