[3.6.0-rc2+1] Code 7 move error
-
Came across this error today with rc2 (no plus), still present with rc2+1
Not certain if it's just how weird my system is, or if it's an actual bug.When attempting to home my A axis I get this error, UNLESS the home switch is already triggered.
If the homing switch is already triggered the axis homes just fine, but subsequent home commands run the motor at what sounds like 10X speed which the motor can't do and just squeals.
If at this point I physically move the axis to the home switch, at which point the homing sequence completes without error.I can home my Z axis without issue.
I have found that if I define what I have called my U axis in the past, as the Y axis, then the error does not occur.
This is weird to me, as it's the A axis homing that causes the error, I do not have endstops for the U/Y axis.I'm suspecting it is something to do with me not defining/using the X or Y axis, which you'd not really see in any normal setup.... though I do not know why that should be a problem.
Using Y instead of U is not a large issue for me, but I figured I'd better notify of what I found in case it is a bug instead of just me doing stupid things.
Error code:
Error: Code 7 move error: info=-2.147e+9, seg: s=10412661 t=2147483647 d=-2147483648.00 u=-1.0000e+0 a=0.0000e+0 f=0f
M122:
4/16/2025, 9:44:45 AM: M122: === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.6.0-rc.2+1 (2025-04-09 16:55:47) running on Duet 3 Mini5plus Ethernet (standalone mode) Board ID: G5729-TU8LU-F65J0-409NU-3F03Z-7U6T6 Used output buffers: 1 of 40 (19 max) === RTOS === Static ram: 94764 Dynamic ram: 116432 of which 16 recycled Never used RAM 30184, free system stack 110 words Tasks: NETWORK(1,ready,21.3%,145) ETHERNET(5,nWait 7,0.1%,578) HEAT(3,nWait 6,0.0%,371) TMC(4,nWait 6,0.8%,99) CanReceiv(6,nWait 1,0.0%,796) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,353) MAIN(1,running,74.7%,675) IDLE(0,ready,2.0%,29) USBD(3,blocked,0.0%,147) AIN(4,delaying,0.8%,261), total 99.7% Owned mutexes: === Platform === Last reset 00:00:25 ago, cause: software Last software reset at 2025-04-16 09:33, reason: User, Gcodes spinning, available RAM 30196, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 MCU temperature: min 28.2, current 29.5, max 29.5 Supply voltage: min 23.9, current 24.0, max 24.0, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/37, heap memory allocated/used/recyclable 2048/696/0, gc cycles 0 Events: 1 queued, 1 completed Date/time: 2025-04-16 09:44:44 Slowest loop: 80.95ms; fastest: 0.16ms === Storage === Free file entries: 18 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 3.3ms, write time 3.9ms, max retries 0 === Move === Segments created 3, maxWait 13801ms, 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 -2147483648.00/-2/-1.00 0.00/0/0.00 No step interrupt scheduled Driver 0: standstill, SG min 0, r/w errs 0/1, ifcnt 29, reads/writes 1296/15, timeouts 0, DMA errs 0, CC errs 0 Driver 1: standstill, SG min 0, r/w errs 0/1, ifcnt 27, reads/writes 1298/13, timeouts 0, DMA errs 0, CC errs 0 Driver 2: standstill, SG min 0, r/w errs 0/1, ifcnt 27, reads/writes 1297/13, timeouts 0, DMA errs 0, CC errs 0 Driver 3: standstill, SG min 0, r/w errs 0/1, ifcnt 21, reads/writes 1300/10, timeouts 0, DMA errs 0, CC errs 0 Driver 4: standstill, SG min 0, r/w errs 0/1, ifcnt 21, reads/writes 1301/10, timeouts 0, DMA errs 0, CC errs 0 Driver 5: not present Driver 6: not present === DDARing 0 === Scheduled moves 1, completed 0, LaErrors 0, Underruns [0, 0, 0] Segments left 0, axes/extruders owned 0x00000013, drives owned 0x00000013 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 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 === GCodes === Movement locks held by HTTP, null HTTP is idle in state(s) 2 5, running macro 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 137, received 227, lost 0, ignored 0, errs 1, boc 0 Longest wait 277ms for reply type 6041, peak Tx sync delay 489, free buffers 26 (min 25), ts 120/119/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 14.75ms; fastest: 0.04ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = Ethernet = Interface state: active Error counts: 0 0 0 0 0 0 Socket states: 6 6 2 2 2 0 0 0 0
M122 B50.0 does not complete
config.g that errors
; Configuration file for RepRapFirmware on Duet 3 Mini 5+ Ethernet ; executed by the firmware on start-up ; General G91 ; Relative coordinates ;M83 ; relative extruder moves M550 P"TestSaw" ; Tool Number in future NV01234567-999 ; Network M552 P192.168.1.14 S1 ; configure Ethernet adapter M553 P255.255.255.0 ; set netmask M554 P192.168.1.1 ; set gateway M586 P0 S1 ; configure HTTP ; Wait a moment for the CAN expansion boards to become available G4 S2 ; Closed Loop Drivers M569.1 P50.0 T1 C189.384649 E7.5:50.0 S200 R30 I10 D0.01 V250 A30000 ; quadrature encoder and magnetic encoder. 188.08049125 187.911371 185.905911 M569 P50.0 S1 D2 ; Open Loop Drivers M569 P0.0 S1 D2 ; Clamp Driver M569 P0.1 S1 D2 ; Rotate Driver M569 P0.2 S1 D2 ; Feed Driver ; Axes M584 Z50.0 U0.2 A0.0 B0.1 ; set axis mapping M350 Z16 U16 A16 B16 ; configure microstepping M906 Z800 U800 A1300 B1500; set axis driver currents ;M917 Z0 ; (micro)Steps/mm Calculation: ; Z: Driver 1 microsteps ; Z: Motor 200steps/rev ; Z: Belt Reduction 1/2 (0.5) ; Z: Lead Screw Reduction 1.27 mm/Rotation (note,encoder reads here at 1.184759:1 ratio and 4um/cycle) ; Z: Motion Ratio 1.996311786:1 ; B: Driver 16 microsteps ; B: Motor 200steps/rev ; B: Belt Reduction 25/60 (0.4166666) ; A: Driver 16 microsteps ; A: Motor 200steps/rev, direct coupled ; E: Driver 16 microsteps ; E: Motor 400steps/rev (89080.1598:1) ; E: Belt Reduction 1/2 (0.5)(222.7003995:1) ; E: Harmonic Reduction 1/100 (0.01)(111.35019977:1) step = 0.009 deg ; E: Pinch Roller Radius 7.212148 mm (circ 45.3153) (1.1135:1) 0.12587583333 mm/deg (0.0011328825 mm/step) ; E: Encoder Roller Diameter 12.954 mm (circ 40.6962) M92 Z10060.153887 U28455.406926 A8.8888 B21.333333 ; steps/mm microsteps/mm E14123.2652106 for 200step motor 628.75961790625 E28246.5304212 M566 Z0 U1 A0 B1 P1 ; set maximum instantaneous speed changes (mm/min) M203 Z270 U100 A210939.6 B703126.08 I0.001 ;set maximum speeds (mm/min) M201 Z235.8796 U500 A50863.59954 B11593.69048 ; set accelerations (mm/s^2) M208 Z-0.65:1.5 U-2147483647:2147483647 A0:180 B-2147483647:2147483647 ; axis Limits ; Kinematics M669 K0 ; configure Cartesian kinematics ; Endstop and Probe M574 Z2 P"!50.io0.in" S1 ; configure Z axis endstop inverted M574 A1 P"^!out3.tach" S1 ; configure A axis endstop with pullup, inverted M558 P8 C"^!io1.in" H1:0.01 F12.425:0.0363255 T100 K0 A10 S0.00127 B0 ; configure blade probe with pullup, inverted G31 K0 Z0 P500 ; Spindle configuration M950 R0 C"nil + out0" L12000 ;Coolant Pump Configuration M950 F0 C"out1" ; Tools M563 P0 S"Blade" F0 R0 ; create tool #0 ; Miscellaneous M453 ; select CNC mode T0 ; select first tool ; Remove Requirement for homing G92 E0 B0 ; ; setup display M918 P2 E4 F2000000 ; Fysetc 12864mini M950 E1 C"io3.out" T1 U3 ; create a RGB Neopixel LED strip with 3 LEDs on the Duet 3 Mini 5+ 12864_EXP1 header M150 E1 R125 U0 B125 P125 S1 F1 ; display led blue R=Green, U=Red, B=Blue M150 E1 R0 U0 B0 P0 S1 F1 ; left encoder led red M150 E1 R0 U0 B0 P0 S1 F0 ; right encoder led green ;wait for things to be ready G4 S1 ;start logging M929 S3 ; S3:DEBUG S2:INFO S1:WARN ;load variables M98 P"0:/macros/general/commands/loadVariables.g"
homea.g
; homea.g ; called to home the A axis ; if {exists(global.debugOn)} if {global.debugOn = 1} M118 P0 S"homea.g Call" L3 ; anything here to make sure it's safe ; homing moves var aTravel = move.axes[3].max - move.axes[3].min + 360 ; calculate how far Z can travel plus degrees G91 ; relative positioning G1 F{global.clampHomeSpeed} G1 H1 A{-var.aTravel} F{global.clampHomeSpeed} ; coarse home in the -A direction G1 H2 A5 F{global.clampHomeSpeed} ; move back 5degrees G1 H1 A-1 F{global.clampHomeSpeed} ; fine home in the -A direction G90 ; Absolute Positioning G1 A{global.clampCloseDegrees} F{global.clampingSpeed} set global.clampStatus = 1 G4 P1 if {exists(global.debugOn)} if {global.debugOn = 1} M118 P0 S"homea.g Return" L3
homez.g
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Mon Jan 06 2025 08:00:55 GMT-0700 (Mountain Standard Time) if {exists(global.debugOn)} if {global.debugOn = 1} M118 P0 S"homez.g Call" L3 ; anything here to make sure it's safe ; homing moves var zTravel = move.axes[2].max - move.axes[2].min + 0.5 ; calculate how far Z can travel plus 0.5mm var zHalfMax = move.axes[2].max / 2 ; calculate half the max of Z travel G91 ; relative positioning G1 H1 Z{var.zTravel} F{global.depthHomeSpeed * 10} ; coarse home in the -Z direction G1 H2 Z-0.5 F{global.depthHomeSpeed * 10} ; move back 0.5mm G1 H1 Z1 F{global.depthHomeSpeed} ; fine home in the -Z direction G1 H2 Z{-var.zHalfMax} F100 ; setup closed loop M569 P50.0 D4 G4 P50 ;M569.6 P50.0 V2 ;G4 P500 M569.6 P50.0 V1 G4 P1 if {exists(global.debugOn)} if {global.debugOn = 1} M118 P0 S"homez.g Return" L3
config.g that does not error
; Configuration file for RepRapFirmware on Duet 3 Mini 5+ Ethernet ; executed by the firmware on start-up ; General G91 ; Relative coordinates M83 ; relative extruder moves M550 P"TestSaw" ; set hostname ; Network M552 P192.168.1.14 S1 ; configure Ethernet adapter M553 P255.255.255.0 ; set netmask M554 P0.0.0.0 ; set gateway M586 P0 S1 ; configure HTTP ; Wait a moment for the CAN expansion boards to become available G4 S2 ; Closed Loop Drivers M569.1 P50.0 T1 C189.384649 E7.5:50.0 S200 R30 I10 D0.01 V250 A30000 ; quadrature encoder and magnetic encoder. 188.08049125 187.911371 185.905911 M569 P50.0 S1 D2 ; Open Loop Drivers M569 P0.0 S1 D2 ; Clamp Driver M569 P0.1 S1 D2 ; Rotate Driver M569 P0.2 S1 D2 ; Feed Driver ; Axes M584 Z50.0 Y0.2 A0.0 B0.1 ; set axis mapping M350 Z16 Y16 A16 B16 ; configure microstepping M906 Z800 Y800 A1300 B1500; set axis driver currents M917 Z0 ; standstill current percentage ; (micro)Steps/mm Calculation: ; Z: Driver 1 microsteps ; Z: Motor 200steps/rev ; Z: Belt Reduction 1/2 (0.5) ; Z: Lead Screw Reduction 1.27 mm/Rotation (note,encoder reads here at 1.184759:1 ratio and 4um/cycle) ; Z: Motion Ratio 1.996311786:1 ; B: Driver 16 microsteps ; B: Motor 200steps/rev ; B: Belt Reduction 25/60 (0.4166666) ; A: Driver 16 microsteps ; A: Motor 200steps/rev, direct coupled ; E: Driver 16 microsteps ; E: Motor 400steps/rev (89080.1598:1) ; E: Belt Reduction 1/2 (0.5)(222.7003995:1) ; E: Harmonic Reduction 1/100 (0.01)(111.35019977:1) step = 0.009 deg ; E: Pinch Roller Radius 7.212148 mm (circ 45.3153) (1.1135:1) 0.12587583333 mm/deg (0.0011328825 mm/step) ; E: Encoder Roller Diameter 12.954 mm (circ 40.6962) M92 Z10060.153887 Y28455.406926 A8.8888 B21.333333 ; steps/mm microsteps/mm E14123.2652106 for 200step motor 628.75961790625 E28246.5304212 M566 Z0 Y1 A0 B1 P1 ; set maximum instantaneous speed changes (mm/min) M203 Z270 Y100 A210939.6 B703126.08 I0.001 ;set maximum speeds (mm/min) M201 Z235.8796 Y500 A10000 B11593.69048 ; set accelerations (mm/s^2) A50863.59954 M208 Z-0.65:1.5 Y-2147483647:2147483647 A0:180 B-2147483647:2147483647 ; axis Limits ; Kinematics M669 K0 ; configure Cartesian kinematics ; Endstop and Probe M574 Z2 P"!50.io0.in" S1 ; configure Z axis endstop inverted M574 A1 P"^!out3.tach" S1 ; configure A axis endstop with pullup inverted M558 P8 C"^!io1.in" H1:0.01 F12.425:0.0363255 T100 K0 A10 S0.00127 B0 ; configure blade probe G31 K0 Z0 P500 ; set probe status set probe 0 to 0 when value over 500 ; Spindle configuration M950 R0 C"nil + out0" L12000 ;Coolant Pump Configuration M950 F0 C"out1" ; Tools M563 P0 S"Blade" F0 R0 ; create tool #0 ; Miscellaneous M453 ; select CNC mode T0 ; select first tool ; Remove Requirement for homing G92 B0 ; ; setup display M918 P2 E4 F2000000 ; Fysetc 12864mini M950 E1 C"io3.out" T1 U3 ; create a RGB Neopixel LED strip with 3 LEDs on the Duet 3 Mini 5+ 12864_EXP1 header M150 E1 R125 U0 B125 P125 S1 F1 ; display led blue R=Green, U=Red, B=Blue M150 E1 R0 U0 B0 P0 S1 F1 ; left encoder led red M150 E1 R0 U0 B0 P0 S1 F0 ; right encoder led green ;wait for things to be ready G4 S1 ;start logging M929 S3 ; S3:DEBUG S2:INFO S1:WARN ;load variables M98 P"0:/macros/general/commands/loadVariables.g"
-
@ironhydroxide thanks for reporting this, it's definitely a bug.
Please can you check whether this issue still occurs using the 3.6.0-rc.2+4 build at https://www.dropbox.com/scl/fo/tayuteu4qy46yzn799mem/AMXF1iHCPWoQJpFHFECfRH8?rlkey=32q0r4djndboskdg3o59n0e00&dl=0. Use that firmware with caution because it has received minimal testing so far. If you confirm that the bug exists in that version then you may wish to switch back to rc.2+1.
-
Thank you for your efforts! Unfortunately, I don't have a chance to test the fix soon since the printer is being disassembled and moved right now. I will report back as soon as we have it back up and running.
-
@dc42
Loaded rc2+4, error is still presentConsole output here from uploading firmware, updating config.g back to the previous U axis definition, then G28 A
4/17/2025, 7:17:00 AM: : Board 50 starting firmware update 4/17/2025, 7:17:24 AM: Connection established 4/17/2025, 7:18:19 AM: Upload of config.g successful after 0s 4/17/2025, 7:18:33 AM: Connection interrupted, attempting to reconnect...: Network error: Request timed out 4/17/2025, 7:18:35 AM: Connection established 4/17/2025, 7:18:46 AM: G28 A: homea.g Call Error: Code 7 move error: info=-2.147e+9, seg: s=16775844 t=2147483647 d=-2147483648.00 u=-1.0000e+0 a=0.0000e+0 f=0f 4/17/2025, 7:18:55 AM: M122: === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.6.0-rc.2+4 (2025-04-17 08:23:50) running on Duet 3 Mini5plus Ethernet (standalone mode) Board ID: G5729-TU8LU-F65J0-409NU-3F03Z-7U6T6 Used output buffers: 1 of 40 (19 max) === RTOS === Static ram: 94764 Dynamic ram: 116336 of which 16 recycled Never used RAM 30280, free system stack 110 words Tasks: NETWORK(1,ready,21.1%,178) ETHERNET(5,nWait 7,0.1%,578) HEAT(3,nWait 6,0.0%,371) TMC(4,nWait 6,0.8%,99) CanReceiv(6,nWait 1,0.0%,818) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,337) MAIN(1,running,75.5%,675) IDLE(0,ready,1.6%,29) USBD(3,blocked,0.0%,147) AIN(4,delaying,0.8%,261), total 99.8% Owned mutexes: === Platform === Last reset 00:00:31 ago, cause: software Last software reset at 2025-04-17 07:18, reason: User, Gcodes spinning, available RAM 30280, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0400f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 MCU temperature: min 30.2, current 31.2, max 31.2 Supply voltage: min 23.9, current 24.0, max 24.0, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/37, heap memory allocated/used/recyclable 2048/696/0, gc cycles 0 Events: 0 queued, 0 completed Date/time: 2025-04-17 07:19:27 Slowest loop: 56.79ms; fastest: 0.16ms === Storage === Free file entries: 18 SD card 0 detected, requested/actual speed: 25.0/24.0MBytes/sec SD card longest read time 3.4ms, write time 6.0ms, max retries 0 === Move === Segments created 3, maxWait 22309ms, 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 0.00/0/0.00 0.00/0/0.00 No step interrupt scheduled Driver 0: standstill, SG min 0, r/w errs 0/1, ifcnt 43, reads/writes 1603/15, timeouts 0, DMA errs 0, CC errs 0 Driver 1: standstill, SG min 0, r/w errs 0/1, ifcnt 41, reads/writes 1605/13, timeouts 0, DMA errs 0, CC errs 0 Driver 2: standstill, SG min 0, r/w errs 0/1, ifcnt 41, reads/writes 1604/13, timeouts 0, DMA errs 0, CC errs 0 Driver 3: standstill, SG min 0, r/w errs 0/1, ifcnt 32, reads/writes 1607/10, timeouts 0, DMA errs 0, CC errs 0 Driver 4: standstill, SG min 0, r/w errs 0/1, ifcnt 32, reads/writes 1608/10, timeouts 0, DMA errs 0, CC errs 0 Driver 5: not present Driver 6: not present === DDARing 0 === Scheduled moves 1, completed 1, LaErrors 0, Underruns [0, 0, 0] Segments left 1, axes/extruders owned 0x00000013, drives owned 0x00000013 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 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 === GCodes === Movement locks held by HTTP, null HTTP is idle in state(s) 2 5, running macro 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 156, received 249, lost 0, ignored 0, errs 2680, boc 0 Longest wait 277ms for reply type 6041, peak Tx sync delay 10687, free buffers 26 (min 25), ts 148/145/0 Tx timeouts 0,0,2,0,0,0 last cancelled message type 30 dest 127 === Network === Slowest loop: 14.42ms; fastest: 0.03ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = Ethernet = Interface state: active Error counts: 0 0 0 0 0 0 Socket states: 6 6 2 2 2 0 0 0 0
-
@ironhydroxide thanks, I'm on to it.
-
@ironhydroxide I have reproduced this issue.
I believe the reason for the Code 7 error is that the limits of your A axis are too large, outside the range of -(2^31-1) to +(2^31-1) microsteps. So the calculated length of the G1 H1 homing move is longer than 2^31-1 microsteps and the possible duration of the move is longer than 2^31 step clocks (about 40 minutes).
I think the reason that the error doesn't occur when you rename U as Y is that then the A axis becomes axes 3 instead of axis 4, so the axis length calculation in file homea.g is picking up the axis limits for the B axis instead of the A axis.
EDIT: actually you are picking the axis limits for the U axis in homea.g, not the A axis. The axis numbers are:
0 X
1 Y
2 Z
3 U
4 AAxes 0,1,2 aka X,Y,Z are pre-allocated so they exists even if you don't use them. If I change axes[3] in homea.g to axes[4] then homing behaves as expected.
-
@dc42
This makes sense. I didn't consider the homea.g being the cause as it had worked fine before. Though I didn't confirm I had the right axis referenced.Good catch on this. and sorry for taking time on a bug that's not really a bug.
-
@ironhydroxide it's still a bug so I've added this symptom to this issue https://github.com/Duet3D/RepRapFirmware/issues/1094.