E3V2 Max W. Sprite extruder - Print always off center but can't seem to find the issue

Basic Information:

Printer Model: E3 V2 Neo Max - Linear rails XY
MCU / Printerboard: BTT SKR Mini
klippy.log (view attachment)

So I have an Enter 3 Neo Max with linear rails. So my XY are a bit weird.

I can print pretty good, but when I did the BL touch, it would probe at the right coordinates, but the prints would always be where the BL would be, so the mesh was always wrong as it would be printing at the nozzle and not the BL touch probed area. Meaning that, while my bed is pretty flat, I still have adhesion and layer height issues as I’m not on the actual right path.

I’ve been fighting with this for ages, I’m at the point where I am not looking at this with a clear mind and need help to see what I am overlooking. Any help is very appreciated. I removed unneeded stuff to make this smaller for you all.

Below are the configs and physical print area etc. If you guys need anything else, please ask and I’ll get you what I can.

The physical printer can do the following

X -25 end stop, -24 print area X 285 Physical limit, 265 Print area

Y -5 End stop, 20 Print Y 300 physical limit, 300 Print (the probe is in front of the nozzle, so i am aware that there are limitations due to me getting a shorter rail than I should have and limiting my movement.

I have the Sprite Pro extruder, the BL offset is X -32 Y -41.

Attached is the Klippy.log

klippy.zip (931.6 KB)

I’m not sure that I understand what you are reporting.

position_endstop = -25
position_min = -25
position_max = 285

This means that for Klipper your bed starts (X=0) +25mm away from the endstop position and goes up to 285. Klipper itself has no information how big your bed actually is and it does not care. Klipper only cares about the kinematic limits and endstop positions.
To make your print centered, you need to correctly setup your bed in the slicer.

FWIW, the points you actually probe are “control points”, the actual mesh is interpolated between them.
A known effect is a so-called “location bias” that is caused by two contributors:

  • The offset between your nozzle and the probe
  • A twisted axis (mechanical issue)
    The Ender 3 printers seem to suffer from this mechanical issue pretty often. It can be mitigated with the Axis Twist Compensation.

I wasn’t very clear, sorry. Basically, on the gcode and slicer, it slices in the middle of the bed. But when I print, the X offset is off by a bit.

The stepper_x issue, I may be interpreting things incorrectly. The end stop is at -25 on X and the printer’s physical max is 285. But the printable surface is actually only from -25 to 265, giving a physical print area of 290mm and a physical area of 310mm.

The end stop is positioned at -25 and you could technically print with the end stop pushed, not sure if it lets you or not… But we could use -24 for printing if so…

So if I put the end stop at 0, but keep position_min= -25, which is the end stop. Would work?

I put that there as I thought the printer wanted to know where the end stop was, and it’s at -25.

Edit: I tried it out, when I put it as 0, it will probe at that point as well, so it drives the probe in the bed. This is where I assume I need to modify the bed_mesh?

As for the offset, it’s definitely properly configured, I manually tested it as well as compared it to a few other configs with this extruder / CRTouch combo.

I did, without knowing what it was called, the Axis Twist compensation beforehand by trial and error and added it as part of my tuning routine.

How big is the x offset?
There must be something set incorrectly…
How is your bed defined in the slicer?
If you move the nozzle to X=0 will it be above the left edge of the bed or where exactly will it be?
Because why is the endstop defined with -25 when it still is above the bed/print area?
A photo of the bed and endstops would be nice.

I think the issue is me misunderstanding the setup.

To me, as - 25 was where the end stop was, thats where I set it. But now I’m seeing that’s wrong. Setting it up at 0 made it start at the right spot, but now it’s about the end of the X axis.

The bed is a E3 neo Max, so it’s like 330x330 but usable stock is like 300x300. I lost a bit on the Y though as my linear rails are about half inch too short to get full range without losing the guide.

I think I’m in the right path. I think once I set the X and Y to 0 and put the mesh at the right areas it will fix it?

Still a lot to figure out.

If you see anything super wrong on the config I posted, let me know…

The change I’ve done was change the X offset from -25 (physical switch) to 0. That actually seems to have solved a few issues.

Will update once I get back and do more testing.

X=0 and Y=0 is the point on the printable area that is reached by the nozzle and is most to the left and front as possible.
From that point you measure the maximum of X and Y and enter this in your config and slicer.

1 Like

Maybe this helps

So essentially you are dealing with 3 different coordinate systems:

  • The kinematic limits and the origin are set via the Klipper config
  • The effective size needs to be set in the slicer → The “center” as seen by the slicer is relative to the effective size and not necessarily to the bed size. It makes no sense to provide a bigger bed to slicer that potentially cannot be reached by the nozzle
  • All values relate to the nozzle coordinates

You should somehow pin this picture as many users are confused by the different coordinate systems.


To make things a bit more complete; when I design a printer I use the centre of the print bed as the origin to ensure I have sufficient space for the nozzle (plus a few millimetres more past the edges of the bed) and then set the print origin to the lower left hand corner and figure out the other dimensions from there.

Good drawing and explanation and I agree with @LifeOfBrian that it should be in a “Knowledge Base”.


I just wanted to thank everybody for this help. I figured it out last night when the - 25 offset was mentioned.

As I changed the wheels to rails on the Y, I had to move the Y end closer by 15mm which allowed me to set the Y offset properly. What was happening was. On the Y axis, my end stop was at -5 but the print surface was at 15, so I moved the end stop sensor and just made it 0. So now X and Y are at 0,0 on the print bed.

I noticed that when doing the mesh, it was going out of bounds. I was under the impression you did not need to put the probe offset in there but at the end I did.

Slicer was updated to the new dimensions and the print actually went in the middle! Not to mention my first layer is now perfect! As my offsets were pushing the nozzle over. I kept printing 25mm off the map, so my first layer was always wonky on the sides…

So the lessons I learned were.

  1. The offset is only there to go from end stop to bed. So odds are it should be zero or pretty low or none. Changing to linear rails will affect this if you are like me and got them about 10mm too short.

  2. The bed mesh should be your entire print area minus your BL touch offset.

  3. The spot were I was adding the offset on the capacities of the axis shouod have been placed in the Min / Max in the bed mesh.

  4. Ask questions on the Klipper forum before you spend a few mints fighting over something so simple.
    4a. This is why I’m not a programmer. I make mistakes and I don’t see them cause it was too simple.

Again, you guys are the best. Thank you all so, so so much. A ton of you had the right answer or right direction. The diagram you posted was amazing. While I only saw it later when I fixed it. I hope other people with BL touch CR touch print surface issues can reference this as there’s a ton of super important information. Even though it’s simple, it’s something that can be over looked as it seems simple but interpreted differently by others.


1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.