Unified Firmware – BLTouch/CRTouch Settings

Disclaimer: #

This information is provided as a courtesy to users who would like to use our Unified Firmware on a machine with a BLTouch device installed. We do not provide free technical support for the BLTouch/CRTouch, as this is not a product that we sell or use regularly. We offer a competing product called the EZABL Pro, which we recommend as an alternative.

This information may be out of date, so please check with the manufacturer for current, up-to-date installation information. If you have information to add regarding this subject, please let us know by submitting a ticket.

CRTouch VS BLTouch #

The CRTouch is a clone of the BLTouch and it functions identically to the original BLTouch sensor. Any guides and information about the BLTouch apply to the CRTouch and the CRTouch is setup in our firmware using the BLTouch settings.

Before we begin… #

  • Some printers may require the use of an LCD conversion kit in order to install our Unified Firmware. In particular, printers that come with touchscreen displays will not be able to use our firmware without swapping the touchscreen to a 12864 display. This is noted in the firmware where applicable, and if you have any questions, check with us first.
  • Otherwise, our firmware is designed with the stock printer hardware in mind. In cases where the printer comes from the manufacturer with a bed-leveling probe (and unless otherwise noted), our firmware will assume that you have it installed by default. For example, our Ender 5 Plus firmware assumes that you have the stock BLTouch device installed, and there are options specifically to disable it or use an EZABL instead.
  • We encourage you to read our firmware’s configuration.h file in its entirety. There are lots of neat features and options to learn about in the configuration file, and we recommend taking a few minutes to read the whole thing.
  • This document refrains from using direct line numbers, as we have lots of variations of our configuration.h file. ArduinoIDE and VSCode both have “search” or “find” features you can use to locate specific keywords. This feature can be found with the keyboard shortcut CTRL+F.

Basic Firmware Settings: #

1. Enable BLTouch and set the wiring information (where needed) #

Each version of the firmware has a section for “Community Features” near the bottom of the user-configurable options of configuration.h. There is a setting to enable the BLTouch directly, and another to specify the data pin(s). For example:

// If you want to use the BL-Touch uncomment the BLTOUCH line below and uncomment #define CUSTOM_PROBE above and then enter in your offsets above in the CUSTOM PROBE section.
#define BLTOUCH
// If you are using the 5 pin header for all the BL Touch connections, uncomment the below line

Both of these options need to be enabled by removing the leading slashes (//) from those lines as seen above. If you are following the manufacturer’s wiring instructions, the default setting for the pin selection is usually correct. If you are using your own wiring or a non-standard mainboard, please check the manufacturer’s documentation for the correct Marlin settings to use.

2. Custom Probe and Nozzle-to-Probe Offsets #

Once we have the BLTouch enabled, we need to tell the printer where the probe is in relation to the nozzle. To accomplish this, we need to enable the CUSTOM_PROBE setting, which in turn enables the custom nozzle-to-probe offsets for use.

The CUSTOM_PROBE option is usually available towards the beginning of the configuration file, in the “EZABL Mounts” section as seen here. Enable it as shown:

// EZABL Probe Mounts - Uncomment the mount you are using for your EZABL to enable it in the firmware.
//#define CR10_OEM
//#define ENDER3_OEM
//#define ENDER3_V2_OEM
//#define ENDER3_MAX_OEM
//#define ENDER5_OEM
//#define ENDER6_OEM

Nozzle-to-Probe Offsets tell the printer where the tip of the probe is so that it ensures the probe stays within the bed’s limits during probing procedures. This setting follows a diagram and instructions detailing its use. By default, the nozzle-to-probe offsets are set to generic values. The setting is disabled, so it needs to be enabled as shown:

#define NOZZLE_TO_PROBE_OFFSET { -10, -10, 0 }

Measure the distance from the tip of the nozzle to the center/tip of the probe in X and Y directions ONLY. These measurements need to be in millimeters (mm). Enter the X and Y values in place of the defaults.

Do NOT use a Z value for nozzle-to-probe offsets, always leave the Z value at zero (0).

Click here for additional information about nozzle-to-probe offsets.

Additional Settings and Features #

We also have two additional settings of interest. These are shared with the EZABL, and since the EZABL is our product, we have them named as such. These two features do work with the BLTouch and other bed-leveling probes. They control the number of data points the probe takes, and the “margin” around the edge of the bed to account for any obstructions that might be present when using binder clips/glass beds:

// EZABL Advanced Settings - EZABL_POINTS & EZABL_PROBE_EDGE are also used for other probes

// Probing Grid Points - If you want more or less EZABL probe points change the number below, use odd numbers. Total points is # times #.
#define EZABL_POINTS 5

// Probe Edge - How far from the edge of the bed to probe from. Use 50 if using binder clips. This also sets the edge inset value for MANUAL_MESH_LEVELING.

Our firmware is a slightly-modified version of Marlin. If there is a setting you do not see present in configuration.h, please also check the configuration_adv.h and configuration_backend.h files to see if the setting is present. You can also add/modify/change our firmware as you see fit, and since it is based on Marlin, anything you can do in Marlin you can also do in Unified Firmware.

Was this article helpful?