Message "Error: Homing failed" even though homing worked



  • I'm getting the error message "Error: Homing failed" when issuing a "G28" command with no arguments. Despite the error message, the printer homes correctly.

    If I issue a "G28 X" or "G28 Y" or "G28 Z" command, the printer homes the corresponding axis and no error message is output.

    Pictures are not uploading correctly...
    ![0_1599405502148_g28_homing_failed.png](Uploading 100%)

    9/6/2020, 11:02:36 AM	G28
    Error: Homing failed
    9/6/2020, 11:01:57 AM	G28 Z
    9/6/2020, 11:01:46 AM	G28 Y
    9/6/2020, 11:01:39 AM	G28 X
    

    This is on a CoreXY machine, but I'm also seeing the same thing on my Ender3 cartesian.

    What am I doing wrong?

    M98 P"0:/macros/FIRMWARE_INFO_M115"
    FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6HC FIRMWARE_VERSION: 3.1.1 ELECTRONICS: Duet 3 MB6HC v1.01 or later FIRMWARE_DATE: 2020-05-19b2
    
    ; homeall.g
    ; called to home all axes
    
    G28 X
    G28 Y
    G28 Z
    
    ; homex.g
    ; called to home the X axis
    
    M400
    M913 X30 Y30
    M915 X Y S1 R2
    M400
    G92 X0
    G91
    G1 H2 Z2 F300
    G1 H1 X-500 F4800
    G1 X20 F2400
    G1 H2 Z-2 F300
    G90
    M400
    M913 X100 Y100
    M400
    
    ; offset by 1mm
    G0 X1 F6000
    G92 X0
    
    ; homey.g
    ; called to home the Y axis
    
    G90
    G0 X0 F4800
    M400
    M913 X30 Y30
    M915 X Y S1 R2
    M400
    G92 Y0
    G91
    G1 H2 Z2 F300
    G1 H1 Y500 F2400
    G1 Y-20 F2400
    G1 H2 Z-2 F300
    G90
    M400
    M913 X100 Y100
    M400
    
    ; offset by 1mm
    G0 Y1 F6000
    G92 Y0
    
    ; homez.g
    ; called to home the Z axis
    
    G91                ; relative position
    G1 Z10 H2 F600
    G90                ; absolute position
    G1 X0 Y-24 F6000   ; move to middle of bed plus probe offsets
    M401               ; deploy probe
    G30                ; home z0
    M402               ; retract probe
    G1 Z10 F600        ; Move z up a little
    
    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Wed Jul 29 2020 21:58:06 GMT-0400 (Eastern Daylight Time)
    
    ; General preferences
    G90                                          ; send absolute coordinates...
    M83                                          ; ...but relative extruder moves
    M550 P"TankXY"                               ; set printer name
    M669 K1                                      ; select CoreXY mode
    
    ; Network
    M552 P0.0.0.0 S1                             ; enable network and acquire dynamic address via DHCP
    M586 P0 S1                                   ; enable HTTP
    M586 P1 S0                                   ; disable FTP
    M586 P2 S0                                   ; disable Telnet
    
    ; Drives
    M569 P0.0 S1                                 ; physical drive 0.0 goes backwards
    M569 P0.1 S0                                 ; physical drive 0.1 goes backwards
    M569 P0.2 S0                                 ; physical drive 0.2 goes backwards
    M569 P0.3 S0                                 ; physical drive 0.3 goes backwards
    M569 P0.4 S0                                 ; physical drive 0.4 goes backwards
    M569 P0.5 S1                                 ; physical drive 0.5 goes forwards
    
    M584 X0.1 Y0.0 Z0.2:0.3:0.4 E0.5             ; set drive mapping
    M350 E16 Z16 I1                              ; configure microstepping without interpolation
    M350 X16 Y16 I1                              ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z1600.00 E420.00           ; set steps per mm
    ; M350 X256 Y256 Z256 I0
    M566 X900.00 Y900.00 Z12.00 E120.00          ; set maximum instantaneous speed changes (mm/min)
    ; max Z speed set to 300 to avoid resonance on lead screws
    M203 X6000.00 Y6000.00 Z300.00 E1200.00      ; set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z250.00 E250.00         ; set accelerations (mm/s^2)
    M906 X1000 Y1000 Z1000 E1000 I30             ; set motor currents (mA) and motor idle factor in per cent
    M84 S15                                      ; Set idle timeout
    
    ; Axis Limits
    ; X range = 214mm true range, limited to 212mm
    ; Y range = 218mm, limited to 216mm
    M208 X-106 Y-108 Z0 S1                       ; set axis minima
    M208 X106 Y108 Z220 S0                       ; set axis maxima
    
    ; Endstops
    M574 X1 S3                                   ; configure sensorless endstop for low end on X
    M574 Y2 S3                                   ; configure sensorless endstop for high end on Y
    
    ; BL-Touch probe
    M558 P9 C"io7.in" H5 F300 T6000              ; set Z probe type to bltouch and the dive height + speeds
    M950 S0 C"io7.out"                           ; create servo pin 0 for BLTouch
    ; to move print head closer to bed, increase Z value here
    G31 X0 Y24 Z2.88 P500                       ; offset from hot end nozzle
    
    ; set up grid probing points
    M557 X-75:75 Y-75:75 S37.5                   ; Define mesh grid
    
    ; Heaters
    ; S0 = bed thermistor
    M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
    ; H0 = bed heater
    M950 H0 C"out0" T0                           ; create bed heater output on out0 and map it to sensor 0
    M307 H0 B1 S1.00                             ; disable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                      ; map heated bed to heater 0
    M143 H0 S120                                 ; set temperature limit for heater 0 to 120C
    
    ; S1 = hot end thermistor
    M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1
    ; H1 = hot end heater
    M950 H1 C"out1" T1                           ; create nozzle heater output on out1 and map it to sensor 1
    M307 H1 B0 S1.00                             ; disable bang-bang mode for heater  and set PWM limit
    
    ; S2 = mcu temperature
    M308 S2 Y"mcu-temp" A"MCU"
    
    ; Fans
    ; F0 = out9 = part cooling fan
    ; F1 = out6 = hot end heat sink fan
    ; F2 = out4 = case fan
    ; F3 = out5 = case fans
    
    ; set part cooling fan on out9
    M950 F0 C"out9" Q25000
    M106 P0 S0.0
    
    ; set hot end fan on out6
    M950 F1 C"!out6" Q2000
    ; thermostatic control
    M106 P1 T40:90 H1 S1.0
    
    ; F2 and F3 = case fans on out4 and out5
    M950 F2 C"!out4" Q2000
    M950 F3 C"!out5" Q2000
    ; thermostatic control
    M106 P2 T50:80 H2 S1.0
    M106 P3 T50:80 H2 S1.0
    
    ; Tools
    M563 P0 S"Extruder" D0 H1 F0                 ; define tool 0
    G10 P0 X0 Y0 Z0                              ; set tool 0 axis offsets
    G10 P0 R0 S0                                 ; set initial tool 0 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    M501                                         ; load saved parameters from non-volatile memory
    T0                                           ; select first tool
    

    I see that other people have had similar issues, but the proposed solutions do not work for me. In some cases, it's unclear if the issue was really solved:

    https://forum.duet3d.com/topic/5538/homing-failed-error-even-though-it-succeeded
    Solution: use "G30" instead of "G30 S-1", presumably worked

    https://forum.duet3d.com/topic/15645/error-homing-failed-also-no-print-time-estimation-given
    Soluton: none posted apart from update firmware, maybe it worked, maybe not.

    https://forum.duet3d.com/topic/2970/error-homing-failed-on-any-g28-situation/11
    Solution: update firmware, but then another user claims it isn't fixed.

    Edit: corrected homeall.g script.



  • your home scripts are more complicated than they need to be

    i would suggest that you start off with the homing scripts that the configurator creates.

    i.e. you home z contian M401 and M402 which are not required on P9



  • I'm following the instructions here:
    https://duet3d.dozuki.com/Wiki/Connecting_a_Z_probe

    Which suggests the following for homez.g:

    ; homez.g
    ; called to home the Z axis
    
    G91                ; relative positioning
    G90                ; absoute position
    M401               ; deploy probe
    G1 X163 Y129 F1800 ; move to middle of bed plus probe offsets
    G30                ; home z0
    M402               ; retract probe
    

    Are you saying that is incorrect?

    I'll agree they are a bit complicated. Some of that is due to sensorless homing, some due to me wanting to offset coordinates by a few mm. I don't see how that would be causing the error.

    I commented out M401 and M402. It still works, but the result (error message) is the same.



  • you mean the examples for the Touch-Mi probe which is a different probe to the bltouch?



  • Typically in your homeall file, you call the macro using M98 P"homez.g" rather than using G28 X



  • @jay_s_uk said in Message "Error: Homing failed" even though homing worked:

    Typically in your homeall file, you call the macro using M98 P"homez.g" rather than using G28 X

    This fixed the issue. I appreciate the response.

    While searching, I came across this post as well:

    https://forum.duet3d.com/topic/10468/homeall-g-content-cleanup

    It seems using "G28" within homeall.g isn't really allowed (despite it working fine save the error message). I don't really agree with that implementation choice, but it is what it is. On to the next issue.


  • Moderator

    Technically if you leave homeall.g blank it will then just execute homex homey and homez macros. Same goes for if it only homes 1 or 2 axis in homeall it will then call the homing file of whatever axis is not yet homed.

    Calling G28 from within G28 can become recursive, so I guess it's not allowed.



  • @Phaedrux said in Message "Error: Homing failed" even though homing worked:

    Technically if you leave homeall.g blank it will then just execute homex homey and homez macros. Same goes for if it only homes 1 or 2 axis in homeall it will then call the homing file of whatever axis is not yet homed.

    This isn't the behavior I see. If I leave homeall.g blank, it does not execute any action and simply returns the error message "Error: Homing failed".


  • administrators

    @Phaedrux said in Message "Error: Homing failed" even though homing worked:

    Calling G28 from within G28 can become recursive, so I guess it's not allowed.

    That's correct. RRF uses a global variable to track which axes need to be homed, so G28 may not be used recursively.


  • Moderator

    @TDK said in Message "Error: Homing failed" even though homing worked:

    Same goes for if it only homes 1 or 2 axis in homeall it will then call the homing file of whatever axis is not yet homed.

    Well at least I'm sure this part is correct. I extrapolated to it homing all axis if the file was empty. I'll have to do some testing.



  • @Phaedrux said in Message "Error: Homing failed" even though homing worked:

    @TDK said in Message "Error: Homing failed" even though homing worked:

    Same goes for if it only homes 1 or 2 axis in homeall it will then call the homing file of whatever axis is not yet homed.

    Well at least I'm sure this part is correct. I extrapolated to it homing all axis if the file was empty. I'll have to do some testing.

    If I put only M98 P"homex.g" in the homeall.g file, then it does home the Y and Z axes after the X. So it seems you need to home at least something. And in this case, no error message is generated.

    I guess this scheme makes sense if you want to combine X and Y homing into one operation in homeall.g, but then don't want to duplicate the homez.g code.


Log in to reply