<p>Shifts in a diagonal direction in CoreXY indicate loss of synch between the two belts.</p>
<p>If it's the belt very loose skipping, you may not hear much but such a loose belt is easy to notice.</p>
<p>If it's the belt a bit loose skipping, you would hear relatively loud noises which make very clear what's happening.</p>
<p>If there are no particular noises, it's the motor skipping steps. One motor move along the X+Y diagonal, one along the X-Y diagonal, so you know which one it is.</p>
<p>If you have missed steps it could be because of excessive friction (maybe one motor is mounted tilted, or it is damaged), or because of excessive acceleration setting, which the motor cannot handle, or because of too low current.</p>
<p>If you decide to increase the current be aware that it may work on simple tests, but during longer prints the stepper driver may overheat and lose steps for self protection.</p>
<p>To check what acceleration and/or current you actually need per each motor and to compare whether motors are significantly different from each other, try this.</p>
<p>Without printing, you set the maximum acceleration relatively high (5000 mm/s^2).</p>
<p>Place a paper square (relatively big) on the printing area, parallel to the axes and tape it.</p>
<p>Align the printing head to one corner of the paper square.</p>
<p>Give a G0 command to move the printing head to the opposite corner of the square (G0 F600 X... Y...) and check that the alignment is correct. Also, only one motor should be moving.</p>
<p>Bring back the head to the opposite corner.</p>
<p>Set the feed rate to high values, like F9000 (150 mm/s) and move the head again. If it reaches the correct spot, the current of the motor is sufficient for that acceleration.</p>
<p>Try for the other diagonal of the square you taped to test the other motor.</p>
<p>You can now reduce the current of the motors which successfully passed the test. If you have Klipper it's super easy and requires only the command &quot;SET_TMC_CURRENT STEPPER=name CURRENT=amps&quot;, with Marlin I don't know.</p>
<p>See at what current each stepper fails the test, then decide whether to reduce the acceleration (5000 mm/s^2 is anyway probably too high for your printer frame, you would get artifacts like ringing) or to dial back up the current. I would say that 20% above the current required to pass the test is enough. More than that and you are just overheating the TMC2008.</p>

CC BY-SA 4.0
2020-11-09T09:48:19.497Z
Unfortunately, the manufacturer does not provide datasheets of the motors used and the product number refers to some obscure chinese manufacturer which does not have one online. I've asked them, and they don't answer cleanly.
xryl669
CC BY-SA 4.0
2020-11-09T09:51:00.277Z
I've tried to do that before you answered, and for *simple* move, no skip is registered. I think it happens with multiple small movement with full speed in-between (with high jerk), so I guess a more complex test case would be required. I wonder if such test case already exist, I haven't found any yet.
xryl669
CC BY-SA 4.0
2020-11-09T09:54:38.547Z
@xryl669 You can still perform the test after reducing the current, until it skips. As you say, you cannot use that value to get the optimal acceleration, but you can still use it to compare the two motors and see if one has unusually higher friction.
FarO
CC BY-SA 4.0
2020-11-09T09:56:18.670Z
On this printer, it's a MKS Nano board, and current is set by rotating a potentiometer on the TMC2208 board and it's very painful to do (you have to shut off the machine, tilt it 90°, set the current, tilt it back -90° and test again).
xryl669
CC BY-SA 4.0
2020-11-09T11:13:04.360Z
@xryl669 Maybe you could put Klipper on it and be done with the trimmer (Klipper will set parameters via serial), but check well in advance whether the UART pin of the TMC modules is connected to a pin of the CPU. Then you would also gain resonance compensation, which is neat...
FarO
CC BY-SA 4.0
2020-11-09T11:56:15.540Z
Didn't know about Klipper before. Thanks! Indeed, it seems it's possible to install on my printer and a [small HW modification](https://github.com/KevinOConnor/klipper/issues/2654) should be feasible to have this parameter set by UART
xryl669
CC BY-SA 4.0
2020-11-09T12:15:13.747Z
@xryl669 of course you become dependent on a Raspberry Pi 3 or later and Octoprint... but I'm happy with it.
FarO
CC BY-SA 4.0
2020-11-09T09:08:10.707Z
2020-11-09T09:08:10.707Z
FarO
<p>I've started assembling a Sapphire Plus CoreXY printer and produced a nice calibration cube (no layer shift, although a bit of over extrusion in the corner). Then, I started printing a 3D benchy, and got this:
<a href="https://i.sstatic.net/0xg9M.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/0xg9M.jpg" alt="Side view" /></a>
<a href="https://i.sstatic.net/jSRnw.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/jSRnw.jpg" alt="Top view" /></a></p>
<p>I've checked belt tension and it seems correct (I've printed <a href="https://www.thingiverse.com/thing:2589577" rel="nofollow noreferrer">this belt gauge</a> with another printer and checked that both belts are tensionned the same), with a bass sound when pluked.</p>
<p>I've checked both Z-axis lead screw and it's not 100% perfect (one lead screw has a 1mm deviation on one side when rolled over my desk). When the bed goes down, the effect of the lead screw is only visible when the bed is half the height or more, so it shouldn't matter here.</p>
<p>Also, I had multiple filament breaking before entering the extruder in other prints, so I'm not 100% confident with the extruder.</p>
<p>The machine is a Core XY printer with a Bowden extruder, with linear rails for all axis, and 2 lead screws for Z axis (and 2 stepper motors attached by the same belt). It's level, on a concrete base.</p>

