How to Upgrade to Auto Bed Leveling – Ender 3 & More
Many users who started with manual bed leveling have thought about upgrading to auto bed leveling on their 3D printer but aren’t sure how to do it. This article will take you through how to upgrade your manual leveling to automatic bed leveling.
To upgrade to auto bed leveling, you want to clean up your print bed then manually level it. Install your auto bed leveling sensor using the brackets and kit, then download and install the relevant firmware. Configure your X, Y & Z offsets and start the auto leveling process on your machine. Adjust Z offset afterwards.
There are more details that will help you with upgrading your bed leveling, so keep reading for more.
How Does Auto Bed Leveling Work?
Auto bed leveling works by using a sensor that measures the distance between the sensor and the bed itself, the compensating for the distance. It keeps the X, Y & Z distances saved within the 3D printer settings so you can ensure that your bed levels accurately after installing.
It does require setting up and some manual leveling before it works as it should. There is also a setting called the Z-offset which provides an extra distance to ensure that when you “Home” your 3D printer, the nozzle actually touches the print bed.
There are a few types of auto bed leveling sensors for 3D printers:
I wrote an article called Best Auto-Leveling Sensor for 3D Printing – Ender 3 & More which you can check out for more information.
Some of these products have different types of sensors such as the BLTouch having a reliable contact sensor that is easy to use, precise, and compatible with different print beds.
The SuperPinda which is usually found in Prusa machines is an inductive sensor, while the EZABL Pro has a capacitive sensor that can detect metallic and non-metallic print beds.
Once you set up your auto bed leveling, you should be able to get some great first layers, which results in more success with 3D prints.
This video below is a pretty good illustration and description of how auto bed leveling works.
How to Set Up Auto Bed Leveling on a 3D Printer – Ender 3 & More
- Clean up any debris from the print bed and nozzle
- Manually level the bed
- Install your auto leveling sensor using the bracket and screws, along with the wire
- Download and install the correct firmware for your auto leveling sensor
- Configure your offsets by measuring the X, Y & Z distances
- Start the auto leveling process on your 3D printer
- Add any relevant start code to your slicer
- Live adjust your Z Offset
1. Clean up Debris from Print Bed and Nozzle
The first step you want to do for installing automatic bed leveling is to clean up any debris and filament from the print bed and the nozzle. If you have debris left over, it can affect the leveling of your bed.
It can be a good idea to use isopropyl alcohol with a paper towel, or use your scraper to remove debris. Heating up the bed can help with getting stuck filament off the bed.
I’d also recommend using something like the 10 Pcs Small Wire Brush with Curved Handle from Amazon. One user who purchased these said it worked great on his 3D printer to clean the nozzle and heater block, though they aren’t the most sturdy.
He said since they are pretty cheap, you can treat them like consumables.
2. Manually Level the Bed
The next step after cleaning up your bed is to manually level it so things are at a good level overall for the auto leveling sensor. This simply means you home the 3D printer, adjust the leveling screws on the four corners of your bed and do the paper method to level the bed.
Check out the video below by CHEP on how to manually level your bed.
I also wrote a guide on How to Level Your 3D Printer Bed – Nozzle Height Calibration.
3. Install Auto Leveling Sensor
Now we can install the actually auto leveling sensor, the BL Touch being a popular choice. Before you do this, you should disconnect the power supply for safety reasons.
Your kit should include a bracket along with two screws that are designed to fit on the version of 3D printer you chose. There are two holes on the hotend bracket that the sensor’s bracket can fit into.
Take your two screws and install the bracket on your 3D printer then install the sensor on the bracket. It’s a good idea to install the wire before you put it on the bracket.
You’ll then need to remove any cable ties from your wiring and remove the screws from the electronics cover on the based of the 3D printer. There should be one screw at the top and three at the bottom.
Getting the wiring through the main wire sleeve that holds all the wires can be difficult. One technique done by CHEP is to get something like some copper wire, loop the end of it and feed it through the wire sleeve.
He then connected the loop to the BL Touch connectors and fed it back through the wire sleeve to the other side, then attached the auto leveling sensor’s connector to the mainboard.
There should be a connector on the mainboard for an auto bed leveling sensor on the Ender 3 V2. For the Ender 3, it requires extra steps because of the space on the mainboard.
When you do put the electronics cover back on, make sure you aren’t pinching any wires and ensure the wiring is away from the fans.
You can follow this video guide by Teaching Tech for the Ender 3 and wiring. It requires 3D printing a BL Touch Mount (Amazon), as well as an Ender 3 5 Pin 27 Board for BL Touch.
When you turn your 3D printer on, you’ll know the sensor is working through the light and it clicking twice on the print bed.
4. Download & Install Correct Firmware
Downloading and installing the correct firmware file is the next step to setting up auto bed leveling sensor on your 3D printer. Depending on what mainboard you have, you’ll find a specific download for your BLTouch or other sensor.
One example for the BL Touch is the Jyers Marlin releases on GitHub. It’s a reputable and popular firmware that many users have downloaded and installed successfully.
They have specific downloads for the Ender 3 V2 for a BLTouch. If you have a different 3D printer or leveling sensor, you should be able to find the file either on the product website or on a place like GitHub. Make sure to choose the version that’s compatible with your mainboard.
Check out the Official Creality Latest Firmware for the BLTouch. These contain the .bin file like the “E3V2-BLTouch-3×3-v4.2.2.bin file which is for the Ender 3 V2 and a 4.2.2 board.
You simply copy it to an SD card, shut off power, insert the SD card into your printer, put the power on and after 20 seconds or so, the screen should come on meaning it’s installed.
5. Configure Offsets
This is needed to tell the firmware where the sensor is relative to the nozzle to give it an X and Y direction and Z offset. With the Jyers firmware on the Ender 3 V2, this is how the steps are done.
First you want to measure roughly how far the BLTouch sensor is away from the nozzle and input this value into your 3D printer. Once you have your measurement for the X direction, navigate to Main Menu > Control > Advance > Probe X Offset, then input the distance as a negative value.
In a tutorial video, CHEP measured his distance as -44 for reference. After that, go back and click on “Store Settings” to store the info.
We want to do the same thing for Y as well.
Navigate to Main Menu > Control > Advance > Probe Y Offset. Measure the distance in the Y direction and put in the value as a negative. CHEP measured a distance of -6 here for reference. After that, go back and click on “Store Settings” to store the info.
At this point, the BL Touch becomes the Z stop switch so you can move your existing Z endstop switch down. Now we want to home the printer so it levels at the center of the bed.
Navigate to Main Menu > Prepare > Auto Home to ensure the sensor is homed. The print head move in the X and Y direction to the center and press down twice for the Z direction. At this point, it is homed.
Lastly, we want to set up the Z axis.
Navigate to Main Menu > Prepare > Home Z-Axis. The printer will go to the center of the print bed and probe twice. It will then go to where the printer thinks 0 is and probe twice, but it won’t be actually touching the bed surface so we need to adjust Z-offset.
Firstly, you should enable “Live Adjustment” then give a rough measurement to see how much your nozzle is off the bed. Once you do that, you can input the value into the Z-offset to lower the nozzle down.
For reference, CHEP measured his distance at -3.5 but get your own specific value. You can then put a piece of paper under the nozzle and use the microsteps feature to lower the nozzle down further until the paper and nozzle have friction, then click “Save”.
6. Start Auto Leveling Process
Navigate to Main Menu > Level and confirm the level to start leveling. The print head will go around probing the bed in a 3 x 3 way for 9 total points to form a mesh. Once leveling is complete, click on “Confirm” to save the settings.
7. Add Relevant Start Code to Slicer
Since we are using the BLTouch, the instructions mention to input a G-Code command in the “Start G-Code”:
M420 S1 ; Autolevel
This is necessary to enable the mesh. Simply open up your slicer, for this example we’ll be using Cura.
Click the downward arrow beside your 3D printer and select “Manage printers”.
Now you select “Machine Settings”.
This brings up the “Start G-code” where you input the command “M420 S1 ; Autolevel”.
This basically pulls in your mesh automatically at the start of each print.
8. Live Adjust Z Offset
Your bed won’t be perfectly leveled at this point because we need to do an extra step of live adjusting the Z-offset.
When you start a new 3D print, there is a “Tune” setting that allows you to live adjust your Z-offset. Simply select “Tune” then scroll down to Z-offset, where you can change the Z-offset value for better leveling.
You can use a 3D print that extrudes a line of filament around the outer edge of the bed and use your finger to feel how well the filament adheres to the bed. If it feels loose on the build surface than you’ll want to “Z-Offset Down” to move the nozzle down and vice versa.
After you get it to a good point, save the new Z-offset value.
CHEP goes through these steps in more detail so check out the video below to see how to do this for your 3D printer.
Is Auto Bed Leveling Worth It?
Auto bed leveling is worth it if you spend a lot of time leveling your bed. With the right upgrades like stiff springs or silicone leveling columns, you shouldn’t have to level your bed very often. Some people only have to re-level their beds every few months which means auto bed leveling might not be worth it in those cases.
It doesn’t take too long to manually level a bed with experience, but it can be troublesome for a beginner. Many people do love auto bed leveling after installing a BLTouch with the relevant firmware.
One user mentioned that it’s very worth it to them because they don’t have to worry about leveling the bed perfectly. Another user who was on the side of manually leveling your own bed said they got a BLTouch and prefers it over manual leveling.
They also are using Klipper firmware instead of Marlin which has some great features that people enjoy. It’s also better if you try out different build surfaces because it’s easier to swap since the auto leveling kicks in.
Personally, I still manually level my bed but I have 3D printers that have assisted leveling that make it more consistent over time.
If you experience leveling problems, I wrote an article called How to Fix Ender 3 Bed Leveling Problems – Troubleshooting
I’ve also heard stories of people having issues with getting good leveling, so things don’t always go perfectly with auto bed leveling, but that is most likely due to user error, or buying auto bed leveling sensor clones.
Some of the benefits of auto bed leveling are:
- Improvement in the success rate of 3D prints
- Saves time and hassle of leveling, especially if you don’t have experience with it.
- Reduces potential damage to the nozzle and build surface from scraping.
- Compensates well for warped bed surfaces
If you don’t mind leveling your bed from time to time and you don’t want to spend extra on your 3D printer, then I’d say auto bed leveling isn’t worth it, but many people say it’s worth it in the long run.
Auto Bed Leveling G-Codes – Marlin, Cura
Auto bed leveling uses several G-codes used in auto bed leveling. Below are the common ones you must be familiar with and their parameters:
- G28 – Auto Home
- G29 – Bed Leveling (Unified)
- M48 – Probe Repeatability Test
G28 – Auto Home
The G28 command allows homing, a process that allows the machine to orient itself and prevents the nozzle from moving out of the print bed. This command is performed before every print process.
G29 – Bed Leveling (Unified)
The G29 starts the automatic bed leveling before printing and is usually sent after the G28 command since the G28 disables bed leveling. Based on Marlin firmware, different parameters surround the G29 command depending on the leveling system.
Here are the bed leveling systems:
- Unified Bed Leveling: It is a mesh-based auto bed leveling method that uses the sensor to the print bed at a specific number of points. However, you can also input measurements if you don’t have a probe.
- Bilinear Bed Leveling: This mesh-based auto bed leveling method uses the sensor to probe the rectangular grid at a specific number of points. Unlike the linear method, it creates a mesh ideal for warped print beds.
- Linear Bed Leveling: This matrix-based method uses the sensor to probe the rectangular grid at a specific number of points. The method uses a least-squares mathematical algorithm compensating for the print bed’s single-direction tilt.
- 3-Point Leveling: This is a matrix-based method in the sensor probing the print bed at three different points using a single G29 command. After measurement, the firmware generates a tilted plane representing the bed’s angle, making it best suited for tilted beds.
M48 – Probe Repeatability Test
The M48 command tests the sensor for precision, accuracy, reliability, and repeatability. It is a necessary command if you use different strobes as they come in different properties.
For those using the BLTouch sensor, below are a few G-codes that are used:
- M280 P0 S10: To deploy the probe
- M280 P0 S90: To retract the probe
- M280 P0 S120: To do a self-test
- M280 P0 S160: To activate alarm release
- G4 P100: delay for BLTouch