@T3P3Tony Thats an interesting note about the M30, I'll try removing it (though I kinda doubt its doing much)
I run G92 X0 Y0 Z0 U0 prior to every run, so yeah at the start it should think its at 0,0.
I've attached my config.g
; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 31 2024 16:03:33 GMT-0600 (Central Standard Time)
; General
G90 ; absolute coordinates
M83 ; relative extruder moves
M550 P"DuetPi" ; set hostname
; Smart Drivers
M569 P0.0 S0 D2 ; driver 0.0 goes forwards (X axis)
M569 P0.1 S1 D2 ; driver 0.1 goes forwards (Y axis)
M569 P0.2 S0 D2 ; driver 0.2 goes forwards (Y axis)
M569 P0.3 S1 D2 ; driver 0.3 goes forwards (extruder 0)
M569 P0.4 S1 D2 ; driver 0.4 goes forwards (Z axis)
M569 P0.5 S1 D2 ; driver 0.4 goes forwards (Z axis)
; Motor Idle Current Reduction
M906 I30 ; set motor current idle factor
M84 S30 ; set motor current idle timeout
; Axes
; Axes
M584 X0.1 Y0.0:0.2 Z0.5 U0.3 ; set axis mapping
M350 X16 Y16 Z16 U16 I1 ; configure microstepping with interpolation
M906 X1200 Y1200 Z800 U2500 ; set axis driver currents
M92 X80 Y80 Z400 U409 ; configure steps per mm
M208 X0:300 Y0:200 Z0:200 U0:10000000 ; set minimum and maximum axis limits
M566 X2000 Y2000 Z12 U400 ; set maximum instantaneous speed changes (mm/min)
M203 X10000 Y10000 Z180 U8000 ; set maximum speeds (mm/min)
M201 X500 Y500 Z20 U250 ; set accelerations (mm/s^2)
; Kinematics
M669 K0 ; configure Cartesian kinematics
; Endstops
;M574 X1 S3 ; configure X axis endstop
;M574 Y1 S3 ; configure Y axis endstop
M574 U1 P"!io3.in" S1 ; configure U axis endstop
M950 J2 C"!io3.out" ; Input 2 uses io3.out pin, inverted
M581 T2 U S1
; Fans
M950 F0 C"out3" ; create fan #0
M106 P0 S0 L0 X1 B0.1 ; configure fan #0
; Tools
M563 P0 D0 ; create tool #0
; Miscellaneous
M501 ; load saved parameters from non-volatile memory
T0 ; select first tool