# Bed mesh makes first layer worse

**URL:** <https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786>\
**Category:** General Discussion\
**Created:** [February 20, 2023, 11:40pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786 "2023-02-20T23:40:42Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![aireq](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/aireq/32/4213_2.png) [@aireq](https://klipper.discourse.group/u/aireq)\
**Post date:** [February 20, 2023, 11:40pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/1 "2023-02-20T23:40:42Z")

</div>

### Basic Information:

Printer Model: Ender 3

```
- Microswiss DD + All Metal Hot End
- Dual Z Stepper
- PEI Spring Sheet Bed
- CR Touch

```

MCU / Printerboard: SKR Mini E3 2.0

### Describe your issue:

I just setup Klipper/Mainsail on my printer and I’ve been going to the process of creating the printer config and doing calibration.

I started by printing the Bed/Extruder Leveling test from Super Slicer and was having a hard time getting all corners to create a nice first layer. I noticed that the raised area of my bed mesh corresponded to the problem areas so I took that out of the equation and cleared the mesh. I then just leveled the bed by hand until all four corners generated nice first layers.

Then I ran the bed mesh calibration and this was the the result.

 ![PXL_20230220_122523690](https://global.discourse-cdn.com/free1/uploads/klipper/original/2X/0/0aad9809d43192369b9f9805ef2b90d783fceae5.jpeg)

So for some reason it thinks the left corners are higher then the 0.20mm layer height I was using in the calibration test. Naturally if I print the test with this mesh enabled I get gaps on the left side.

Here’s the bltouch section of my config. Although I actually have a CR Touch.

```auto
[bltouch]
sensor_pin: ^PC14
control_pin: PA1
x_offset: -50.00
y_offset: -8.00
z_offset: 1.70

probe_with_touch_mode: true
stow_on_each_sample: false

pin_move_time: 0.5
pin_up_touch_mode_reports_triggered: False

speed: 10
lift_speed: 20

samples: 1
sample_retract_dist: 5
samples_tolerance_retries: 3

[bed_mesh]
speed: 120
mesh_min: 30, 30
mesh_max: 205, 190
probe_count: 5, 5
algorithm: bicubic

[safe_z_home]
home_xy_position: 166.8, 118
speed: 75
z_hop: 5
z_hop_speed: 15
move_to_previous: false

```

I double checked my probe offsets. The probe is 50mm to the left and 8mm in front of the nozzle so this should be -50, -8 right? I’m never sure if I have the right sign with settings like this. It does appear to probe the correct spots on the bed.

I also made sure my X gbantry is level to the frame with these tools I designed:

> **[Ender 3 X Gantry Leveling/Alignment Tool by eric-anastas](https://www.thingiverse.com/thing:5839744)**
>
> This tool is used to align your the X Gantry on an Ender 3 with the base.See the video Alex Kenis created here:https://www.youtube.com/watch?v=AN0MlQMMew0&t=1354sIn this video Alex used CD cases to level the gantry. These tools perform the same...

Here are my results from running a PROBE\_ACCURACY test:

```auto
probe accuracy results: maximum 1.687500, minimum 1.685000, range 0.002500, average 1.685250, median 1.685000, standard deviation 0.000750
3:36 PM
probe at 166.800,118.000 is z=1.685000
3:36 PM
probe at 166.800,118.000 is z=1.687500
3:36 PM
probe at 166.800,118.000 is z=1.685000
3:36 PM
probe at 166.800,118.000 is z=1.685000
3:36 PM
probe at 166.800,118.000 is z=1.685000
3:36 PM
probe at 166.800,118.000 is z=1.685000
3:36 PM
probe at 166.800,118.000 is z=1.685000
3:36 PM
probe at 166.800,118.000 is z=1.685000
3:35 PM
probe at 166.800,118.000 is z=1.685000
3:35 PM
probe at 166.800,118.000 is z=1.685000
3:35 PM
PROBE_ACCURACY at X:166.800 Y:118.000 Z:5.000 (samples=10 retract=5.000 speed=10.0 lift_speed=20.0)
3:35 PM
PROBE_ACCURACY

```

Any other ideas? What else am I missing? Should I be using more or less probe points? Bicubic vs LaGrange?

---

<div class="post-metadata">

**Author:** ![Blake100](https://avatars.discourse-cdn.com/v4/letter/b/7c8e57/32.png) [@Blake100](https://klipper.discourse.group/u/Blake100)\
**Post date:** [February 21, 2023, 6:28pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/2 "2023-02-21T18:28:22Z")

</div>

Hello,

A quick question, do you have a line in your start print macro, (usually in mainsail.cfg) that recalls the bed mesh? Mine is below. I have my printer probe the bed before every print with “BED\_MESH\_CALIBRATE” If you would like to learn more, this video: [Klipper - BL Touch - Auto Bed Leveling - Creality Ender 3 V2 - Chris's Basement - 2022 - YouTube](https://www.youtube.com/watch?v=iEo7tJ0wbPU) from Chris Riley explains in great detail how to add a bltouch/crtouch to a klipper printer, particularly an Ender 3 variant. At 23:00 he explains how to setup your start print macro.

```auto
[gcode_macro START_PRINT]
gcode:
   # {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
   # {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
    # Start bed heating
  # M140 S{BED_TEMP}
    # Use absolute coordinates
    G90
    # Reset the G-Code Z offset (adjust Z offset if needed)
    SET_GCODE_OFFSET Z=0.0
    # Home the printer
    G28
    #Restore Bed Mesh
    BED_MESH_CALIBRATE
    # Move the nozzle near the bed
    G1 Z5 F3000
    # Move Nozzle To Edge Of Bed
    G1 X0 F3000
    G1 Y0 F3000
    # Move the nozzle very close to the bed and wait for print to start
    G1 Z0.15 F300

```

Happy Printing!  
Blake

---

<div class="post-metadata">

**Author:** ![EddyMI3D](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/eddymi3d/32/1981_2.png) [@EddyMI3D](https://klipper.discourse.group/u/EddyMI3D)\
**Post date:** [February 21, 2023, 6:36pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/3 "2023-02-21T18:36:55Z")

</div>

@Blake100 : Please:

![Format](https://global.discourse-cdn.com/free1/uploads/klipper/original/2X/6/643ab9def96b03089cfb0c194628129fcc96b3f8.png)

---

<div class="post-metadata">

**Author:** ![Blake100](https://avatars.discourse-cdn.com/v4/letter/b/7c8e57/32.png) [@Blake100](https://klipper.discourse.group/u/Blake100)\
**Post date:** [February 21, 2023, 7:23pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/4 "2023-02-21T19:23:51Z")

</div>

Hello @EddyMI3D,

I was wondering how to make the code look like _code_, thanks so much for the help!

Happy Printing,  
Blake

---

<div class="post-metadata">

**Author:** ![Sineos](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/sineos/32/18_2.png) [@Sineos](https://klipper.discourse.group/u/Sineos)\
**Post date:** [February 21, 2023, 7:45pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/5 "2023-02-21T19:45:57Z")

</div>

This is a know and unfortunately unsolved topic: See [Experimental mesh leveling changes](https://klipper.discourse.group/t/experimental-mesh-leveling-changes/3401)

To sum it up:

- Known to exist
- So far no systematic error in the compensation logic has been identified
- There are user reports who have successfully solved their issue. In all cases it has been mechanical issues (twisted / bent extrusion profiles) that lead to a non linear deviation between probed point and nozzle coordinates

In addition there is a first attempt to solve such issues via software: [[Testers needed] X twist compensation](https://klipper.discourse.group/t/testers-needed-x-twist-compensation/6567)

---

<div class="post-metadata">

**Author:** ![Blake100](https://avatars.discourse-cdn.com/v4/letter/b/7c8e57/32.png) [@Blake100](https://klipper.discourse.group/u/Blake100)\
**Post date:** [February 21, 2023, 9:06pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/6 "2023-02-21T21:06:31Z")

</div>

Hello again,

I noticed that in my stepper z section I may have something that you don’t have. I have the position minimum set less than my z offset. My z offset is 4.11, and my postion\_min at -6. This could be an issue for you. I found this in the video listed below. Try out said video. He describes how to setup a bltouch with klipper. I was having bltouch issues setting up klipper on a machine, and this video solved them. Just backup your config, and follow his instructions, and see if it is solved. It helped me, here it is: [BL Touch complete setup for Klipper! Maximize your probed bed mesh! - YouTube](https://www.youtube.com/watch?v=5vmjBXvY6BA&t=201s)

If you would like to, you can also try out my bltouch settings. However, please PLEASE change the necessary settings to suit your printer. I would hate for you to enter my settings without changing anything, and then hurting you printer. Here are my settings, getting great first layers:

```auto
########################################
# BLTouch configuration
########################################

[bltouch]
sensor_pin: ^PB2 #change this to your previous value
control_pin: PB1 #change this to your previous value
x_offset: -55 #change this to your previous value
y_offset: -14 #change this to your previous value
samples: 2
speed: 2
z_offset: 4.11 #change this to your previous value
stow_on_each_sample: true
probe_with_touch_mode: false

[safe_z_home]
home_xy_position: 150,150 #change this to your previous value
speed: 50 
z_hop: 10
z_hop_speed: 5

[bed_mesh]
speed: 80
horizontal_move_z: 8
mesh_min: 10, 10 #change this to your previous value
mesh_max: 261, 295 #change this to your previous value
probe_count: 6,6 #this is the number of probing points on X then Y axis
mesh_pps: 2,2
fade_start: 1
fade_end: 10
fade_target: 0

```

Hope this helps,  
Blake

---

<div class="post-metadata">

**Author:** ![fuzelet](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/fuzelet/32/9528_2.png) [@fuzelet](https://klipper.discourse.group/u/fuzelet)\
**Post date:** [January 17, 2024, 9:29pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/7 "2024-01-17T21:29:03Z")

</div>

not sure if you ever got this resolved as its been a while, but one thing I had to do on all my printers running klipper, etc that has bed screws is run the command, screws\_tilt\_calculate. Not sure if you have gone through that process which uses your probe(bltouch/crtouch) to probe the respective bed screws and tells you how to adjust them to “level” your bed, so to speak. you’ll need to add some stuff to your printer.cfg but should help.

[https://www.klipper3d.org/Manual\_Level.html#adjusting-bed-leveling-screws-using-the-bed-probe](https://www.klipper3d.org/Manual_Level.html#adjusting-bed-leveling-screws-using-the-bed-probe)

---

<div class="post-metadata">

**Author:** ![EddyMI3D](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/eddymi3d/32/1981_2.png) [@EddyMI3D](https://klipper.discourse.group/u/EddyMI3D)\
**Post date:** [May 10, 2024, 8:59pm UTC](https://klipper.discourse.group/t/bed-mesh-makes-first-layer-worse/6786/8 "2024-05-10T20:59:36Z")

</div>


