3.6.b3 mainboards as expansion boards disconnect during printing
-
@aetherialdesign You need to connect to the expansion 6HC directly using a USB terminal (or via the network interface if you have that set up) and then run M122 directly on the expansion board. That will return a lot more information about any possible shutdown.
-
@jay_s_uk
I pulled this via laptop connected to the 2nd 6HC over USB in Repetier. I had it connected during initial moves but it was causing the machine to move hyper stuttery so I disconnected and reconnected after the error occurred then pulled the M122.17:11:26.785 : === Diagnostics === 17:11:26.785 : RepRapFirmware for Duet 3 MB6HC version 3.6.0-beta.3 (2025-01-16 19:09:36) running on Duet 3 MB6HC v1.01 (expansion mode) 17:11:26.785 : Board ID: 08DJM-9P63L-DJMSS-6J1F6-3SN6T-KUHHB 17:11:26.785 : Used output buffers: 1 of 40 (2 max) 17:11:26.785 : === RTOS === 17:11:26.785 : Static ram: 136892 17:11:26.785 : Dynamic ram: 124960 of which 0 recycled 17:11:26.785 : Never used RAM 76660, free system stack 184 words 17:11:26.785 : Tasks: NETWORK(1,ready,10.6%,545) HEAT(3,nWait 6,0.0%,355) Move(4,nWait 6,0.0%,333) TMC(4,nWait 6,2.9%,377) CanReceiv(6,nWait 1,0.1%,682) CanSender(5,nWait 7,0.0%,334) CanClock(7,invalid,0.0%,351) MAIN(1,running,85.9%,440) IDLE(0,ready,0.5%,29) USBD(3,blocked,0.0%,137), total 100.0% 17:11:26.785 : Owned mutexes: USB(MAIN) 17:11:26.785 : === Platform === 17:11:26.785 : Last reset 00:00:19 ago, cause: software 17:11:26.785 : Last software reset at 2025-01-31 22:10, reason: HeatTaskStuck, Gcodes spinning, available RAM 84820, slot 2 17:11:26.785 : Software reset code 0x0143 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0040080f BFAR 0x00000000 SP 0x2041d500 Task Move Freestk 1044 ok 17:11:26.785 : Stack: 00000000 2041ce5c 10000000 e000e000 2041d610 0049c135 0049c92c 61030000 20421268 0000002c 2041d5f0 204329b8 a5a5a5a5 204329b0 004551d1 0045825f a5a5a5a5 20432a38 a5a5a5a5 a5a5a5a5 a5a5a5a5 3e9ffad4 41c17ae3 41c27bff 3dd366e1 41419774 41422094 17:11:26.785 : Error status: 0x00 17:11:26.785 : MCU temperature: min 40.3, current 42.8, max 42.9 17:11:26.785 : Supply voltage: min 24.2, current 24.2, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes 17:11:26.785 : 12V rail voltage: min 12.1, current 12.1, max 12.2, under voltage events: 0 17:11:26.785 : Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 17:11:26.785 : Events: 0 queued, 0 completed 17:11:26.785 : Date/time: 2025-01-31 22:11:18 17:11:26.785 : Slowest loop: 1.04ms; fastest: 0.07ms 17:11:26.785 : USB interrupts 234 17:11:26.785 : === Storage === 17:11:26.785 : Free file entries: 20 17:11:26.785 : SD card 0 detected, interface speed: 25.0MBytes/sec 17:11:26.785 : SD card longest read time 1.6ms, write time 0.0ms, max retries 0 17:11:26.785 : === Move === 17:11:26.785 : Segments created 350, 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 17:11:26.785 : Pos req/act/dcf: 16732.80/0/0.00 0.00/0/0.00 0.00/0/0.00 0.00/0/0.00 0.00/0/0.00 0.00/0/0.00 17:11:26.785 : Peak sync jitter -1/1, peak Rx sync delay 175, resyncs 0/0, next step interrupt due in 262 ticks, disabled 17:11:26.785 : Driver 0: standstill, SG min n/a, mspos 840, reads 39232, writes 14 timeouts 0 17:11:26.785 : Driver 1: standstill, SG min n/a, mspos 8, reads 39235, writes 11 timeouts 0 17:11:26.785 : Driver 2: standstill, SG min n/a, mspos 296, reads 39235, writes 11 timeouts 0 17:11:26.785 : Driver 3: standstill, SG min n/a, mspos 296, reads 39235, writes 11 timeouts 0 17:11:26.785 : Driver 4: standstill, SG min n/a, mspos 296, reads 39235, writes 11 timeouts 0 17:11:26.785 : Driver 5: standstill, SG min n/a, mspos 8, reads 39235, writes 11 timeouts 0 17:11:26.785 : Phase step loop runtime (us): min=0, max=5, frequency (Hz): min=0, max=2212 17:11:26.785 : === DDARing 0 === 17:11:26.785 : Scheduled moves 190, completed 190, LaErrors 0, Underruns [0, 0, 0] 17:11:26.785 : Segments left 0, axes/extruders owned 0x00000000, drives owned 0x00000000 17:11:26.785 : Code queue is empty 17:11:26.785 : === DDARing 1 === 17:11:26.785 : Scheduled moves 0, completed 0, LaErrors 0, Underruns [0, 0, 0] 17:11:26.785 : Segments left 0, axes/extruders owned 0x00000000, drives owned 0x00000000 17:11:26.785 : Code queue is empty 17:11:26.785 : === Heat === 17:11:26.785 : Bed heaters -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1 -1 -1 -1 -1, ordering e=== GCodes === 17:11:26.785 : Movement locks held by null, null 17:11:26.785 : HTTP is idle in state(s) 0 17:11:26.785 : Telnet is idle in state(s) 0 17:11:26.785 : File is idle in state(s) 0 17:11:26.785 : USB is ready with "M122" in state(s) 0 17:11:26.785 : Aux is idle in state(s) 0 17:11:26.785 : Trigger is idle in state(s) 0 17:11:26.785 : Queue is idle in state(s) 0 17:11:26.785 : LCD is idle in state(s) 0 17:11:26.785 : SBC is idle in state(s) 0 17:11:26.785 : Daemon is idle in state(s) 0 17:11:26.785 : Aux2 is idle in state(s) 0 17:11:26.785 : Autopause is idle in state(s) 0 17:11:26.785 : File2 is idle in state(s) 0 17:11:26.785 : Queue2 is idle in state(s) 0 17:11:26.785 : === CAN === 17:11:26.785 : Messages queued 158, received 462, lost 0, ignored 19, errs 0, boc 0 17:11:26.785 : Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 1/0/0 17:11:26.785 : Tx timeouts 0,0,0,0,0,0 17:11:26.785 : === Network === 17:11:26.785 : Slowest loop: 0.22ms; fastest: 0.00ms 17:11:26.785 : Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0) 17:11:26.785 : HTTP sessions: 0 of 8 17:11:26.785 : = Ethernet = 17:11:26.785 : Interface state: disabled 17:11:26.785 : Error counts: 0 0 0 0 0 0 17:11:26.785 : Socket states: 0 0 0 0 0 0 0 0 0 17:11:26.785 : === Multicast handler === 17:11:26.785 : Responder is inactive, messages received 0, responses 0
-
I additionally reran T0 PID tuning after this with CPAP to ensure things are stable on the heaters -> same results even with stable temps. Main difference noticed is the error appears twice now since I left it to run for a couple minutes instead of stopping it.
-
@aetherialdesign HeatTaskStuck sounds unusual, maybe @dc42 can help out
-
@aetherialdesign I'm attempting to recreate this error. Please post your config.g, and a Gcode example that provokes this behaviour.
As it appears that the 6HC is resetting due to a heating error, what happens if the Gcode contains no heater commands? Do you get a similar error if you send the heater Gcode commands manually?
This is similar behavior to 3.5.4 except in 3.5.4 ANY extruder motor on the expansion mainboard will not respond AT ALL regardless of machine status.
This is expected, see https://github.com/Duet3D/RepRapFirmware/issues/1058
Do you still get the 6HC-as-expansion reset and reconnection when turning on a heater?Ian
-
@aetherialdesign I haven't been able to provoke the same error on my test setup, which is a Mini 5+ with 6HC-as-expansion and 1LC, running RRF 3.6.0-beta.3+3. I set up a heater, thermistor and extruder drive as a tool on the 6HC, and ran a test job
@dc42 suggests that "Heat task stuck is usually caused by another task or ISR hogging the cpu so it doesn't depend on having a heater active."
Please post your config.g (and any files config.g calls) and sample macro or gcode file that triggers this error. If you use daemon.g, please post that.
Ian
-
Test #1
During my troubleshooting, I did strip the print file to not include any startup sequences with Arc Fitting disabled
- home via DWC
- Set T0 and Bed temps via DWC
- Wait for stable temps
- Select print job that has been stripped down
- Error still reproduces
Gcode for above test:
stripped test.gcode
It drops the 2nd 6HC during the first few lines while printing the skirtTest #2
So followup test now with stripped gcode and no skirt. Arc Fitting is also disabled
- home via DWC
- Set T0 and Bed temps via DWC
- Wait for stable temps
- Select print job that has been stripped down
- Error does not reproduce
Gcode for this 2nd test:
stripped test no skirt.gcodeTest #3
Third test I tried running file with heater commands and homing routine built into it but no skirt -> reproduces the original error results.
skirtless test full.gcodeConfiguration:
Here is the config.g -> things are currently somewhat barebones as we try to get this thing fully commissioned. It is IDEX if that matters. x4 Y motors and then XU on the main 6HC with x2 E and x3 Z on the 2nd 6HC.
SZP is connected as well through a tool distro. So CAN loop goes Main 6HC out to Distro board -> SZP as stub on distro -> distro CAN OUT to 2nd 6HC which acts as the termination point.
Firmware is currently 3.6.0-beta.3
; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC ; generated by RepRapFirmware Configuration Tool v3.5.10 on Wed Jan 22 2025 20:16:14 GMT-0500 (Eastern Standard Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"Servobelt" ; set hostname ; Network ;M551 P"___" ; set UI password ; Wait a moment for the CAN expansion boards to become available G4 S2 ; Accelerometers ;M955 P0 C"spi.cs0+io8.in" I20 ; configure accelerometer on board #0 ; Smart Drivers M569 P0.0 S1 D2 ; driver 0.0 goes forwards (X axis) M569 P0.1 S1 D2 ; driver 0.1 goes forwards (U axis) M569 P0.2 S0 D2 ; driver 0.2 goes forwards (Y axis) M569 P0.3 S0 D2 ; driver 0.3 goes forwards (Y axis) M569 P0.4 S1 D2 ; driver 0.4 goes backwards (Y axis) M569 P0.5 S1 D2 ; driver 0.5 goes backwards (Y axis) M569 P1.0 S0 D2 ; driver 1.0 goes forwards (extruder 0) M569 P1.1 S0 D2 ; driver 1.1 goes forwards (extruder 1) M569 P1.2 S0 D2 ; driver 1.2 goes forwards (Z axis) M569 P1.3 S0 D2 ; driver 1.3 goes forwards (Z axis) M569 P1.4 S0 D2 ; driver 1.4 goes forwards (Z axis) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S600 ; set motor current idle timeout ;M84 E0:1 ; Disable specific motors ; Axes M584 X0.0 Y0.2:0.3:0.4:0.5 Z1.2:1.3:1.4 U0.1 ; set axis mapping M350 X16 Y16 Z8 U16 I0 ; configure microstepping without interpolation M906 X1100 Y2500 Z1400 U1100 ; set axis driver currents M92 X80 Y80 Z800 U80 ; configure steps per mm M208 X-175:250 Y-185:200 Z0:370 U-250:175 ; set minimum and maximum axis limits M671 X-167.5:0:167.50 Y-200:242:-200 S5; Z pivot points are at (-167.5,-199.5), (0,241.645) and (167.5,-199.5) max correction is 5mm M566 X900 Y900 Z12 U900 ; set maximum instantaneous speed changes (mm/min) M203 X30000 Y30000 Z600 U30000 ; set maximum speeds (mm/min) M201 X10000 Y15000 Z1000 U10000 ; set accelerations (mm/s^2) ; Extruders M584 E1.0:1.1 ; set extruder mapping M350 E16:16 I0 ; configure microstepping without interpolation M906 E700:700 ; set extruder driver currents M92 E727.27:727.27 ; configure steps per mm M566 E120:120 ; set maximum instantaneous speed changes (mm/min) M203 E3600:3600 ; set maximum speeds (mm/min) M201 E250:250 ; set accelerations (mm/s^2) ; Kinematics M669 K0 ; configure Cartesian kinematics ; Probes M558 K0 P11 C"120.i2c.ldc1612" H10 F300 T12000 ; configure scanning probe via slot #0 M558.1 K0 S1 A-3.277e-4 B-1.915e-9 C2.250e-15 M558.2 S14 R143209 M308 A"SZP coil" S10 Y"thermistor" P"120.temp0" ; thermistor on coil G31 P290 X0 Y59 Z5.0 ; set Z probe trigger value, offset and trigger height ;M955 P120.0 I25 ; Add accelerometer on SZP with CAN address 120 and specify orientation ; Endstops M574 X2 P"io1.in" S1 ; configure X axis endstop M574 Y2 S4 ; configure Y axis endstop M915 Y S3 ; Set the sensitivity on Y sensorless homing to 3 M574 Z1 S2 K0 ; configure Z axis endstop M574 U1 P"io4.in" S1 ; configure U axis endstop ; Mesh Bed Compensation and Z tilt M557 X-120:120 Y-120:120 S40:40 ; define grid for mesh bed compensation ; Sensors M308 S0 P"temp3" Y"thermistor" A"Heated Bed" T100000 B4388 C7.06e-8 ; configure sensor #0 M308 S1 P"temp1" Y"pt1000" A"Nozzle T0" ; configure sensor #1 M308 S2 P"temp2" Y"pt1000" A"Nozzle T1" ; configure sensor #2 ;M308 S3 P"1.temp0" Y"thermistor" A"Chamber" T100000 B4725 C7.06e-8 ; configure sensor #3 ; Heaters M950 H0 C"out3" T0 ; create heater #0 this is the bed M143 H0 P0 T0 C0 S140 A0 ; configure heater monitor #0 for heater #0 M307 H0 R0.659 K0.479:0.000 D2.15 E1.35 S1.00 B0 ; configure model of heater #0 M950 H1 C"out1" T1 ; create heater #1 this is T0/Right tool M143 H1 P0 T1 C0 S350 A0 ; configure heater monitor #0 for heater #1 ;M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #1 M307 H1 R3.246 K0.520:0.520 D2.49 E1.35 S1.00 B0 V24.1 M950 H2 C"out2" T2 ; create heater #2 this is T1/Left Tool M143 H2 P0 T1 C0 S350 A0 ; configure heater monitor #0 for heater #2 M307 H2 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #2 ;M950 H3 C"1.out1" T3 ; create heater #3 this is the chamber heater ;M143 H3 P0 T1 C0 S150 A0 ; configure heater monitor #0 for heater #3 ;M307 H3 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #3 ; Heated beds M140 P0 H0 ; configure heated bed #0 ; Heated chambers ;M141 P0 H3 ; configure heated chamber #0 ; Fans M950 F0 C"out4" ; create fan #0 M106 P0 C"Left Tool CPAP" S0 L0.15 X1 B0.1 ; configure fan #0 M950 F1 C"out9" ; create fan #1 M106 P1 C"Right Tool CPAP" S0 L0.15 X1 B0.1 ; configure fan #1 ; Tools ;T0 M563 P0 S"T0 Right" D0 H1 X0 F1 ; create tool #0 M568 P0 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ;T1 M563 P1 S"T1 Left" D1 H2 X3 F0 ; create tool #1 M568 P1 R0 S0 ; set initial tool #1 active and standby temperatures to 0C ;Duplication Mode M563 P2 S"Duplication Mode" D0:1 H1:2 X0:3 F0:1 ; tool for duplication mode, filament drives 0 and 1, heaters 1 and 2, fans 0 and 2 G10 P2 X-88.75 Y0 U88.75 S0 R0 ; tool offsets for duplication mode M567 P2 E1:1 ; set mix ratio 100% on both extruders for duplication mode ;Mirror Mode M563 P3 S"Mirror Mode" D0:1 H1:2 X0:3 F0:1 ; tool for mirror mode G10 P3 X-88.75 Y0 U88.75 S0 R0 ; tool offset for mirror mode (flipped U offset) M567 P3 E1:1 ; set mix ratio 100% on both extruders for mirror mode
Hopefully I'm just missing something stupid here when I was rushing through configuration (swapping from klipper/kalico to RatOS to RRF to RRF beta firmware) Been staring at the multiple styles of configuration for so long that I am statistically bound to have missed something.
-
@aetherialdesign Thanks. Could you post a screen grab of DWC > Settings > Machine specific > General > Electronics, showing the CAN boards and their firmware versions? And an M122 output from the first 6HC, and any daemon.g you use, please.
I can't see anything immediately wrong in your config.g. I'll test it tomorrow morning. In the meantime, if you can test with the latest beta version, 3.6.0-beta.3+3 from here, that would be helpful.
Ian
-
@droftarts
Daemon.g not in use yet until basic functionalities are confirmed.
Here's DWC:
M122 from the main/1st 6HC
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.01 (SBC mode) Board ID: 08DJM-956BA-NA3TJ-6J9DJ-3S46R-1986S Used output buffers: 1 of 40 (17 max) === RTOS === Static ram: 136892 Dynamic ram: 99420 of which 0 recycled Never used RAM 107744, free system stack 180 words Tasks: LASER(5,nWait 7,0.0%,269) SBC(2,rWait:,0.8%,826) HEAT(3,nWait 6,0.0%,325) Move(4,nWait 6,0.0%,333) TMC(4,nWait 6,2.9%,375) CanReceiv(6,nWait 1,0.0%,792) CanSender(5,nWait 7,0.0%,334) CanClock(7,delaying,0.0%,352) MAIN(2,running,96.3%,101) IDLE(0,ready,0.0%,29) USBD(3,blocked,0.0%,149), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:53:47 ago, cause: software Last software reset at 2025-02-06 16:46, reason: User, Platform spinning, available RAM 106536, slot 0 Software reset code 0x2000 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 MCU temperature: min 44.2, current 44.4, max 46.4 Supply voltage: min 24.1, current 24.2, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.1, current 12.2, max 12.2, under voltage events: 0 Heap OK, handles allocated/used 99/10, heap memory allocated/used/recyclable 2048/152/0, gc cycles 0 Events: 0 queued, 0 completed Date/time: 2025-02-06 17:40:37 Slowest loop: 1.88ms; 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 0.00/0/0.00 next step interrupt due in 112 ticks, disabled Driver 0: standstill, SG min n/a, mspos 904, reads 32797, writes 19 timeouts 0 Driver 1: standstill, SG min n/a, mspos 264, reads 32797, writes 19 timeouts 0 Driver 2: standstill, SG min n/a, mspos 936, reads 32796, writes 20 timeouts 0 Driver 3: standstill, SG min n/a, mspos 520, reads 32796, writes 20 timeouts 0 Driver 4: standstill, SG min n/a, mspos 520, reads 32796, writes 20 timeouts 0 Driver 5: standstill, SG min n/a, mspos 488, reads 32796, writes 20 timeouts 0 Phase step loop runtime (us): min=0, max=22, frequency (Hz): min=1903, max=2106 === DDARing 0 === 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 === 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 er=== 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 28177, received 51613, lost 0, ignored 0, errs 0, boc 0 Longest wait 1ms for reply type 6018, peak Tx sync delay 376, free buffers 50 (min 49), ts 15298/15297/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === Transfer state: 5, failed transfers: 0, checksum errors: 0 RX/TX seq numbers: 60998/60998 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 Code buffer space: 4096 Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0 Full transfers per second: 39.29, max time between full transfers: 131.1ms, max pin wait times: 47.7ms/6.6ms Codes per second: 0.18 Maximum length of RX/TX data transfers: 4358/832
I'll try to get beta+3 going here shortly and see if similar results.
-
Same results on beta3+3; along with increased oddities.
Machine kept pausing during initialization of the print file -
Reiterating in case I failed to mention in this particular post -> this setup is an SBC setup as the boards being used are pre 1.02 and can't utilize the wifi module add-on.
Installation location of the machine has no access to ethernet either.
I can try to do power socket ethernet at a later date if SBC is the root cause here. -
@aetherialdesign Unfortunately I've not had much time to progress investigating this issue. Would it be possible for you to set up your Duet in standalone mode and test?
You will need to set up an SD card for the Duet mainboard. You could make the "SD card" directories in the FAT/boot partition of the SBC SD card (or update the files if the directories are already there). Basically what is in /opt/dsf/sd needs to be copied into the boot partition. Also assign an IP address in that config.g or set to DHCP as appropriate. With an SD card in the Duet is should boot into Standalone mode.
For networking and to actually connect to the Duet, if you have a PC with ethernet nearby, you can set it up to connect directly. For a guide, see https://docs.duet3d.com/en/User_manual/Machine_configuration/Networking#wired-direct-connection
I'll have more time at the beginning of next week to investigate, if this is too much messing around for you!
A few questions: which DuetPi image did you use to build the SBC, and what Raspberry Pi are you using? Was it working correctly on a previous version (eg 3.4), or is this a new build? If you were using a 'Buster' build of DuetPi (ie RRF/DSF 3.4), how did you update the SBC to 3.5? (We recommend flashing a new DuetPi image if moving from Buster to Bookworm, see https://docs.duet3d.com/en/How_to_guides/SBC_Buster_to_Bookworm )
Ian
-
@droftarts
I’m expecting a Wi-Fi repeater/extension this weekend, which will allow me to create a pseudo Ethernet connection to the machine.This is a fresh build. The setup includes a Pi 4 (with a dedicated 5V PSU) running the standard full image from the Docs, as there was potential for a touchscreen interface later. However, I’m planning to test removing the SBC to rule it out as a potential bottleneck. If needed, I can always use an old PanelDue later.
I manually flashed the boards to version 3.5.4 over USB using BOSSA and updated all peripherals via the SBC. Later, I updated to 3.6b3 through the SBC to address the extruder bug in 3.5.4.
As a result, the machine hasn’t yet been tested under actual printing conditions on RRF.
-
I removed 5v PSU and the SBC from the system and moved over to standalone mode.
Error still reproduces whenever going into print status.All other functionalities and controls are perfectly fine as long as I don't try to print or emulate printing motions via macros
-
@aetherialdesign we expect release 3.6.0-beta.4 later today. Please test again with this release on both boards. if the fault continues to occur then please post the result of running M122 B1 after the "reconnected" message appears. In this release it will produce full diagnostics instead of abbreviated ones, so there should be no need to connect to it via USB to get the full report.
-
@dc42 Updated to b4 this morning
Error still reproduces and I've attached the M122 B1 response below.
Will make note that the machine is now behaving erratically after the update:- When first starting the print the motion is extremely jittery and acts like its dropping an extreme amount of steps and then it smooths out and runs fine as soon as the 2nd 6HC drops the connection. Bed Mesh is disabled.
- Additionally, I noticed that bed heater commands generated from slicer(s) are setting the temperature (M140 and M190) and the bed is heating appropriately, however, DWC has the bed set to 0 still for active/standby -> heater temp stabilizes as expected though.
- DWC has also dropped one of the tools from the list (T3 Mirror Mode), this could be self inflicted though as I've been updating things while troubleshooting. But Config.g still has the tool defined properly.
- The reconnect error repeats itself about every 50 seconds if I let the printer keep running.
Here is the file being sliced:
Sliced like 'normal' IE: slicer sets tools, heaters, and there's a skirt.
vtest.gcodeM122 B1 Diagnostics for board 1: === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.6.0-beta.4 (2025-02-11 09:51:22) running on Duet 3 MB6HC v1.01 (expansion mode) Board ID: 08DJM-9P63L-DJMSS-6J1F6-3SN6T-KUHHB Used output buffers: 0 of 40 (1 max) === RTOS === Static ram: 137396 Dynamic ram: 124952 of which 0 recycled Never used RAM 75300, free system stack 202 words Tasks: NETWORK(1,ready,10.1%,545) HEAT(3,nWait 6,0.0%,355) Move(4,nWait 6,0.0%,333) TMC(4,nWait 6,2.9%,377) CanReceiv(6,running,0.1%,626) CanSender(5,nWait 7,0.0%,334) CanClock(7,invalid,0.0%,351) MAIN(1,ready,86.4%,500) IDLE(0,ready,0.5%,29) USBD(3,blocked,0.0%,149), total 100.0% Owned mutexes: === Platform === Last reset 00:00:20 ago, cause: software Last software reset at 2025-02-11 10:27, reason: HeatTaskStuck, Gcodes spinning, available RAM 84348, slot 2 Software reset code 0x0143 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0040080f BFAR 0x00000000 SP 0x2041d6f8 Task Move Freestk 1044 ok Stack: 00000000 2041d054 10000000 e000e000 2041d808 0049ad85 0049b57c 610f0000 20421460 0000002c 2041d7e8 20432b98 a5a5a5a5 20432b90 00453c39 00456cef a5a5a5a5 20432c18 a5a5a5a5 a5a5a5a5 a5a5a5a5 41c11f78 41c1e1bb 41c292da 414029c9 41418099 4142876c === Storage === Free file entries: 20 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 1.7ms, write time 0.0ms, max retries 0 === Move === Segments created 386, 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: 17848.73/0/0.00 0.00/0/0.00 0.00/0/0.00 0.00/0/0.00 0.00/0/0.00 0.00/0/0.00 Peak sync jitter -1/1, peak Rx sync delay 176, resyncs 0/0 Next step interrupt due in 131 ticks, disabled Driver 0: standstill, SG min n/a, mspos 888, reads 41285, writes 14 timeouts 0 Driver 1: standstill, SG min n/a, mspos 8, reads 41288, writes 11 timeouts 0 Driver 2: standstill, SG min n/a, mspos 904, reads 41288, writes 11 timeouts 0 Driver 3: standstill, SG min n/a, mspos 904, reads 41288, writes 11 timeouts 0 Driver 4: standstill, SG min n/a, mspos 904, reads 41296, writes 11 timeouts 0 Driver 5: standstill, SG min n/a, mspos 8, reads 41296, writes 11 timeouts 0 Phase step loop runtime (us): min=0, max=14, frequency (Hz): min=0, max=3086 === Heat === Bed heaters -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1 -1 -1 -1 -1, ordering errs 0 === CAN === Messages queued 220, received 526, lost 0, ignored 17, errs 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 1/0/0 Tx timeouts 0,0,0,0,0,0
After this replication I then stripped ALL startup commands from the sliced file and only left everything after the first movement command.
- Homed machine via DWC
- Set bed temperature via DWC
- Selected T0 via DWC
- Set T0 temperatures via DWC
I then ran the stripped file and it returns identical results -> super jittery motion until the 2nd board gets the Reconnect error -> afterwards it runs smoothly except no E and Z motion as the board they are on has dropped.
For due diligence I re-sliced the file without a skirt and stripped all startup commands once again -> Manually set everything via DWC and then ran the job -> The Reconnect error doesn't appear in DWC, however, the motion is super jittery (line by line with pauses between) and does not smooth out as the 2nd board doesn't disconnect.
This is similar motion behavior that was experienced when a USB was plugged into the 2nd 6HC for diagnostics.
Here's that file: vtest stripped skirtless.gcodeCurrent config.g
; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC ; generated by RepRapFirmware Configuration Tool v3.5.10 on Wed Jan 22 2025 20:16:14 GMT-0500 (Eastern Standard Time) ; Execute pre parameter macros M98 P{directories.system^"/Printer Parameters/tool_params.g"} ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"Servobelt" ; set hostname ; Network ;M551 P"___" ; set UI password M552 P0.0.0.0 S1 ; configure Ethernet adapter M586 P0 S1 ; configure HTTP ; Wait a moment for the CAN expansion boards to become available G4 S2 ; Accelerometers ;M955 P0 C"spi.cs0+io8.in" I20 ; configure accelerometer on board #0 ; Smart Drivers M569 P0.0 S1 D2 ; driver 0.0 goes forwards (X axis) M569 P0.1 S1 D2 ; driver 0.1 goes forwards (U axis) M569 P0.2 S0 D2 ; driver 0.2 goes forwards (Y axis) M569 P0.3 S0 D2 ; driver 0.3 goes forwards (Y axis) M569 P0.4 S1 D2 ; driver 0.4 goes backwards (Y axis) M569 P0.5 S1 D2 ; driver 0.5 goes backwards (Y axis) M569 P1.0 S0 D2 ; driver 1.0 goes forwards (extruder 0) M569 P1.1 S0 D2 ; driver 1.1 goes forwards (extruder 1) M569 P1.2 S0 D2 ; driver 1.2 goes forwards (Z axis) M569 P1.3 S0 D2 ; driver 1.3 goes forwards (Z axis) M569 P1.4 S0 D2 ; driver 1.4 goes forwards (Z axis) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S600 ; set motor current idle timeout ;M84 E0:1 ; Disable specific motors ; Axes M584 X0.0 Y0.2:0.3:0.4:0.5 Z1.2:1.3:1.4 U0.1 ; set axis mapping M350 X16 Y16 Z8 U16 I0 ; configure microstepping without interpolation M906 X1100 Y2500 Z1400 U1100 ; set axis driver currents M92 X80 Y80 Z800 U80 ; configure steps per mm M208 X-175:250 Y-185:190 Z0:370 U-250:175 ; set minimum and maximum axis limits M671 X-167.5:0:167.50 Y-200:242:-200 S5; Z pivot points are at (-167.5,-199.5), (0,241.645) and (167.5,-199.5) max correction is 5mm M566 X900 Y900 Z12 U900 ; set maximum instantaneous speed changes (mm/min) M203 X30000 Y30000 Z600 U30000 ; set maximum speeds (mm/min) M201 X10000 Y15000 Z1000 U10000 ; set accelerations (mm/s^2) ; Extruders M584 E1.0:1.1 ; set extruder mapping M350 E16:16 I0 ; configure microstepping without interpolation M906 E700:700 ; set extruder driver currents M92 E{global.t0_e_steps, global.t1_e_steps} ; configure steps per mm M566 E120:120 ; set maximum instantaneous speed changes (mm/min) M203 E3600:3600 ; set maximum speeds (mm/min) M201 E250:250 ; set accelerations (mm/s^2) ; Kinematics M669 K0 ; configure Cartesian kinematics ; Mesh Bed Compensation and Z tilt M557 X-120:120 Y-120:120 S10:10 ; define grid for mesh bed compensation ; Probes M558 K0 P11 C"120.i2c.ldc1612" H10 F300:300:6000 T12000 ; configure scanning probe via slot #0. add B1 to disable heaters during probing M558.1 K0 S1 A-3.277e-4 B-1.915e-9 C2.250e-15 M558.2 S14 R143209 M308 A"SZP coil" S10 Y"thermistor" P"120.temp0" ; thermistor on coil G31 P290 X0 Y59 Z5.0 ; set Z probe trigger value, offset and trigger height ;M955 P120.0 I25 ; Add accelerometer on SZP with CAN address 120 and specify orientation ; Endstops M574 X2 P"io1.in" S1 ; configure X axis endstop M574 Y2 P"io2.in" S1 ; configure Y axis endstop M574 Z1 S2 K0 ; configure Z axis endstop M574 U1 P"io4.in" S1 ; configure U axis endstop ; Sensors M308 S0 P"temp3" Y"thermistor" A"Heated Bed" T100000 B4388 C7.06e-8 ; configure sensor #0 M308 S1 P"temp1" Y"pt1000" A"Nozzle T0" ; configure sensor #1 M308 S2 P"temp2" Y"pt1000" A"Nozzle T1" ; configure sensor #2 ;M308 S3 P"1.temp0" Y"thermistor" A"Chamber" T100000 B4725 C7.06e-8 ; configure sensor #3 ; Heaters M950 H0 C"out3" T0 ; create heater #0 this is the bed M143 H0 P0 T0 C0 S140 A0 ; configure heater monitor #0 for heater #0 M307 H0 R0.659 K0.479:0.000 D2.15 E1.35 S1.00 B0 ; configure model of heater #0 M950 H1 C"out1" T1 ; create heater #1 this is T0/Right tool M143 H1 P0 T1 C0 S350 A0 ; configure heater monitor #0 for heater #1 ;M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #1 M307 H1 R3.246 K0.520:0.520 D2.49 E1.35 S1.00 B0 V24.1 M950 H2 C"out2" T2 ; create heater #2 this is T1/Left Tool M143 H2 P0 T1 C0 S350 A0 ; configure heater monitor #0 for heater #2 M307 H2 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #2 ;M950 H3 C"1.out1" T3 ; create heater #3 this is the chamber heater ;M143 H3 P0 T1 C0 S150 A0 ; configure heater monitor #0 for heater #3 ;M307 H3 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #3 ; Heated beds M140 P0 H0 ; configure heated bed #0 ; Heated chambers ;M141 P0 H3 ; configure heated chamber #0 ; Fans M950 F0 C"out4" ; create fan #0 M106 P0 C"Left Tool CPAP" S0 L0.15 X1 B0.1 ; configure fan #0 M950 F1 C"out9" ; create fan #1 M106 P1 C"Right Tool CPAP" S0 L0.15 X1 B0.1 ; configure fan #1 ; Tools ;T0 M563 P0 S"T0 Right" D0 H1 X0 F1 ; create tool #0 M568 P0 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ;T1 M563 P1 S"T1 Left" D1 H2 X3 F0 ; create tool #1 M568 P1 R0 S0 ; set initial tool #1 active and standby temperatures to 0C ;Duplication Mode M563 P2 S"Duplication Mode" D0:1 H1:2 X0:3 F0:1 ; tool for duplication mode, filament drives 0 and 1, heaters 1 and 2, fans 0 and 2 G10 P2 X-88.75 Y0 U88.75 S0 R0 ; tool offsets for duplication mode M567 P2 E1:1 ; set mix ratio 100% on both extruders for duplication mode ;Mirror Mode M563 P3 S"Mirror Mode" D0:1 H1:2 X0:3 F0:1 ; tool for mirror mode G10 P3 X-88.75 Y0 U88.75 S0 R0 ; tool offset for mirror mode (flipped U offset) M567 P3 E1:1 ; set mix ratio 100% on both extruders for mirror mode ; Input Shaper ;M593 P"zvd" F40.0 S0.10 ; Execute post parameter macros M98 P{directories.system^"/Printer Parameters/machine_params.g"}
And then daemon.g
var daemon_sleep = 2 if !exists(global.bed_timeout_start) global bed_timeout_start = 0 global tool_timeout_start = 0 global bed_timer_active = false global tool_timer_active = false while true if (state.status == "idle" || state.status == "simulating") var beds_active = false var tools_active = false while iterations < #heat.bedHeaters if heat.bedHeaters[iterations] != -1 if heat.heaters[iterations].state == "active" || heat.heaters[iterations].state == "standby" set var.beds_active = true if global.bed_timer_active && state.upTime - global.bed_timeout_start >= global.bed_heater_timeout M140 S-273.1 while iterations < #tools var current_tool = iterations while true if iterations >= #tools[var.current_tool].heaters break if heat.heaters[tools[var.current_tool].heaters[iterations]].state == "active" || heat.heaters[tools[var.current_tool].heaters[iterations]].state == "standby" set var.tools_active = true if global.tool_timer_active && state.upTime - global.tool_timeout_start >= global.tool_heater_timeout M568 P{var.current_tool} A0 if var.beds_active if !global.bed_timer_active set global.bed_timeout_start = state.upTime set global.bed_timer_active = true else set global.bed_timer_active = false if var.tools_active if !global.tool_timer_active set global.tool_timeout_start = state.upTime set global.tool_timer_active = true else set global.tool_timer_active = false else set global.tool_timer_active = false set global.bed_timer_active = false G4 S{var.daemon_sleep}
Toolchange routines, daemon, macros, etc were pulled from a known working IDEX configuration and tweaked for this machine. These updated files were added over this past weekend during downtime. Errors returned on prior barebones configuration as well as this newer style of configuration.
EDIT: changed the label for firmware update from b3+4 to b4
-
@aetherialdesign We have managed to reproduce this error. @dc42 is investigating.
Ian
-
@aetherialdesign the fix for this is currently being tested.
-
@aetherialdesign
please try this unofficial firmware build. Scratch that, there appears to be a second issue.