[3.6.0-beta.3] D3MB6HC+SBC - Freeze/Crash at the end of a print?
-
First 2 prints after updating; all goes well until the end where I find the head:
- Stopped on the print (didn't park)
- However with heater Off
- And weirdest of all, stuck retracting (wheel spinning endlessly)
- Machine stuck in "busy" state (needs powercycle to reset)
My slicer end script is just M0; see the last few lines of that example print:
;TYPE:WALL-INNER G1 F2925 X153.975 Y152.548 E0.84064 G1 F1500 E-0.3 G0 F7200 X106.719 Y152.548 G0 X106.313 Y152.548 G1 F1500 E0.49956 G1 F2836.4 X104.964 Y152.548 E0.10883 ;TIME_ELAPSED:1108.150049 G1 F1500 E-0.3 M82 ;absolute extrusion mode M107 M0 M83 ;relative extrusion mode M104 S0 ;End of Gcode
My stop.g looks as follow:
; /sys/stop.g ; Clean up and shut down after a print ; M0 in slicer to invoke M400 ; wait for moves to finish M104 S0 ; turn off temperature M140 S0 ; turn off heatbed M107 ; turn off fan G1 E-3 F300 ; retract 3 mm to reduce pressure in the nozzle G91 G1 X2 Y2 ; Wipe nozzle G90 ; Drop Z, being careful near the max if move.axes[2].machinePosition + 10 < move.axes[2].max G1 Z{ move.axes[2].machinePosition + 10 } else G1 Z{ move.axes[2].max } G0 X-30 Y100 F3000 ; move to purge bucket
Seems like the printer may freeze right at line 9 of my stop.g?
However and that's where I'm at a loss, the issue does not appear when aborting a print with pause/stop.
Any ideas on what could that be?
Here is a M122 (after restarting because unresponsive when the crash occurs)
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.6.0-beta.3 (2025-01-16 19:09:36) running on Duet 3 MB6HC v1.0 or earlier (SBC mode) Board ID: 08DJM-956L2-G43S4-6JTDA-3SS6L-1B76H Used output buffers: 1 of 40 (17 max) === RTOS === Static ram: 136892 Dynamic ram: 95960 of which 5464 recycled Never used RAM 105740, free system stack 200 words Tasks: SBC(2,ready,0.6%,747) HEAT(3,nWait 6,0.0%,369) Move(4,nWait 6,0.0%,333) TMC(4,nWait 6,2.8%,377) CanReceiv(6,nWait 1,0.0%,794) CanSender(5,nWait 7,0.0%,334) CanClock(7,delaying,0.0%,353) MAIN(2,running,94.5%,139) IDLE(0,ready,2.0%,29) USBD(3,blocked,0.0%,149), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:03:32 ago, cause: power up Last software reset at 2025-01-21 01:41, reason: User, Gcodes spinning, available RAM 105956, slot 2 Software reset code 0x2003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 MCU temperature: min 35.9, current 37.6, max 38.7 Supply voltage: min 29.4, current 29.5, max 29.5, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0 Heap OK, handles allocated/used 99/14, heap memory allocated/used/recyclable 2048/792/592, gc cycles 0 Events: 0 queued, 0 completed Date/time: 2025-02-02 00:51:54 Slowest loop: 193.96ms; fastest: 0.06ms USB interrupts 2 === Storage === Free file entries: 20 SD card 0 not detected, interface speed: 37.5MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === Segments created 0, maxWait 0ms, bed comp in use: none, height map offset 0.000, hiccups added 0/0 (0.00/0.00ms), max steps late 0, ebfmin 0.00, ebfmax 0.00 Pos req/act/dcf: 0.00/0/0.00 0.00/0/0.00 0.00/0/0.00 next step interrupt due in 68 ticks, disabled Driver 0: standstill, SG min n/a, mspos 2, reads 31387, writes 25 timeouts 0 Driver 1: standstill, SG min n/a, mspos 2, reads 31387, writes 25 timeouts 0 Driver 2: standstill, SG min n/a, mspos 8, reads 31388, writes 24 timeouts 0 Driver 3: standstill, SG min n/a, mspos 8, reads 31388, writes 24 timeouts 0 Driver 4: standstill, SG min n/a, mspos 8, reads 31389, writes 24 timeouts 0 Driver 5: standstill, SG min n/a, mspos 8, reads 31402, writes 11 timeouts 0 Phase step loop runtime (us): min=0, max=20, frequency (Hz): min=1889, max=2118 === DDARing 0 === Scheduled moves 0, completed 0, LaErrors 0, Underruns [0, 0, 0] Segments left 0, axes/extruders owned 0x80000003, drives owned 0x80000003 Code queue is empty === DDARing 1 === Scheduled moves 0, completed 0, LaErrors 0, Underruns [0, 0, 0] Segments left 0, axes/extruders owned 0x00000000, drives owned 0x00000000 Code queue is empty === Heat === Bed heaters 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1 -1 -1 -1 -1, ordering erHeater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is idle in state(s) 0 Queue2 is idle in state(s) 0 === CAN === Messages queued 1730, received 3816, lost 0, ignored 0, errs 607, boc 0 Longest wait 2ms for reply type 6031, peak Tx sync delay 31346, free buffers 50 (min 49), ts 1007/1006/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === Transfer state: 5, failed transfers: 0, checksum errors: 1 RX/TX seq numbers: 6457/6457 SPI underruns 0, overruns 0 State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x27c70 Buffer RX/TX: 0/0-0, open files: 0 === Duet Control Server === Duet Control Server version 3.6.0-beta.3 (2025-01-17 10:25:30, 64-bit) HTTP+Executed: > Executing M122 Trigger+Post: > Executing M409 K"network" I1 (31 more codes pending) >> Macro config.g: Idle Trigger: >> Finishing macro config.g, started by system Code buffer space: 4096 Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0 Full transfers per second: 25.28, max time between full transfers: 1660.9ms, max pin wait times: 328.1ms/7.1ms Codes per second: 0.32 Maximum length of RX/TX data transfers: 4508/872
And my Config.g
; ; ___________ __ .__ ; \_ _____/___________ _____/ |______ | | ; | __) \_ __ \__ \ _/ ___\ __\__ \ | | ; | \ | | \// __ \\ \___| | / __ \| |__ ; \___ / |__| (____ /\___ >__| (____ /____/ ; \/ \/ \/ \/ ; ___________ .__ .__ ; \_ _____/ ____ ____ |__| ____ ____ ___________|__| ____ ____ ; | __)_ / \ / ___\| |/ \_/ __ \_/ __ \_ __ \ |/ \ / ___\ ; | \ | \/ /_/ > | | \ ___/\ ___/| | \/ | | \/ /_/ > ; /_______ /___| /\___ /|__|___| /\___ >\___ >__| |__|___| /\___ / ; \/ \//_____/ \/ \/ \/ \//_____/ ; General Setup - RailCore RRF on an SBC for Duet3 ; General G21 ; Work in millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves M564 S1 H1 ; No movement before homing, no out-of-range G4 S2 ; wait for expansion boards to start ; Debugging M111 S0 ; Debug (S0 is off; S1 is on) M929 P"eventlog.txt" S1 ; start logging to file eventlog.txt M915 X Y S10 F0 R0 ; log motor stalls ; Stepper Configuration and Trinamic Drive Tuning M569 P0.0 S1 D3 V5 H5 ; X / Rear - LDO-57STH56-2804MACRC M569 P0.1 S0 D3 V5 H5 ; Y / Front - LDO-57STH56-2804MACRC M569 P0.2 S1 D3 V5 H5 ; Z / FL - LDO-42STH47-1684MAC M569 P0.3 S1 D3 V5 H5 ; Z / RL - LDO-42STH47-1684MAC M569 P0.4 S1 D3 V5 H5 ; Z / MR - LDO-42STH47-1684MAC ;M569 P5 S0 D2 V5 H5 ; E / Extruder - LDO-42STH25-1004AC ;M569 P5 S1 D2 V5 H5 ; E / Extruder - Biqu H2 ;M569 P5 S0 D2 V5 H5 ; E / Extruder - Orbiter 2.0 M569 P124.0 S1 D2 ; E / Extruder - SmorbV3 Toolboard ; Axis configuration M669 K1 ; Corexy mode ;M584 X0 Y1 Z2:3:4 E5 ; Map X to drive 0 Y to drive 1, Z to drives 2, 3, 4, and E to drive 5 M584 X0.0 Y0.1 Z0.2:0.3:0.4 E124.0 ; Map X to drive 0 Y to drive 1, Z to drives 2, 3, 4, and E to toolboard drive 0 M208 X270 Y290 Z325 ; Set axis maxima and high homing switch positions (adjust to suit your machine) M208 X-35 Y0 Z0 S1 ; Set axis minima and low homing switch positions (adjust to make X=0 and Y=0 the edges of the bed) ; Stealthchop parameters M915 P0:1 S3 F1 H153 ;T20000 R0 M915 P2:3:4 S3 F1 H1652 ;T1 R0 ;M915 P5 S3 F1 H540 T1 R0 ;M915 P124.0 S3 F1 H540 T1 R0 ; Steps/mm (for the default 1/16 microstepping) M92 X160 Y160 Z1600 ; Axis Steps/mm ;M92 E4206 ; FLEX3DRive ;M92 E932 ; Biqu H2 M92 E676 ; Orbiter 2.0 ; Microstepping (independent of M92 above) M350 X64 Y64 Z16 I1 ; Set 32x microstepping for axes with interpolation ;M350 E8 I0 ; Set 16x microstepping for Flex3Drive extruder interpolation OFF ;M350 E16 I1 ; Biqu H2 M350 E16 I1 ; Orbiter 2.0 ; Motor current M906 X{2800 * 0.65} Y{2800 * 0.65} Z{1680 * 0.65} I30 ; Set PEAK motor currents (mA) and motor idle factor ;M906 E420 I30 ; Flex3Drive ;M906 E800 I30 ; Biqu H2 ;M906 E1000 I10 ; Orbiter 2.0 (rated 1 amp, recommended 1.2) M906 E850 I10 ; Smorb3.0 (rated 1 amp, recommended 1.2) M84 S30 ; Idle timeout 30s ; Speeds M203 X15000 Y15000 Z600 E7200 ; Maximum speeds (mm/min) // XY15000(250mm/s), Z600(10mm/s)), E7200 (120mm/s) ; Accelerations and Jerk M201 X2500 Y2500 Z100 ; Accelerations (mm/s^2) ;M201 E120 ; Flex3Drive ;M201 E5000 ; Biqu H2 ;M201 E3000 ; Orbiter 2.0 M201 E3000 ; Smorb 8000mm/s recommended M566 X800 Y800 Z100 ; Maximum jerk speeds (mm/min) ;M566 E6 ; Flex3Drive ;M566 E300 ; Biqu H2 ;M566 E300 ; Orbiter 2.0 M566 E300 ; Smorb ; Leadscrew locations M671 X-10:-10:333 Y22.5:277.5:150 S7.5 ; End Stops M574 X1 S1 P"io0.in" ; Map the X endstop to io1.in ;M574 Y1 S1 P"io3.in" ; Map the Y endstop to io2.in M574 Y1 S1 P"124.io2.in" ; Map the Y endstop to toolboard io1.in ; BLTouch ;M558 P9 C"io7.in" H5 R1 F120 T6000 A5 S0.02 B1 ; Define the bltouch input on io7.in ;M950 S0 C"io7.out" ; Define the bltouch servo on io7.out ;G31 X0 Y25 Z2.00 P25 ; Set the offsets for the bltouch Flex3Drive ;G31 X-25 Y0 Z1.814 P25 ; Set the offsets for the bltouch Biqu H2 ;G31 K0 P25 X0.0 Y20.0 Z2.924 ; Set the offsets for the bltouch Orbiter 2.0 ; Euclid Probe M574 Z1 S2 ; configure Z-probe endstop for low end on Z M558 K0 P8 C"124.io0.in" H8 F300 T9000 A3 S0.01 ; Define Euclid input G31 K0 P500 X25.0 Y0.0 Z1.486 ; Set offset for Smorb V3 Euclid ; Thermistors M308 S0 P"temp0" Y"thermistor" A"Keenovo" T100000 B4240 H0 L0 ; Bed thermistor - connected to temp0 ;M308 S1 P"temp1" Y"thermistor" A"Mosquito" T4606017 B5848 C5.548428e-8 H0 L0 ; Dyze 500c thermistor - connected to e0_heat ;M308 S1 P"temp1" Y"thermistor" A"BiquH2" T100000 B3950 C0 H0 L0 ; Biqu H2 Chinesium HT-NTC100K thermistor - connected to e0_heat ;M308 S1 P"124.temp0" Y"thermistor" A"Smorb" T100000 B4138 C0 H0 L0 ; Smorb ATC Semitec 104NT-4-R025H42G M308 S1 P"124.temp0" Y"thermistor" A"Smorb" T100000 B4681 C6.483003e-8 H0 L0 ; Smorb ATC Semitec 104NT-4-R025H42G ; M308 S3 P"124.io1.in" Y"thermistor" A"Extruder Temp" T100000 B4092 ; Smorb extruder temp (not supported) ; Define Heaters M950 H0 C"out0" T0 ; Bed heater is on out0 ;M950 H1 C"out1" T1 Q10 ; Hotend heater is on out1 M950 H1 C"124.out0" T1 Q250 ; Hotend heater is on toolboard out0 ; Heater model parameters M307 H0 A158.5 C366.7 D2.1 S1.0 V24.0 B0 ; Keenovo duet 3 configuration ;M307 H1 R3.573 C131.3:99.7 D5.74 S1.00 V29.4 ; Mosquito 205deg 29.4V ;M307 H1 R3.368 K0.543:0.000 D7.05 E1.35 S1.00 B0 V29.3 ; Mosquito new model 215c 29.3V ;M307 H1 R4.724 C172.5:109.0 D7.70 S1.00 V29.4 ; Biqu H2 205deg 29.4V M307 H1 R4.017 K0.408:0.270 D6.28 E1.35 S1.00 B0 V29.4 ; Smorb temp 215c 29.3V ; Heater Fault Parameters M570 H1 P10 T15 S180 ; Hotend allows 10sec for anomaly, permits 15deg excursion, abandons print after 180s M143 H1 P1 S350 A0 ; raise a heater fault if it exceeds 350C ; Define Bed M140 H0 M557 X30:295 Y5:285 P15:15 ; Sets mesh leveling probing area /!\ Accounts for probe offset ; Fans ;M950 F0 C"out5" Q250 ; Hotend fan on "out5" connector ;M106 P0 C"Hotend Fan" H1 X0.8 T75 B0.3 ; Enable thermostatic mode for hotend fan - 0.8 to compensate for 29.4V ;M950 F1 C"out4" Q250 ; Layer fan on "out4" connector ;M106 P1 C"Layer Fan" X0.8 S0 ; Layer Fan M950 F0 C"124.out1" Q500 ; Hotend fan on "out5" connector M106 P0 C"Hotend Fan" H1 T75 X0.8 ; Enable thermostatic mode for hotend fan - 0.8 to compensate for 29.4V M950 F1 C"124.out2" Q500 ; Layer fan on "out4" connector M106 P1 C"Layer Fan" H-1 S0 X0.8 ; Layer Fan ; Tool definitions M563 P0 S"Smorb v3" D0 H1 F1 ; Define tool 0 G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures ; Duet3 Cooling M308 S2 Y"drivers" A"DRIVERS" ; Configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet M308 S3 Y"mcu-temp" A"MCU" ; Configure sensor 3 as thermistor on pin e1temp for left stepper M950 F2 C"out6" Q250 ; Create fan 2 on pin fan2 and set its frequency ;M106 P2 C"ElectroBox" H1 S0.8 T75 ; Set fan 2 value M106 P2 C"ElectroBox" H1 X0.7 T-30:50 ; Set fan 2 value M308 S4 P"124.temp1" Y"thermistor" A"Chamber Temp" T100000 B4092 ; Toolboard temp ; LED M950 F3 C"out8" Q1000 M106 P3 C"Enclosure Light" X0.6 S0 M950 C"124.rgbled" E0 T1 M950 F5 C"124.io0.out" Q1000 M106 P5 C"Hotend Light" X0.6 S0 ; Filament Sensor ;M591 D0 P7 C"io6.in" S0 E51 L2.1 R85:115 ; Fractal Encoder filament sensor ; Mesh Bed Compensation ;G29 S1 ; Load height map from SD card - Disabled in config.g, moved after startup routing probing M376 H3 ; Set taper height 3mm ; External Triggers M950 J1 C"io1.in" ; Green Button on io1 M950 J2 C"io4.in" ; Red Button on io4 M950 J3 C"io2.in" ; Black Button on io2 M950 J4 C"io5.in" ; Blue Button on io5 M581 T2 P1 S1 R2 ; Green button trigger 2 only when not printing (Load filament) M581 T3 P1 S1 R1 ; Green button trigger 3 only when printing (Raise Z) M581 T4 P2 S1 R2 ; Red button trigger 4 only when not printing (Unload filament) M581 T5 P2 S1 R1 ; Red button trigger 5 only when printing (Stop) M581 T6 P3 S1 R2 ; Black button trigger 6 only when not printing (Resume) M581 T7 P3 S1 R1 ; Black button trigger 7 only when printing (Lower Z) M581 T8 P4 S1 R2 ; Blue button trigger 8 only when not printing (LED strip on/off) M581 T9 P4 S1 R1 ; Blue button trigger 9 only when printing (LED strip on/off) ; Accelerometer ;M955 P0 I21 C"spi.cs3+spi.cs2" ; LIS3DH removable on Orbiter 2 M955 P124.0 I20 ; Onboard toolboard ;M593 P"mzv" F42 ; Dynamic Acceleration Adjustment (DAA) ;M593 F52 ; Logging M929 P"eventlog.txt" S1 ; start logging to file eventlog.txt T0 ; Select first hot end ; Global Variables global hotend_timer_started = false global hotend_timer = 0
-
@fractalengineer I'd be checking to make sure that you are still in relative extrusion mode when running your stop.g file (might be worth adding M83 in there to be sure). It sounds a lot like you are in absolute mode and that G1 E-3 will be retracting all of the previous extrudes to get back to -3.
-
@gloomyandy is right. You switch to absolute extrusion just before you call M0, which calls stop.g with absolute extrusion enabled:
@fractalengineer said in [3.6.0-beta.3] D3MB6HC+SBC - Freeze/Crash at the end of a print?:
M82 ;absolute extrusion mode
M107
M0
M83 ;relative extrusion mode -
@fractalengineer this is a common problem when the GCode file is sliced in absolute mode, or when using Cura slicer. Putting M83 at the start of stop.g will almost certainly fix it.
In general, in any automatically-executed macro file you should not assume that the extruder is in relative mode already, so you should always set it to relative mode before the extrusion command. When the macro completes, the original mode will be restored.
-
Well how uncanny is that, that was totally it; adding M82 at the start of my stop.g fixed it
Lol so the printer wasn't frozen it was just trying to get back to absolute extruder position -3mm
Thank you very much; very odd that Cura adds that M82 before the end of the print I don't recall it ever doing that or being an issue before
Cheers!
-
-