GCODE for Skew and Scale correction?

Have an X1C.
My other printers are Duet based.
I use Scale and Skew to achieve the dimensional accuracy I need for my production parts.

M556 S100 X-0.0495 ; Skew Correction
M579 X0.9913 Y0.9923 ; Scale Correction
for example.

I tried M556 to correct scale on my X1C and it had no effect - at least using the Duet syntax.
What are the gcodes and method for calculating the parameters for Skew and Scale on the X1C?

I read that X1C is Marlin based. So may be Bed Skew Compensation | Marlin Firmware ?

Can I ask where you read that?


I don’t remember specifically where I read that it was based on marlin, however doing a search on the forum resulted in many threads. This one in particular strongly points to marlin: Bambu Lab X1 Specific G-Code.

Recently it was revealed that the X1C firmware has been reverse engineered and it verified that it is not marlin based.


I’ve watched the video and am excited about the potential of X1 Plus.

Perhaps I’ve misunderstood from what I’ve read. As we’ve learned from the video, the firmware is running Linux. However, the printer is able to understand some, if not most, of Marlin gcode commands - hence why I said the printer is Marlin based and suggested checking out Marlins command for skew correction.

M852 in the start script did not work.
Machine threw an error message about the horizontal laser not being illuminated and started air printing a couple mm off the bed.

Thanks for the suggestion though.

Sorry that didn’t help.

Here is a data point, not sure if it means that much though:

Obviously it could be just Marlin-like as opposed to actual Marlin (which I know very little about).

Yeah - noticed that too while I was poking around, but as reported the Marlin skew code did not yield the desired result and caused and unrelated error to pop up.

Turns out the laser error seems to be a LIDAR problem on the new X1E I was using, not related to the SKEW command. May have to try that again to see if it corrects machine skew (which is small).

I have learned that you do have to have the skew compensation active in the firmware. It needs to have:

So, I suspect that without that (and I’m thinking it doesn’t have it), then M852 isn’t going to work. I’m about to try it myself and see if the skew changes.

Edit: I just tried and I’m not seeing the skew correction. I’m going to leave it in there for the time being since it doesn’t appear to be causing any errors.

See this post:
for a way to compensate for Skew in the Bambu X1C firmware.



It took me 6 prints to dial it in to zero difference.

X Y diff
79.43 79.69 0.26
79.73 79.5 0.23
79.58 79.68 0.1
79.69 79.67 0.02
79.7 79.7 0

I didn’t like the provided STL. I found it too flimsy and compressible. I made my own hexagonal gauge in Fusion that included some embossing to mark the X and Y sides (I kept accidently swapping the X and Y sides. I’m getting old and forgetful).

Previously I had done the shimming technique to get rid of the skew. I’m not sure which one is easier or faster.

Now if we can just get Bambu’s G-code commands to dial in the steps and backlash, to help get accurate dimensions for functional parts.


It might be my imagination, but after correcting the skew I ran a full calibration with the motor noise cancelation enabled, the printer sounds even quieter than before.

I have no way of quantifying it with a dB meter. I’m not going to reset the skew and rerun the test to verify. Maybe someone else might…

Haven’t been able to obtain anything square and at accurate dimensions with this method.

not calibrated : 80.2 / 80.08
1st 80.11 / 80.17
2nd 80.31/80.02
3rd 80.25 / 80.38

I gave up and reset the values to default

I would suggest to measure the repeatability first.
Aren’t you the guy with the toothed idlers from Alixrps btw?

scale it larger, it will give you more accuracy.

@Alkerion Have you tried the M1005 [In] gcode format for skew correction? I find it gives better results than the M1005 [Xn] [Yn] method. The M1005 [Xn] [Yn] format iteratively applies a new compensation factor to the previous one and can make the results jump around a lot unless your measurements are very accurate. M1005 [In] overwrites any previous correction.
As suggested by @lindnjoe uniformly scaling the test print larger will give you more accurate results.

See this thread: Skew compensation in the Bambu X1C Firmware for details of how to use gcode M1005 with the [In] parameter.