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 workedhttps://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_probeWhich 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.
-
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".
-
@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.
-
@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 thehomeall.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 thehomez.g
code.