Skew compensation in the Bambu X1C Firmware

M1005 [In]

M1005 can also be used with the [In] parameter to apply a skew correction factor (in radians)* for the XY axes. The correction factor can be calculated from 3 measurements of a test print as follows:

Y
^     B-------C
|    /       /
|   /       /
|  A-------D
+-------------->X
XY skew factor

Measure AC, BD and AD
Calculate AB and the skew factor:

AB = SQRT(2*AC^2+2*BD^2-4*AD^2)/2
skew_factor = TAN(PI/2-ACOS((AC^2-AB^2-AD^2)/(2*AB*AD))) radians

Apply the -ve of the skew factor as the correction factor with M1005:

M1005 I-skew_factor

Save the correction factor to EEPROM with M500

This is not iterative like M1005 [Xn] [Yn]. If you run M1005 [In] again the previous correction factor will be overwritten.

If you want to revert to the machine’s uncorrected skew use 0 as the correction factor for the [I] parameter:

M1005 I0
M500

*(if you want to check what the angle in radians is in degrees, multiply by 180 and divide by pi)

Bambu Lab’s M1005 [In] behaves the same as Marlin’s M852 [In]. Unfortunately they don’t (yet) seem to have extended this to correct skew in the XZ and YZ planes (like Marlin’s M852 [Jn] and [Kn] parameters do). At least I haven’t had any success trying M1005 [Jn] or [Kn] on firmware version 01.07.02.00

The M1005 gcode looks like a wrapper round (some of) the function of Marlin’s M852 with the addition of the [Xn] and [Yn] parameters as a convenient way for the user to enter just 2 measurements from a test print without having to calculate the skew factor. In the instructions pdf (link) from Bambu tech support they say they intend to improve the skew compensation method in the future. I hope they include XZ and YZ compensation.

It’s frustrating to have such a good printer but with closed source firmware. It’s the only thing I don’t like about the Bambu X1C.

6 Likes