BLTouch
A BLTouch sensor will automate your 3D printer bed leveling. Read on to learn all you need to know about the BLTouch!
That might have been the way BLTouch sensors came onto your radar: If you use a non-metal bed but also want auto-leveling, these sensors are a great option. You also could have thought about adding one for its accuracy. After all, the original BLTouch readings have one of the lowest standard deviations of all auto-leveling sensor types.
Without further ado, let’s break down the BLTouch probe and show you all you need to know about this contact-based auto-leveling sensor.
What Is It?

According to Antclabs, the original manufacturer of the probe, “BLTouch is an auto leveling sensor for 3D printers that can precisely measure the tilt of (sic) bed surface.” This sensor works on any type of bed surface, be it metal, glass, wood, or something else entirely.
The sensor itself is fairly complex as far as bed sensors go. It consists of a microcontroller, a solenoid switch, and a pushpin probe that comes into contact with the bed. The original BLTouch uses a Hall sensor for high accuracy, and this sensor, in conjunction with the physical pushpin, is what allows it to be used with many bed types.
In a way, this sensor is equivalent to a microswitch, mounted on a servo arm, controlled by a servo motor. When the tool head lowers to “home” the nozzle on the Z-axis, the bed pushes the pushpin slightly upwards, triggering the Hall sensor, at which point the pushpin retracts and the tool head raises.
The BLTouch is one of the most accurate and reliable sensors available, so it’s no surprise that a few manufacturers such as MakerGear and CraftBot use this device on their high-end machines.
Now that we know exactly what we’re dealing with, let’s take a look at how the BLTouch compares to two other types of sensors out there.
Types of Sensors

Inductive Probe
The key difference between an inductive probe and the BLTouch is that the BLTouch sensor physically touches the bed in the leveling process. The inductive probe uses currents induced by magnetic fields to detect metal objects nearby, eliminating the need to physically touch the bed in order to sense it.
But therein lies the problem: Inductive sensors only work on metal beds, since they’re triggered only when in close proximity to metal. This might be a deal-breaker if glass is your preferred build surface.
Microswitch (Physical End Stop)
Let’s not discount the old-fashioned physical microswitch. Compared to the BLTouch, this option is less accurate and possibly less reliable in the long term, since the sensing depends on physical components that can wear over time (at least for the physical switches found on most FDM machines).
However, these physical switches give the other fancier sensors a run for their money when it comes to the cost and ease of configuration. Since physical switches are the simplest and earliest form of Z-homing sensors, they’re easy to obtain and set up.
Alternatives

Pinda Probe
The Pinda probe, developed by Prusa Research, is an inductive probe with the addition of a thermistor to account for variations in the bed temperature. The Pinda probe is specifically designed for the Prusa range of 3D printers, which are designed with special calibration points on the bed to help with leveling and skew correction.
The probe is said to be highly accurate for 3D printers, and though we couldn’t find any numbers, the reviews seem positive. This leads us to believe that this may be a good solution as well, at least if you have a metal bed.
Ezabl Pro
The Ezabl Pro is a custom manufactured capacitive sensor. It comes with a connector board that uses an optical isolator to prevent any high voltage damage to your mainboard in case of wiring mistakes.
With regards to precision, it’s been able to measure within a range of a thousandth of a millimeter, which is what 3D printers need. The Ezabl Pro also comes with helpful features like dual shielding, which prevents any interference with other signals.
The main downside with the Ezabl Pro would be the cost, which is about $65. On the bright side, it’ll work on glass beds.
Piezo Sensor
A Piezo sensor makes use of the Piezo-electric effect to capture changes in force, pressure, or strain, and convert these changes into electrical charge. Precision Piezo, a company in the UK, is one of the few companies making Piezo sensors for 3D printers. It has been said that these have close to 7-micron accuracy, which is quite precise for a 3D printer.
The advantage of the Piezo sensor is that the nozzle itself can be used as the sensing device, with no additional components needing to be mounted. Also, the Piezo sensor can be placed on the print head or below the print bed to sense the pressure. As far as price is concerned, it’s pretty much equivalent to the BLTouch.
Mounting the Probe

But back to the BLTouch. Before you get started with modifying your firmware for the BLTouch, you need to securely attach the device to your printhead. The BLTouch probe will need to be mounted as close to the printhead as possible. You can find many mount designs available for you to download directly, or if you’re in the mood to design your own, make sure to read the BLTouch documentation to get the correct measurements.
Some users run into an issue where the nozzle digs into the bed on one side and prints perfectly on the other. The reason that this happens is because the BLTouch is mounted at an angle with respect to the nozzle. So, when designing and mounting your hardware, make sure to have the BLTouch mounted perfectly square and aligned with the nozzle.
Once you’ve mounted the probe, make sure to note the distance between the probe of the BLTouch and the center of the nozzle in both the X and Y directions.
Configuring the Firmware

