Errors after upgrading to 3.5.0 Release Candidate 1
-
After upgrading to 3.5.0 I'm getting errors starting prints that I've never gotten before:
The homing errors don't make sense because the printer was already homed before starting the print. Running M18 and then starting the print has the same issue.
Also I get odd movement behavior, for instance, starting this print, with the printer homed, the head moves to X110 Y114.7 and then prompts the user with the M291.
Also after rebooting the system, or simply trying to start the print again, it will sometimes work.
Printer:
- Duet 6XD
- (4) 3HC
- (2) 1XD
- Raspberry Pi 4 8GB in SBC mode
- Lite version of the RPI image
config.g
; Configuration file for Duet 3 MB 6XD (firmware version 3.5.0 Release Candidate 1) ; executed by the firmware on start-up ; generated by RepRapFirmware Configuration Tool v3.3.15 on Fri Dec 09 2022 12:10:26 GMT-0600 (Central Standard Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"MyPrinter" ; set printer name ; Declare global variables if !exists(global.T1ActuationDist) global T1ActuationDist = 17 global T2ActuationDist = {global.T1ActuationDist} global T12FeedRt = 1000 global T1ZOffset = -6.34 ; used to be 7.55 global T2ZOffset = {global.T1ZOffset} + 0.11 global layerSpeed = 2400 global pulsarFanSpeed = 0 global mosqFanSpeed = 0 global vacZone1Pin = "1.out2" global vacZone2Pin = "2.out0" global vacZone3Pin = "2.out1" global vacZone4Pin = "2.out2" global pressureAdvanceT0 = 0 global pressureAdvanceT1 = 0.25 global pressureAdvanceT2 = 0.25 global probeCycles = 5 global probeSpeedFast = 300 global probeSpeedSlow = 50 else set global.T1ActuationDist = 17 set global.T2ActuationDist = {global.T1ActuationDist} set global.T12FeedRt = 1000 set global.T1ZOffset = -6.34 set global.T2ZOffset = {global.T1ZOffset} + 0.11 set global.layerSpeed = 2400 set global.pulsarFanSpeed = 0 set global.mosqFanSpeed = 0 set global.vacZone1Pin = "1.out2" set global.vacZone2Pin = "2.out0" set global.vacZone3Pin = "2.out1" set global.vacZone4Pin = "2.out2" set global.pressureAdvanceT0 = 0 set global.pressureAdvanceT1 = 0.25 set global.pressureAdvanceT2 = 0.25 set global.probeCycles = 5 set global.probeSpeedFast = 300 set global.probeSpeedSlow = 50 ; Wait a moment for the CAN expansion boards to start G4 S2 ; Drive Setup M18 ; disable steppers to disable old axes config ; Drive setup ; TX:X:X:X Min stp pls width, stp ple interval, dir setup time, dir hold time, in microseconds M569 P121.0 S1 R1 T1:2:1:1 ; physical drive X baldy recommends T1:1:0.5:0 but we were using T1:2:1:1 for everything, 0.75:1.5:0.025:1 might make y stall M569 P0.0 S1 R1 T1:2:1:1 ; physical drive Y1 M569 P0.1 S1 R1 T1:2:1:1 ; physical drive Y2 M569 P0.2 S0 R1 T1:2:1:1 ; physical drive Z1 M569 P0.3 S0 R1 T1:2:1:1 ; physical drive Z2 M569 P0.4 S0 R1 T1:2:1:1 ; physical drive Z3 M569 P0.5 S0 R1 T1:2:1:1 ; physical drive Z4 M569 P122.0 S1 R0 ; physical drive E0 Pulsar Extruder was 123.0 M569 P3.1 S1 R1 ; physical drive E1 Mosquito 1 extruder M569 P3.2 S1 R1 ; physical drive E2 Mosquito 2 extruder M569 P4.0 S1 R1 ; physical drive actuator 1 M569 P4.1 S1 R1 ; physical drive actuator 2 G4 S1 ; wait for drive to setup ; Drive mapping M584 X121.0 ; set drive mapping for x axis M584 Y0.0:0.1 ; set drive mapping for y axis M584 Z0.2:0.3:0.4:0.5 ; set drive mapping for z axes M584 E122.0:3.1:3.2 ; set drive mapping for extruder axes was 123.0 M584 U4.0 ; set drive mapping for mosquito actuator 1 M584 V4.1 ; set drive mapping for mosquito actuator 2 G4 S1 ; wait for drives to be mapped to letters ; Drive config M350 E16:16:16 U1 V1 ; configure microstepping with interpolation M92 X64 Y128 Z6400 E224.6:410:410 U200 V200 ; set steps per mm M566 X4000.00 Y2000.00 Z60.00 E7001:600:600 U600 V600 P1 ; set maximum instantaneous speed changes (mm/min) M203 X35000 Y76050 Z1500 E9000:1200:1200 U300 V300 ; set maximum speeds (mm/min), XYZ speeds based on cont. torque curve and RMS limit, currently at max values, e value set by Dyze, z used to be 3000 M201 X2000 Y2000 Z1000 E5000:3000:3000 U100 V100 ; set accelerations (mm/s^2) X300 Y300 looks best for mosquitos, Y8000 is RMS risk, not tested above 13000 but could cause coupler failure, e was 5000 M906 E:600:600 U500 V500 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Brakes M569.7 P0.2 C"out3" S100 ; driver 2 on board 6XD uses port out3 to control the brake M569.7 P0.3 C"out4" S100 ; driver 3 on board 6XD uses port out4 to control the brake M569.7 P0.4 C"out5" S100 ; driver 4 on board 6XD uses port out5 to control the brake M569.7 P0.5 C"out6" S100 ; driver 5 on board 6XD uses port out6 to control the brake ; Endstops M574 X1 S1 P"3.io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin 3.io0.in M574 Y1 S1 P"0.io1.in+io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in and io2.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z M574 U1 S1 P"3.!io3.in" ; configure actuator 1 endstop, high end, microswitch M574 V1 S1 P"3.!io5.in" ; configure actuator 2 endstop, high end, microswitch ; Hobby Servos M950 S0 C"3.io1.out" ; create servo 1 output on 3.io2 for mosquito acutator 1 M950 S1 C"3.io4.out" ; create servo 1 output on 3.io3 for mosquito acutator 2 ;Bed Leveling M671 X1205:1205:-285.1:-285.1 Y-207.2:1451.4:1451.4:-207.2 S1.5 P5 F1.0 ;Define Z screw X Y locations, max correction, pitch, fudge factor ; Axis Limits M208 X0 Y0 Z-10 U0 V0 W0 S1 ; set axis minima M208 X1184 Y1175 Z1200 U17 V17 W100 S0 ; set axis maxima true X max is 1204 so we are using 1184 for safety. true Y max is 1195 so we are using 1175 for safety ; Z-Probe ; servo pin defined in fan accessories section ; create servo pin for BLTouch M558 P8 C"!0.io8.in" H5 F{global.probeSpeedFast}:{global.probeSpeedSlow} T99999999 R0.5 A{global.probeCycles} S0.03 ; set Z probe type and the dive height + speeds R0.5 b/c probe needs time to deploy without triggering. G31 P1000 X-47.8 Y15.2 Z4.1 ; set Z probe trigger value, offset and trigger height for 1mm nozzle M557 X-37.8:1126.2 Y25.2:1180.2 P21:21 ; define mesh grid ; Heaters M308 S0 P"0.temp0" Y"PT1000" A"Bed A" ; configure bed A sensor 0 as thermistor on pin temp0 M308 S9 P"0.temp2" Y"PT1000" A"Bed B" ; configure bed B sensor 9 as thermistor on pin temp2 M950 H0 C"0.out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 R0.033 K0.020:0.000 D182.23 E1.35 S1.00 B0 ; disable bang-bang for bed and set pwm M140 P0 H0 S0 R0 ; bed heater 0 uses heater 0 M143 H0 S255 P0 T0 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S1 P"0.temp1" Y"PT1000" A"Chamber A" ; configure chamber A sensor 1 as thermistor on pin temp1 M308 S10 P"0.temp3" Y"PT1000" A"Chamber B" ; configure chamber B sensor 10 as thermistor on pin temp3 M950 H1 C"0.out1" T1 ; create chamber heater output on out1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang for chamber and set pwm M141 P0 H1 S0 R0 ; chamber heater 1 uses heater 1 M143 H1 S255 P0 T1 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S2 P"3.spi.cs0" Y"rtd-max31865" A"Pulsar Top" ; configure pulsar sensor top as PT100 on pin spi.cs0 M950 H2 C"3.out6" T2 ; create pulsar heater output on out3 and map it to sensor 2 M307 H2 A940 C810 D22 S1.0 B0 ; disable bang-bang for pulsar and set pwm M143 H2 S480 P0 T2 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S3 P"3.spi.cs1" Y"rtd-max31865" A"Pulsar Middle" ; configure pulsar sensor bottom as PT100 on pin spi.cs1 M950 H3 C"3.out7" T3 ; create pulsar heater output on out4 and map it to sensor 3 M307 H3 A940 C810 D22 S1.0 B0 ; disable bang-bang for pulsar and set pwm M143 H3 S480 P0 T3 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S4 P"4.spi.cs0" Y"rtd-max31865" A"Pulsar Nozzle" ; configure pulsar sensor nozzle as PT100 on pin spi.cs0 M950 H4 C"4.out8" T4 ; create pulsar heater output on out0 and map it to sensor 4 M307 H4 A795 C920 D10 S1.0 B0 ; disable bang-bang for pulsar and set pwm M143 H4 S480 P0 T4 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S5 P"3.temp1" Y"PT1000" A"Mosquito 1" ; configure mosquito sensor top as PT1000 on pin 3.temp0 - other thermistor is shorted M950 H5 C"3.out0+out1" T5 ; create pulsar heater output on out3 and map it to sensor 2 M307 H5 R2.262 K0.361:0.160 D7.99 E1.35 S1.00 B0 V24.1 ; disable bang-bang for pulsar and set pwm M143 H5 S505 P0 T5 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S6 P"4.temp0" Y"PT1000" A"Mosquito 2" ; configure mosquito sensor top as PT1000 on pin 3.temp0 M950 H6 C"4.out0+out1" T6 ; create pulsar heater output on out3 and map it to sensor 2 M307 H6 R2.364 K0.493:0.022 D7.12 E1.35 S1.00 B0 V24.1 ; disable bang-bang for pulsar and set pwm M143 H6 S505 P0 T6 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition ; Heater Faults M570 H0 P1000 T15 R10 M570 H1 P1000 T15 R10 M570 H2 P1000 T15 R10 M570 H3 P1000 T15 R10 M570 H4 P1000 T15 R10 ; Outputs M950 F0 C"0.out7" ; create chassis fan 0 on relay M106 P0 S255 H-1 C"Chassis Fan" ; set fan 0 value, thermostatic control off M950 F1 C"0.out8" ; create chamber fan 1 on relay M106 P1 S0 H1 T50 C"Chamber Fan" ; set fan 1 value, thermostatic control from sensor 1 M950 F2 C"0.out2" ; create pulsar pc fan 2 M106 P2 S0 H-1 C"Pulsar Fan" ; set fan 2 value, thermostatic control off M950 F3 C"1.out1" ; create mosquito pc fan 3 M106 P3 S0 H-1 C"Mosquito Fan" ; set fan 3 value, thermostatic control off M950 P0 C{global.vacZone1Pin} ; create bed vac valve 1 M42 P0 S0 ; set output value to off M950 P1 C{global.vacZone2Pin} ; create bed vac valve 2 M42 P1 S0 ; set output value to off M950 P2 C{global.vacZone3Pin} ; create bed vac valve 3 M42 P2 S0 ; set output value to off M950 P3 C{global.vacZone4Pin} ; create bed vac valve 4 M42 P3 S0 ; set output value to off M950 P4 C"2.out6" ; create door locks on relay M42 P4 S0 ; set output value to off M950 F4 C"2.out4" ; create radiator on relay M106 P4 S1 H2:3:4:5:6 T50 C"Radiator" ; set fan 8 value, thermostatic control on M950 P5 C"1.out4" ; create probe on relay M42 P5 S0 ; set output value to off M950 P6 C"2.out3" ; create venturi valve was 1.out0 M42 P6 S0 ; set output value to off M950 F5 C"4.out6" ; create head electronics fan M106 P5 S255 H-1 C"Head Fan 1" ; set fan 12 value, thermostatic control off M950 F6 C"4.out7" ; create head electronics fan M106 P6 S255 H-1 C"Head Fan 2" ; set fan 12 value, thermostatic control off M950 P7 C"1.out8" ; create yellow stack led M42 P7 S0 ; set output value to off M950 P8 C"1.out7" ; create green stack led M42 P8 S0 ; set output value to off M950 P9 C"1.out6" ; create white stack led M42 P9 S0 ; set output value to off M950 P10 C"1.out3" ; create beep stack led M42 P10 S0 ; set output value to off ; Trigger Inputs M950 J0 C"2.io0.in" ; assign input J0 to 2.io0.in for emergency stop M581 P0 T0 S0 R0 ; configur external trigger, pin 0, trigger 0, inactive-active, any time M950 J1 C"2.io1.in" ; assign input J1 to 1.io1.in for pause button M581 P1 T1 S0 R1 ; configure external trigger, pin 1, trigger 1, inactive-active, during print ; Other Inputs M950 J3 C"1.io0.in" ; create door lock 1 gpio input M950 J4 C"1.io1.in" ; create door lock 2 gpio input M950 J5 C"1.io2.in" ; create door lock 3 gpio input M950 J6 C"1.io3.in" ; create door lock 4 gpio input M950 J7 C"1.io4.in" ; create door lock 5 gpio input M950 J8 C"1.io5.in" ; create door lock 6 gpio input ; Tools M563 P0 S"Pulsar" D0 H2:3:4 F2 ; define tool 0 as pulsar, extruder 0, Heaters 2 3 4, Fan 2 M568 P0 R0 S0 ; set tool 0 active and standby temperatures to 0C G10 P0 X0 Y0 Z0 U0 V0 W0 ; set tool 0 axis offests M563 P1 S"Mosquito 1" D1 H5 F3 ; define tool 1 as Mosquito 1, extruder 1, Heaters 5, Fan 3 was H5:6 M568 P1 R0 S0 ; set tool 1 active and standby temperatures to 0C G10 P1 X-71.815 Y-10.976 Z{global.T1ZOffset} U0 V0 W0 ; set tool 1 axis offests M563 P2 S"Mosquito 2" D2 H6 F3 ; define tool 2 as Mosquito 2, extruder 1, Heaters 6, Fan 3 was H7:8 M568 P2 R0 S0 ; set tool 2 active and standby temperatures to 0C G10 P2 X-71.815 Y41.411 Z{global.T2ZOffset} U0 V0 W0 ; set tool 2 axis offests ; Custom settings are not defined ; Miscellaneous G4 S2 M98 P"0:/macros/Ventrui Enable" T0 ; switch to T0 when first booting up M98 P"0:/sys/startup.g"
condHomeAll.g
M98 P"0:/sys/uvHomeCond.g" ; homes tools first so Z never crashes into deployed heads M98 P"0:/sys/doorLock.g" ; make sure doors are locked if move.axes[0].homed = false && move.axes[1].homed = false M291 P"X & Y not homed. Homing X & Y..." S0 T2 G28 X Y elif move.axes[0].homed = false M291 P"X not homed. Homing X..." S0 T2 G28 X elif move.axes[1].homed = false M291 P"Y not homed. Homing Y..." S0 T2 G28 Y if move.axes[2].homed = false M291 P"Z not homed. Homing Z..." S0 T2 G28 Z if move.axes[2].homed = true && move.axes[2].machinePosition > 20 M291 P"Z too far. Repositioning Z..." S0 T2 G1 Z20 F200
uvHomeCond.g
if !move.axes[3].homed && !move.axes[4].homed ; Check if U and V are not homed echo "U and V axis are not homed, performing homing" M98 P"uvhome.g" elif !move.axes[3].homed ; Check if U is not homed echo "U axis is not homed, performing homing" G4 S0.1 ; wait G28 U elif !move.axes[4].homed ; Check if V is not homed echo "V axis is not homed, performing homing" G4 S0.1 ; wait G28 V
doorLock.g
; check if doors are closed if sensors.gpIn[3].value != 1 || sensors.gpIn[4].value != 1 M42 P10 S1 ; Beep M291 P"Left doors not closed. Close and press ok to continue." S3 T0 G4 S1 ; wait if sensors.gpIn[3].value != 1 || sensors.gpIn[4].value != 1 M291 P"Left doors not closed. Aborting." S3 T0 M42 P4 S0 ; unlock doors M42 P10 S0 ; Stop Beeping abort if sensors.gpIn[5].value != 1 || sensors.gpIn[6].value != 1 M42 P10 S1 ; Beep M291 P"Front doors not closed. Close and press ok to continue." S3 T0 G4 S1 ; wait if sensors.gpIn[5].value != 1 || sensors.gpIn[6].value != 1 M291 P"Front doors not closed. Aborting." S3 T0 M42 P4 S0 ; unlock doors M42 P10 S0 ; Stop Beeping abort if sensors.gpIn[7].value != 1 || sensors.gpIn[8].value != 1 M42 P10 S1 ; Beep M291 P"Right doors not closed. Close and press ok to continue." S3 T0 G4 S1 ; wait if sensors.gpIn[7].value != 1 || sensors.gpIn[8].value != 1 M291 P"Right doors not closed. Aborting." S3 T0 M42 P4 S0 ; unlock doors M42 P10 S0 ; Stop Beeping abort ; if you got this far in the program, the doors are closed, lock them if they need locked if state.gpOut[4].pwm != 1 M42 P10 S0 ; Stop Beeping M291 P"Locking doors..." S0 T1 M42 P4 S1 ; lock doors G4 S1 ; wait for doors to lock M291 P"Doors are locked." S0 T1
first section of gcode from Simplify3D with my custom startup script
G90 M83 M42 P7 S0 ; turn off yellow led M42 P8 S255 ; turn on green led M42 P9 S0 ; turn off white led M291 P"Clear print area and press ok to continue." S3 T0 M98 P"0:/sys/doorLock.g" ; Redundant b/c homed axes auto lock doors M568 P0 R220:220:220 S200:240:240 A2 ; Turn on Pulsar M568 P1 R0 S0 A2 ; Turn on Mosquito 1 M568 P2 R0 S0 A2 ; Turn on Mosquito 2 M140 S0 ; Turn on bed M141 S0 ; Turn on chamber M42 P6 S1 ; Redundant b/c venturi is auto enabled in config.g M98 P"0:/sys/condHomeAll.g" ; Conditional homing M572 D0 S0.15 ; pressure advance enable M572 D1:2 S0 G29 S1 ; Load mesh leveling and activate compensation M376 H2 ; Enable for first 2mm of layers M566 X2000 Y2000 Z7000 E700:1200:1200 ; these settings just apply to this nozzle and material M201 X2000 Y2000 Z9310 E5000:3000:3000 G1 Z20 F100 ; Move to safe waiting zone G1 X10 Y10 F10000 T0 ; select pulsar tool M116 S10 ; Wait until all temps within range G1 X0 Y0 Z2 F20000 ; go to purge location G1 X500 E600 F2500 ; purge G1 Y10 F999999 ; peel away ooze M106 P2 S0 ; process Process 1 ; layer 1, Z = 0.6000 ; pre tool change script T0 ; post tool change script ; feature skirt ; tool H0.6000 W1.600 G1 Z0.6000 F3000 G1 X110.013 Y114.712 F78000 G1 X111.156 Y113.630 E0.23684 F15000 G1 X112.381 Y112.596 E0.24134 G1 X113.639 Y111.650 E0.23685 G1 X114.948 Y110.777 E0.23677 G1 X116.304 Y109.978 E0.23678```
-
@p8blr Noticing that the printer is running the first G1 BEFORE the M291 as if it's not blocking. If the printer isn't homed, it complains that the axes aren't homed. However, this only seems to be the case with Upload & Start, if I run the print from the jobs queue, I do not get these errors. Interesting that it's also skipping the M116
Edit: I take that back, just got the same error as before running from the job queue.