CC BY-SA 4.0
2020-11-06T17:40:06.547Z
It looks like one XY motor is skipping steps. Check that the current is set to the same value and that both motors turn with the same effort. If the belt skips a tooth you would hear the issue very well, first of all, so that's not a problem to begin with.
FarO
CC BY-SA 4.0
2020-11-08T12:51:54.250Z
I've checked the current and increased it to the max supported by the motors. I've also reduced the jerk setting, and acceleration a bit. It's much better indeed. Feel free to write an answer so I can accept it. Thanks!
xryl669
CC BY-SA 4.0
2020-11-09T09:08:20.917Z
Done and added much more
FarO
CC BY-SA 4.0
2020-11-09T09:44:21.947Z
Also remember that the two belts don't need to be tensioned the same... by adjusting tension you can tilt slightly the X axis, in case it's not perfectly perpendicular to the Y axis. You can easily check this by moving (slowly) the printing head from the origin along X, then back, then Y and by marking the points to theck
FarO
<print-quality><corexy>
Layer Shift with a new CoreXY printer
xryl669
# Layer Shift with a new CoreXY printer

(Asked by: username_0 on 2020-11-06)

I've started assembling a Sapphire Plus CoreXY printer and produced a nice calibration cube (no layer shift, although a bit of over extrusion in the corner). Then, I started printing a 3D benchy, and got this:
[![Side view](https://i.sstatic.net/0xg9M.jpg)](https://i.sstatic.net/0xg9M.jpg)
[![Top view](https://i.sstatic.net/jSRnw.jpg)](https://i.sstatic.net/jSRnw.jpg)

I've checked belt tension and it seems correct (I've printed [this belt gauge](https://www.thingiverse.com/thing:2589577) with another printer and checked that both belts are tensionned the same), with a bass sound when pluked.

I've checked both Z-axis lead screw and it's not 100% perfect (one lead screw has a 1mm deviation on one side when rolled over my desk). When the bed goes down, the effect of the lead screw is only visible when the bed is half the height or more, so it shouldn't matter here.

Also, I had multiple filament breaking before entering the extruder in other prints, so I'm not 100% confident with the extruder.

The machine is a Core XY printer with a Bowden extruder, with linear rails for all axis, and 2 lead screws for Z axis (and 2 stepper motors attached by the same belt). It's level, on a concrete base.

**Tags:** print-quality, corexy

> **Comments:**
> **username_1**: It looks like one XY motor is skipping steps. Check that the current is set to the same value and that both motors turn with the same effort. If the belt skips a tooth you would hear the issue very well, first of all, so that's not a problem to begin with.  
> **username_0**: I've checked the current and increased it to the max supported by the motors. I've also reduced the jerk setting, and acceleration a bit. It's much better indeed. Feel free to write an answer so I can accept it. Thanks!  
> **username_1**: Done and added much more  
> **username_1**: Also remember that the two belts don't need to be tensioned the same... by adjusting tension you can tilt slightly the X axis, in case it's not perfectly perpendicular to the Y axis. You can easily check this by moving (slowly) the printing head from the origin along X, then back, then Y and by marking the points to theck  

---

## 1 answers

### Answer by username_1 on 2020-11-09. Score: 1 | Accepted answer

Shifts in a diagonal direction in CoreXY indicate loss of synch between the two belts.

If it's the belt very loose skipping, you may not hear much but such a loose belt is easy to notice.

If it's the belt a bit loose skipping, you would hear relatively loud noises which make very clear what's happening.

If there are no particular noises, it's the motor skipping steps. One motor move along the X+Y diagonal, one along the X-Y diagonal, so you know which one it is.

If you have missed steps it could be because of excessive friction (maybe one motor is mounted tilted, or it is damaged), or because of excessive acceleration setting, which the motor cannot handle, or because of too low current.

If you decide to increase the current be aware that it may work on simple tests, but during longer prints the stepper driver may overheat and lose steps for self protection.

To check what acceleration and/or current you actually need per each motor and to compare whether motors are significantly different from each other, try this.

Without printing, you set the maximum acceleration relatively high (5000 mm/s^2).

Place a paper square (relatively big) on the printing area, parallel to the axes and tape it.

Align the printing head to one corner of the paper square.

Give a G0 command to move the printing head to the opposite corner of the square (G0 F600 X... Y...) and check that the alignment is correct. Also, only one motor should be moving.

Bring back the head to the opposite corner.

Set the feed rate to high values, like F9000 (150 mm/s) and move the head again. If it reaches the correct spot, the current of the motor is sufficient for that acceleration.

Try for the other diagonal of the square you taped to test the other motor.

You can now reduce the current of the motors which successfully passed the test. If you have Klipper it's super easy and requires only the command "SET\_TMC\_CURRENT STEPPER=name CURRENT=amps", with Marlin I don't know.

See at what current each stepper fails the test, then decide whether to reduce the acceleration (5000 mm/s^2 is anyway probably too high for your printer frame, you would get artifacts like ringing) or to dial back up the current. I would say that 20% above the current required to pass the test is enough. More than that and you are just overheating the TMC2008.

> **Comments:**
> **username_0**: Unfortunately, the manufacturer does not provide datasheets of the motors used and the product number refers to some obscure chinese manufacturer which does not have one online. I've asked them, and they don't answer cleanly.  
> **username_0**: I've tried to do that before you answered, and for *simple* move, no skip is registered. I think it happens with multiple small movement with full speed in-between (with high jerk), so I guess a more complex test case would be required. I wonder if such test case already exist, I haven't found any yet.  
> **username_1**: @username_0 You can still perform the test after reducing the current, until it skips. As you say, you cannot use that value to get the optimal acceleration, but you can still use it to compare the two motors and see if one has unusually higher friction.  
> **username_0**: On this printer, it's a MKS Nano board, and current is set by rotating a potentiometer on the TMC2208 board and it's very painful to do (you have to shut off the machine, tilt it 90°, set the current, tilt it back -90° and test again).  
> **username_1**: @username_0 Maybe you could put Klipper on it and be done with the trimmer (Klipper will set parameters via serial), but check well in advance whether the UART pin of the TMC modules is connected to a pin of the CPU. Then you would also gain resonance compensation, which is neat...  
> **username_0**: Didn't know about Klipper before. Thanks! Indeed, it seems it's possible to install on my printer and a [small HW modification](https://github.com/KevinOConnor/klipper/issues/2654) should be feasible to have this parameter set by UART  
> **username_1**: @username_0 of course you become dependent on a Raspberry Pi 3 or later and Octoprint... but I'm happy with it.  

---

