# Can't make Ender 3 V1 Level

I have an Ender 3 V1 with a glass Creality plate. I was having difficulty using manual levelling and my prints were struggling, so I ordered a 3DTouch. I have installed the 3DTouch and used Creality's BLTouch firmware. But my bed is still not level.

So my build is an Ender 3 V1 with:

• Extruder upgraded to all-metal extruder
• Capricorn Tubing
• Yellow bed springs

I manually levelled my bed using my 3DTouch. I used the G30 command in Pronterface to probe each corner of the plate. At each corner, I would adjust the knob until the 3DTouch read 0.0. I did this iteratively multiple times until I thought it was reasonably level. The four corner values were something like 0.1, 0.0, -0.2, and 0.3 mm.

I have also put a straight edge with an Angle Finder Phone App. The bed is quite level. It reads 0, 1, or 2° depending on how I place the level. X-axis gantry has a 1° tilt.

Here is my current bed levelling mesh:

After doing this, I added G29 after G28 in my starting G-Code in Cura. I sliced a model from Thingiverse that had 5 squares and some lines. Here are the results:

I am using:

• Filament : PLA
• Bed Temp : 60 °C
• Nozzle Temp : 200 °C

Some miscellaneous notes:

• The bed was cleaned thoroughly prior to use
• I rotated the bed 90° and the print looked the exact same way
• I ensured that the bed soaked in some heat for some time prior to printing
• I have set my Z offset to -1.800 mm
• The frame and components seem to be square and tightened down. Nothing is shaking around and seems to be in order.

I would really appreciate help on this. I'm really not sure what to do next. I've been really excited about 3D printing and I hope I can find a solution to this.

Leveling using CHEP's video

So I have rebuilt my 3D printer using CHEP's video. I noticed that one or two things were off compared to how it was supposed to be. I will be doing some test prints to see if that actually fixed things. I am hopeful.

I did a mesh before any other changes, and the slant is very clear now. See below. I believe one of the plates on the gantry wasn't completely straight.

Leveling after rebuilding printer

Here is my latest mesh, after rebuilding the printer and then re-levelling its bed manually.

These are the results of the print. I had to change my Z offset to -1.60 mm. The broken line is my fault. It was caused by my finger. The focus is the corners. As I mentioned, this is after rebuilding my printer.

Edit

I would like to have more probing points than Creality's 3x3 grid. To my understanding, Creality's source code is not available, and so I will be rolling my own with Marlin 2.0. I downloaded the latest Marlin from https://github.com/MarlinFirmware/Marlin/releases, and copied the 4.2.2 Creality configuration from the default Configurations. I then changed the following:

1. I ensured #define PDITEMP is not commented so that I can do PID tuning of the nozzle.
2. Similar to 1., I ensured that #define PIDTEMPBED is not commented so that I can do PID tuning of the bed.
3. I commented #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN since I will be using the 5-pin BLTouch port that is on my 4.2.2. board.
4. I uncommented #define USE_PROBE_FOR_Z_HOMING since I removed my z-axis endstop and want to use my 3DTouch as the z endstop.
5. Uncommented #define BLTOUCH since the 3DTouch is a BLTouch clone.
6. Changed my x and y offsets in the setting #define NOZZLE_TO_PROBE_OFFSET { -42, -8, 0 }. I left the z-offset 0, since I will be using the tuning tool to adjust that and observe the squish. For the x and y, I measured the distance between my probe and the nozzle using a digital caliper.
7. I adjusted the probe margin from 10 to 15, since I have clips that previously would interfere with the 3DTouch. 15 should give more distance. #define PROBING_MARGIN 15
8. I enabled and set MULTIPLE_PROBING to 3. I'm paranoid about the current accuracy, and am willing to see if that improves anything at the expense of a few additional minutes. #define MULTIPLE_PROBING 3. I think 2 should be fine for general use.
9. Uncommented #define Z_MIN_PROBE_REPEATABILITY_TEST. I want to test my 3DTouch and uncommenting allows the use of M48 to test it.
10. Uncommented #define PROBING_FANS_OFF, #define PROBING_ESTEPPERS_OFF, #define PROBING_STEPPERS_OFF, #define DELAY_BEFORE_PROBING 200. The documentation this may improve probing results. I'm all in.
11. Uncommented #define NO_MOTION_BEFORE_HOMING and #define HOME_AFTER_DEACTIVATE.
12. Uncommented #define AUTO_BED_LEVELING_BILINEAR
13. Uncommented #define RESTORE_LEVELING_AFTER_G28. This is to ensure the mesh is applied even after G28, which disables the mesh otherwise.
14. Ensures that this setting was 10. #define DEFAULT_LEVELING_FADE_HEIGHT 10.0
15. I set the following : #define GRID_MAX_POINTS_X 7. Ensures a 7x7 mesh grid is created. This could be more or less. 49 points is an improvement over Creality's 9, although a bit much. Worthwhile in my case.
16. Uncommented #define EXTRAPOLATE_BEYOND_GRID. I was actually wondering if this was causing some of the inconsistent prints near the edge.
17. Uncommented #define LCD_BED_LEVELING. This is to unlock more options for ABL in the menu.
18. Uncommented #define LEVEL_BED_CORNERS. This should make moving between corners for manual levelling easier.
19. Uncommented #define LEVEL_CORNERS_USE_PROBE. This is to achieve exactly what I was doing with G30 in Pronterface. I changed to tolerance with #define LEVEL_CORNERS_PROBE_TOLERANCE 0.03
20. Uncommented #define Z_SAFE_HOMING, which is important for the BLTouch.
21. Changed my PLA profile according to what I have determined to be best with #define PREHEAT_1_TEMP_HOTEND 200 and #define PREHEAT_1_TEMP_BED 60

