bltouch ender 3

Adding BlTouch to Creality 3D Printer Ender 3 For Auto Bed Leveling

A couple of months ago I picked up Creality’s newest machine the Ender 3. Right out of the box it was a
great machine and I knew I was going to make it one of my main work horses for orders. I have been
very impressed with the print quality from day one so that is not something that I am going to be worrying
about or modding on this machine.

However, I did want to add auto bed leveling to the machine. I have used proximity sensors before but
never a BlTouch. So I decided that was the route I wanted to go with this machine. It was quite a process
to get this working on the Ender 3 so I wanted to share what goes into it to hopefully safe you some time
and frustration if this is something that you decide you want to do to your machine.
Before anything else, you will need to flash a bootloader to your Ender 3. I did make a tutorial that can be
found here on how to do this. On that hardware side you will need a mount. I did find one for the CR-10
that was close to working on the Ender 3 so I modified it a bit to work. I have uploaded the mount and it
can be downloaded here.

As far as wiring goes, this took quite a lot of work. I had never wired one of these before so I was already
unsure of how to do it. The majority of my time went into searching the web for some sort of pinout on
the board or diagram to help me see where I could grab power and signal from to allow the BlTouch
servo to work. Well I finally did end up finding a diagram on a Spanish website that gave me what I
needed to move forward with this.

I have edited the diagram slightly and it can be found below. I ended up splicing the ribbon cable for the
LCD and taking the signal for the buzzer to control signal sent to the BlTouch. Once you have done the
mount and the wiring the last thing to do is flash over custom Marlin for the Ender 3 with the BlTouch

I started out by flashing TH3 Studio’s universal firmware but that did not give me what I needed. The
flashing went well but I could only seem to install bed leveling if I was using his EZABL which was not
something I wanted to do. So I was forced to download a clean coppy of Marlin off of Github and do all of
the configuring myself.

I have not had to do this in well over a year so it was very tedious and time consuming. However, in the
end I have an Ender 3 with a BlTouch installed that has been printing beautifully for at least a month now
with perfect first layers. I will go ahead and save you the pain and upload my version of Marlin that can
be found here. Now if you want to use the same setup as me you can just flash it over without having to
manually do all of the configuration.

Hoping this will help some of you. It will be very similar for the Ender 2 as well and my Marlin file might
be a good starting point on that.

If your Z offset after flashing over my version of Marlin to your Ender 3 is not where you want it, I found a great video guide on how to adjust it here.

Hoping this will help save at least a good chunk of time for those that want to do this upgrade.

This is definitely an awesome upgrade that was worth the time.

About: Daniel

20 thoughts on “Adding BlTouch to Creality 3D Printer Ender 3 For Auto Bed Leveling”

  1. thanks for this guide, Only thing is my ender is only a couple of weeks old and the display cables are not coloured, All the wires are grey apart from one pink one?

  2. The newer model ender 3 no longer have a coloured lcd cable, All the wires are grey apart from one pink wire, This pink wire is the correct wire to cut.

  3. Hi Daniel,

    Thank you for your guide! Just installed the sensor, wiring was easy thanks to your instructions!

    But for one thing I‘m a bit dissappointed! You never quoted that flashing your firmware desactivates SD card support! I found the line to reactivate SD support only to find out that the sketch doesn‘t fit the Ender‘s memory anymore! So I had to deactivate some ‚options‘ (I hope I haven‘t deactivated something important….)
    Now with a sketch which takes 99% of memory I finally managed to flash with SD card support.
    Then I did Z offset correction. First prints were centered and there were no problems, but today I encountered 2 bad prints with massive warping. So I think the auto bed levelling is not functioning normally! I wonder if the Z offset has been forgotten.
    My question at this stage: do I have to auto bed level every print? Do I have to specify something in the gcode of every print?


    (And thans again for your good work!!)

    1. I completely blanked when making the video about the sd card. I have not used sd card in quite a long time on my machine due to Octoprint. I also had a user figure out what can be deleted to get the sd support working still. “Since I am using glass I changed bed leveling to 3-point which gave me enough memory to add SDCard support back till I get octoprint set up!” was another user. You should not have to level before every print. I level only after a failed print which is rare. It saves the leveling value to the eeprom which is why you do not have to redo it over and over every print. You are more than able to if you decide to do so (there is a gcode command you can enter into your start script) but it adds a lot of time and I do not find that necessary!

  4. Does your firmware still have the resume print feature? I heard TH3D is working on getting this into the Unified firmware, but no ETA right now.

    1. I think the main problem is the limited memory. There‘s a mainboard around which has double memory and an AT mega processor…

  5. I’m running into an issue where my BLTouch flags an error when trying to home Z. It also seems to move up, then up more, then up again before it fails out.

  6. Thanks for the guide, everything works well except the firmware doesn’t seem to use the offsets it generates from probing. Is anyone else experiencing this?

  7. Awesome information. Thanks for the wiring diagram and the Marlin code. Super helpful!

    Also, FYI. the M48 command is not enabled in your firmware version. That command allows you to test the repeatability of the BLTouch. If you want it enabled uncomment…

    I did find that the compile was too large if you enable M48 and the SDCard (#define SDSUPPORT), so I just disabled the SDCard for testing.

  8. New to flashing a 3D printer. I followed the how to flash and now I have downloaded your Marlin version. I get the following error when I try to compile it and upload it. Build options changed, rebuilding all
    In file included from sketch/pins.h:67:0,
    from sketch/MarlinConfig.h:40,
    from sketch/G26_Mesh_Validation_Tool.cpp:27:
    pins_RAMPS.h:48:4: error: #error “Oops! Make sure you have ‘Arduino Mega’ selected from the ‘Tools -> Boards’ menu.”
    #error “Oops! Make sure you have ‘Arduino Mega’ selected from the ‘Tools -> Boards’ menu.”
    exit status 1
    #error “Oops! Make sure you have ‘Arduino Mega’ selected from the ‘Tools -> Boards’ menu.”

    Do I need to plug it in via usb and select a different board?

  9. Do I need an Arduino Mega board to upload the file above or how do i mode it to use the USBasp AVR Programming Device for ATMEL Quadcopter KK2 KK2.X Update Tool by Atomic Market? Just need a bit of help to get the new firmware uploaded please!

  10. I have Ender 3 but on the web, the wiring process is in PCB V1.1.2, and mine has V1.1.3 (not need flash bootloader), Do you know If the wiring It is the same?

  11. I think I did something wrong. I have the wires in the correct spot. The X axis and Z(BLtouch) work properly. But now there is a buzzing noise and my Y axis doesn’t move at all. Thoughts? Ender 3 with BLTouch.

    1. The Buzzing is the Pin 27 line not being cut to the control board. Pin 27 is the Buzzer, as such, when the BLTouch is engaged, you hear buzzing.

Leave a Reply

Your email address will not be published. Required fields are marked *