All Z probe travels at Z height of 20mm

On Z probing, all travels are at at a height of 20mm even though the Z_PROBE_BED_DISTANCE is set to 5. I have tried a number of settings and also tried setting up for both Home to Z max and Home to Z  min. The Z movement between each probing operation of a group of 3 is good, but then it goes up to about 20mm before travelling to the next probing position.

This is particularly problematic at the moment as I am probing at only 0.5mm per second on a 6 by 6 grid and it is taking nearly 50 minutes to probe the bed.

The probing works well except for this. The only features of this printer which are different are that the maximum Z dimension is presently set up to only 26mm and the output pulse from the Z probe is only 188 microseconds.

I tried to attach my Configuration.H but for some reason your forum would not accept it.

#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_HEIGHT 0

Thanks for any help you can give.



  • I think (if i remember correct) it goes back to the height that probing was started at, try starting the probing at a lower Z 
  • I have tried that, along with many combinations of  Z_PROBE_BED_DISTANCE, Z_PROBE_HEIGHT and even (in case) Z_PROBE_OFFSET. On one of my other printers, a Delta, everything just works as it should, while a Cartesian printer which I have now given to a friend, probing always returned to its starting Z height. With this one it always goes to about 20mm. There is nothing in  Z_PROBE_START_SCRIPT or Z_PROBE_RUN_AFTER_EVERY_PROBE

  • I managed to attach the Configuration.H by renaming it to Configuration.txt

    Thanks for any help or clues where to look.

  • O.K., So the file seemed to be accepted but was not. I will try something different tomorrow.

  • I found a temporary work around. At the moment I am not trying to level the bed but simply get data from the Z probe conditioning circuit at the mesh points that will be used for actual bed leveling. I am now using a GCode file with a sequence like

    G0 X27 Y31 Z3
    G0 X27 Y44 Z3

    I will have to go on to genuine bed leveling in the next few days or so so would really appreciate having an answer or hint of where to look. My only alternative is to try Marlin, a firmware that I am not familiar with.


    p.s., the Configuration.txt shows below this as I type - and as it did last time.
  • Are you using 1.0.4dev?
    Not sure when it was added but Z_PROBE_BED_DISTANCE requires homing and at least for that version I know it would home first to ensure the correct start height. Of course with zmax homing the error for z height must be smaller then Z_PROBE_BED_DISTANCE.
  • I was on 0.92.9 but tried 1.0.4dev, downloading the complete software. There was no difference in behaviour other than that my pins.h did not seem to be compatible and I lost panelacces to the printer.

    One possible clue is that homing each axis individually they all home correctly, but selecting home all results in all of them homing then the Y axismoving forward by 3.8mm. I have investigated for hardware problems and have eliminated the usual suspects (shorts, bad contacts, pickup etc..)

    I will try again with 1.0.4dev and rebuild the Configuration.H with the firmware configurator tool and the pins.h from my notes instead of copying and pasting t from an earlier version

    If any of this seems familiar or you have any thoughts it may be a great help.


  • I would also clear the eeprom before uploading the new sw.
  • Thanks MartinH I will do that first thing tomorrow.

  • I assume that clear the EEPROM is M502, M500, is this correct. This does not seem to have changed anything.
    I looked through the Configuration.H line by line but couldn't find anything unexpected.
    Something that is new, or not noticed before, is that calling Home Z results in homing of X, Y and Z in that order.

    For speed, I will start with a new copy of the Repetier firmware, a new Arduino board and a new RAMPS board if I can find one. I will also reconfigure completely instead of using the existing Configuration.H and Pins.H

  • clear eeprom is a sketch you run in the arduino program, in the file menu, i allways do this befor i upload a new firmware to clear out any unwanted data in the eeprom.
    M502 M500 just reads all the settings from the config.h and then stores them in the eeprom

  • Still not good.

    I have now fitted a new Arduino board, a new RAMPS board, pre-cleared the EEPROM, configured and programmed software 1.0.4dev. Zeros are in the expected direction, now set to home to Zmax.

    The result is that travel moves are still at about 20mm although I can only get at that by using autolevel from the front panel. G30 and G32 no longer work, just failing silently with neither movement nor any report on Repetier Host.

  • When I fit the printer mechanism and can return to a reasonable Z movement I will come back to Repetier firmware. I can only guess that having Z movement restricted to 26mm is causing all Z travel to be about 20mm.

    Temporarily changing to Marlin has allowed me to plot a 6 X 6 matrix in a reasonable time. Since I need to do a large number of these with different speeds and on different bed surfaces it had become a very major headache.

  • can you upload your config.h to google drive and post a link.

  • I will have to make a clean copy (and try it out) as the existing one is a mess -having fallen to changing anything that I thought might work. AFK for the next few hours but as soon as I am back.

  • I have been trying it again but no change. Configuration.h is at


    Thanks for any assistance you can give,


  • Please describe exactly your commands you send and what is happening. I see no error in the configuration and assume eeprom is having same values. So maybe start conditions are wrong or you expect something different to happen.
  • After homing all from the Repetier Host, shown values are:-     X=0, Y=0, Z=26
    Note: Bed to the nozzle at Zmax is adjusted to 25mm ±0.1mm with glass plate of 1.9mm ±0.05mm on the bed so homed bed to nozzle is 23.1mm ±0.15mm

    On giving the G32 code from Repetier, starting from the home position, Z goes down by about 6mm to a position about 17mm above the bed and goes to the first position of the matrix. The nozzle then moves down until it touches the bed and up again to the position about 17mm above the bed, moves to the next probe position and continues the matrix. each Z is reported as about 17.19mm. This measurement is correct when measured with calipers.

    Changing the Z_PROBE_BED_DISTANCE from 5 to 10mm does not change this distance which remains about 17.19mm. Changing Z_PROBE_HEIGHT  changes only the displayed Z value in the bottom frame of Repetier Host - I believe this to be the expected result here.

    Changing the starting position from home to an arbitrary position X=150, Y=150, Z=2, results in the Z carriage moving to its home position (Zmax) but the X and Y axes do not home. The matrix again maps from a position with Z about 6mm down from Zmax and X and Y at the first matrix position.

    My expectation is that the height of the nozzle above the bed during travels would be Z_PROBE_BED_DISTANCE so 5mm where I am getting 17mm

    I have added the EEPROM file to the google file in the hopes that there may be something there

    Grateful thanks.


  • #define ZHOME_HEAT_HEIGHT 20

    is your problem. It uses maximum of bed distance zhome heat height. So in this case 20 is maximum. Actually that is the z position:
            RMath::max(EEPROM::zProbeBedDistance() + (EEPROM::zProbeHeight() > 0 ? EEPROM::zProbeHeight() : 0),
  • Thanks Repetier, that looks like it was the cause of the problems.
    Should I change that in Configuration.h and in the configuration string and will it copy true? I have not been able to find ZHOME_HEAT_HEIGHT on any page of the firmware configuration tool.

    Thanks again,


  • It only appears if you select a homing order with temperature that also allows defining z homing position. That is homing order you should use with z probe homing normally. Especially if the nozzle tip is the sensor any ooze will give wrong measurements so preheating nozzle is then required and that allows to set the data for it.
Sign In or Register to comment.