I had to comment #define BLTOUCH_SET_5V_MODE for things to compile. I also had to modify #define LEVEL_CORNERS_INSET_LFRB { 30, 30, 45, 45 }, due to the margin I set as well as the offset of my touch. Otherwise, the above configuration was fine, in terms of compilation.

I'll post back with the results.

Here are the results for the M48 3DTouch test. Are these values good?

Measurement Value
Mean 0.063667
Min 0.061
Max 0.068
Range 0.007
STD 0.002478

I reduced the speed of the probing in half in order to make the probing more accurate. This was done by changing from #define Z_PROBE_FEEDRATE_FAST (4*60) to #define Z_PROBE_FEEDRATE_FAST (2*60). I also made the mesh grid 8x8 because might as well.

These are my M48 repeatability results. Interesting to compare to the above table which probed at double the speed.

Measurement Value
Mean 0.005500
Min 0.002
Max 0.010
Range 0.008
STD 0.001908

I also changed the filament (brand new). Just as another variable to modify.

The following prints are the result.

The mesh before this print is as follows:

Levelling the X-Axis Gantry

As Oscar in the comments has mentioned, I have read some other forum posts that described the cause of uneven lines and similar inconsistencies as what I am noticing, as being due to the X-axis Gantry that moves up and down as not being level.

I used a digital caliper and measured the x axis gantry relative to the frame of the 3D printer. So for example, I put my caliper against the base metal extrusion and then against the x-axis gantry. I did this on both sides.

The side without the Z-Axis lead screw (right side) was above the side with the Z-Axis lead screw (left side) by about 1.7mm. I'm surprised that CHEP and some other build videos never mentioned to check this, but it does seem logical to consider. Making the brackets flush is NOT adequate. When I do make it flush, then one side is higher than the other. The build videos say to make it flush. This will make things OFF.

To adjust this, I took off the gantry, slightly loosened the bolts on both side plates, so that it was stiff enough that it wouldn't move easily, but could make subtle adjustments by twisting it hard enough. I then put the gantry back on the printer, did some measurements and corresponding adjustments. I then carefully threaded the gantry off and tightened the plates.

Currently, my left and right side have a difference of .17mm. I figured I won't get anything better by hand. I'll do another test print tonight. 1.7mm vs .17mm is a reasonable difference.

• No problem, it is our job to gently teach newcomers the rules,. Note, you are encouraged to give as much information as possible if relevant to the question, your own research is much appreciated! Also, posting your own answers when you find them later is perfectly valid! You can even accept your own answer after 48 hours of posting! Remember SE works a little different, but in the end we want good questions with solid answers where the community votes on the questions and answers spreading their gratitude through reputation. Get the Q and A's coming! :-)
– 0scar
Dec 21, 2021 at 9:04

One red flag:

I have also put a straight edge with an Angle Finder Phone App. The bed is quite level. It reads 0, 1, or 2° depending on how I place the level. X-axis gantry has a 1° tilt.

"Level" in the sense of bed leveling does not have anything to do with being level relative to the earth's gravity. If your X axis is tilted but your bed isn't, there's your problem. They have to be square to each other, not level with respect to any external reference (you can operate your printer on its side or upside down for all it cares).

If you find that, no matter how much you try to tune the bed leveling, it keeps coming out different by the time you print, you probably don't have a problem with your bed but with the X axis gantry and Z motion system it's attached to. If the frame the Z carriages run up and down is not entirely square, or if the wheel tension is not right, the undriven side might not follow correctly with the driven side. This means sometimes positioning at the right (viewed from front) side of the printer will come out too high, and other times too low, depending on a lot of factors, the most obvious one being last direction of Z travel.

• Thank you. I really appreciate your response. I wanted to mention that I understand that level measurements are not significant. But I thought it was interesting enough to post about. My bed levelling was done on the basis of distance from the nozzle, and the level was just an observation and did not influence levelling. Thanks. I will try to further investigate the x-axis gantry that is moving up and down. The tilt on that was 1 degree, downwards towards the side with no z-axis. However, I found the bed to also have a tile of 1 degree to that side. Dec 18, 2021 at 23:27

You need to check the X gantry, the Ender design is flawed by using a single Z screw on one side. Please check the rollers and check the belt tension. All the leveling graphs show that the bed is lower on the right side (or the gantry higher), it could be that the rollers on the right post (when facing the printer) are causing the right side to be lower.

• Question for you. Do you think there is a problem with using G30 to level a bed? I noticed that even when I use my G30 approach, I seem to still end up with a slanted bed. Is there some flaw to the G30 approach? I tried searching for it online, but I pretty much found nothing about using G30 to manually adjust the knobs. But I thought it would be far more scientific and precise than the paper method. Dec 21, 2021 at 3:27
• Even with a 3DTouch, bed leveling needs to be done manually, I never use G30 or have used the past 6 years, instead I do a G28, lower the head to paper thickness between nozzle and bed, than de-power the steppers and manually tram the bed everywhere (corners and middle of the bed) so that it is as level as possible (note to use G28, move to a corner, move down and de-power multiple times). This ensures that the bed is in the same plane as the nozzle, unless the bed is really skew/bent this should work. When done you only have to set the correct Z offset and add G29 to the start G-code.
– 0scar
Dec 21, 2021 at 9:14
• @geekgeek4 The problem you are facing is not the G30 or manual leveling procedure, but most logically a mechanical issue. I'm not here to speak evil of the Ender design because it can work well when properly set up and tuned, but the design can lead to frustrations for new users when it does not perform up to par. P.S. note that comments are not here to last forever, you might see them disappear after a while when comments are addressed in the Q and A's. :-)
– 0scar
Dec 21, 2021 at 9:18