To get the BLTouch up and running, the printer’s firmware will need to be modified in a few places.
We’re using the latest stable version of Marlin 2.0 firmware, last updated in August 2021. Download and open the Marlin package in Visual Studio Code, the integrated development environment (IDE) from Microsoft. Once the marlin.ino file is uploaded to the IDE, navigate to the configuration.h tab.
The first step is to activate the BLTouch sensor by defining it. Remove the two forward slashes to uncomment the “define” statement:
#define BLTOUCH
The next step is to set the offset of the BLTouch using the X and Y distances you should have measured (from the nozzle) while mounting the probe. You also have to set the initial Z offset, which you can find by measuring the height difference between the tip of the fully extended probe and the nozzle. Of course, you can usually adjust this value later from your printer’s display, so if measuring proves a challenge, -2.5 is a safe value to start with.
When you’re sure of your measurements, insert the values into the corresponding lines below:
#define X_PROBE_OFFSET_FROM_EXTRUDER <X measurement> // X offset: -left +right [of the nozzle] #define Y_PROBE_OFFSET_FROM_EXTRUDER <Y measurement> // Y offset: -front +behind #define Z_PROBE_OFFSET_FROM_EXTRUDER <Z measurement> // Z offset: -below +above
Although you can adjust the Z offset on most 3D printers directly (depending on the Marlin configuration), the change to your offset isn’t always applied. To fix this, you can uncomment the line below:
#define RESTORE_LEVELING_AFTER_G28
Once you’re done with the offset, you’ll need to choose the type of bed leveling you want. There are a few different leveling methods that you can choose from, but we’ll be using the Bilinear method because it’s easy to get started with.
To choose an option, uncomment it by removing the slashes. Note that only one option can be left uncommented. Your code should look something like this:
//#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR #define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL //#define MESH_BED_LEVELING
You can also set the number of grid points you would like to probe; by default, it’s set to 9 points, which makes a 3 by 3 grid along the X- and Y-axes. The number of points can be increased for more accurate results, but keep in mind that the probing time will also increase as more are added. You can adjust the number of points in the grid in the lines below:
// Set the number of grid points per dimension. #define GRID_MAX_POINTS_X 3 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Finally, some users have reported that the BLTouch suffers from interference from the current in the hot end heater wires. As an extra precaution, you can uncomment the relevant line in Marlin to turn off heaters while the sensor probes the bed:
#define PROBING_HEATERS_OFF
Testing
Once the firmware settings are dialed in, you’ll need to check if the BLTouch is working as intended by running a basic test. Once that’s completed, you can get started with adjusting your Z offset. There’s a great video by 3DMakerNoob that takes you through the entire process step-by-step.
Configuring the Slicer

Once you’ve set up the device, you may want to configure your slicer (e.g. Cura) to automatically level your printer’s bed before every print. To do this, you can insert the “G29” G-code command into your slicer’s start G-code script after the “G28” command, which should already be included.
Adding in the “G29” command will tell your printer to conduct an automatic bed leveling sequence before every print. While this may yield a good first layer print-after-print, it also means your print’s starting time will be delayed by a few minutes. If you don’t want to wait, though, you can delete the “G29” command from your starting script and level the bed through your printer’s display when it’s most convenient.
Fakes & Issues

While the BLTouch is a great device that can improve your printing setup, there are a few things to be aware of before taking the plunge.
Spotting Fakes
The makers of the original BLTouch at Antclabs have mentioned that genuine sensors come with a QR code embedded in the PCB on the back. Also, it’s known that other manufacturers, including companies like TL Touch and 3D Touch, have made lower quality products, which results in poor customer experience. When buying online, make sure to purchase from an authorized reseller.
Disadvantages of the BLTouch
While the BLTouch is an extremely accurate leveling sensor, there are a few disadvantages to it as well.
When using the BLTouch, it’s important to keep the surface of the bed free of any debris. The mechanical probe senses the surface of the bed, and any damage or debris on the surface will result in inaccurate readings.
Another disadvantage of the BLTouch is that it takes up some memory on your printer’s mainboard. If you’re experiencing problems with your printer’s UI being slow or the printer is stalling, it may be due to the BLTouch.
Lastly, BLTouch devices can run into problems with some printers’ firmware. It’s critical that you wire your BLTouch correctly, and use compatible and up-to-date firmware. Also, it’s a good idea to update your firmware program regularly to avoid any problems and to get fixes as soon as they’re released.