MK2 Filament Sensor, PINDA V2, Noctau Fan, and Bondtech Gear Upgrade

Today you will learn how to upgrade your 3D printer! We will be fitting the MK2/2S with the filament sensor, new z-probe, the super quite Noctau fan and the Bondtech gears. As a bonus you will learn how to compile your own firmware files! 

Motivation for this modification: 

The original Prusa printers are probably the best printers out there at their price point. Recently Prusa came out with the MK3, and it’s an amazing step towards “smart” 3D printing. Its main improvements include the filament sensor, stall detection, magnetic bed, new Z-Probe, and many more design upgrades. For all of us that have a MK2 or MK2S and want to upgrade to the MK3, we’d need to fork out about 500USD! Prusa was kind enough to come out with the MK2.5, a hybrid between the MK2S and MK3, bringing you the new hot end cooling fan, filament sensor, new z-probe, dual drive BondTech gears and the magnetic bed. I decided to dial this upgrade back just a little bit to save about 100 bucks! I think that the magnetic heat bed is great but it’s also expensive. 

MK2.5 - Picture fetched from the Prusa website

These are the components that you’ll need to acquire directly from Prusa or from a different supplier (I included a link where I could): 

1) Noctau Nozzle – $13.49 USD (Amazon Link)

2) Filament Sensor – $13.73 USD (Prusa Link – you must log in)

3) P.I.N.D.A V2 Probe – $13.39 USD (Prusa Link – you must log in)

4) 3D printed parts for the upgrade (Prusa Link)

5) MK3 Bondtech Drivegear set – $49.99 USD (Prusa Link – you must log in)

*** Note that you will need some extra connectors. You can either ask Prusa nicely to include the jumpers in your package, or you can source them yourself through a different supplier. I got mine from Digikey.

6) 2x Molex 5057-9402 – $0.36 CAD Each (Digikey Link) 

7) 2x Molex 5057-9403 – $0.31 CAD Each (Digikey Link)

8) 20x Crimp Connectors – $0.16 CAD Each (Digikey Link) – This will be more than enough. 

Overall, before taxes and shipping you are looking at a total of $90.6 USD + $4.54 CAD. To give you some perspective, the MK2/S to MK2.5 upgrade costs $199.00 USD. So you are saving over 100 dollars here. 

Now to install all the hardware you simply follow the Prusa guide. You need to ONLY follow section 2, 3, 4, and 6 (DO NOT DISASSEMBLE YOUR BED). Below you will find how to fit your existing connectors to the new ones you need. 


Section 1: Modifying connectors

*** This is not the only or necessarily the best way to do this. This is just how I did it. 

Steps for the PINDA V2:

Step 1: Disconnect the wires from the PINDA connector. Using a small flat head screw driver press the lip into the plastic housing. (Figure 1)

Step 2: Bend the lip back up into position as shown so that it can lock back into the new connector. (Figure 2)

Step 3: Pick up the two and three slot connectors you acquired.

Step 4: Connect the wires as per Figure 3. Double check and triple check that you got it right! (Figure 3)

Steps for Noctau fan:

Step 1: Remove the existing connector and crimp connections

Step 2: Strip a small portion of the 3 wires.

Step 3: Using the crimp terminals you ordered, crimp the terminal onto the stripped portion of the cable.

Step 4: Pick up the two and three slot connectors you acquired.

Step 5: Connect the wires as per Figure 3. Double check and triple check that you got it right! (Figure 3)

Figure 1: Lip press location
Figure 2: Lip bent to position
Figure 3: Cable position reference

Section 2: Firmware Modification

Prerequisites: Have the RAMbo 1.3 board. This guide should work for the 1.0 board as well but I can’t confirm for sure. 

Prusa has a pre-compiled version for the MK2.5. However, we can’t use it since our heat bed is different. What we need to do is get the up to date firmware files so that we can make some slight modifications and compile it ourselves. If you aren’t interested in how this is done, I will include a link to the firmware I complied myself at the end of this page: 

1. First step is to get the most up to date version from GitHub (Make sure you’re in the MK3 branch):

2. Download the whole thing as a ZIP file and extract it somewhere on your computer. 

3. Next we will need to set up our compiler. Download the “Windows” version 1.6.8 Arduino IDE. This is a standalone version of Arduino. This is the link: Unzip it somewhere on your computer. 

4. We need to set up the Prusa board on the Arduino IDE. Follow these steps from the Prusa GitHub:

  1. Add (UltiMachineRAMBo board into the list of Arduino target boards
    into text field "Additional Boards Manager URLs"
    type location
    or you can ‘manually’ modify the item
    at the file "preferences.txt" (this parameter allows you to write a comma-separated list of addresses)
    note: you can find location of this file on your disk by following way:
    File->Preferences->Settings ("More preferences can be edited in file ...")

    than do it
    from viewed list select an item "RAMBo" (will probably be labeled as "RepRap Arduino-compatible Mother Board (RAMBo) by UltiMachine"
    note: select this item for any variant of board used in printers 'Prusa i3 MKx', that is for RAMBo-mini x.y and EINSy x.yto
    ‘clicking’ the item will display the installation button; select choice "1.0.1" from the list(last known version as of the date of issue of this document)
    (after installation, the item is labeled as "INSTALLED" and can then be used for target board selection)

5. OK, now for the fun part! Go into the Prusa folder you unzipped earlier and navigate to /Firmware/variants and copy the file named “1_75mm_MK25-RAMBo13a-E3Dv6full” to this directory /Firmware

6. Rename the file you just moved to “Configuration_prusa” and open it use Notepad++ or Sublime Text. Don’t use the regular text editors. 

7. (Optional) Find this line #define CUSTOM_MENDEL_NAME “Prusa i3 MK2.5” and rename your printer to something more fun if you want. Like “Mr. Potato Head” or something 🙂

8. Find this line #define Y_MIN_POS -4 and replace it with this one #define Y_MIN_POS -2.2

9. Save and close this file. 

10. Next find a file named “mesh_bed_calibration.cpp” and open it.

11. Fine this line #define BED_ZERO_REF_Y (- 0.6f + Y_PROBE_OFFSET_FROM_EXTRUDER + 4.f) and replace it with this one #define BED_ZERO_REF_Y (- 0.6f + Y_PROBE_OFFSET_FROM_EXTRUDER)

12. The next section can be a bit confusing and to make sure you don’t make a mistake I recommend following the steps exactly as laid out (For all you programmers, I know this isn’t the best way to change this but we’re going to do it anyway!)

13. Go to the top of the document and press Control + F to open up the search function and click “Find Next”. This will find the place where the bed probing points are defined. 

14. There are two matrix definitions, one is for the XYZ calibration and the other is for the 9 point mesh bed leveling. They are named “bed_ref_points_4” and “bed_ref_points”, respectively. We need to change these to fit with our MK2 bed type. 

15. This is what the section will look like (click to enlarge): 

16. We need to change it to look like this: 

17. These are the lines you need to copy into matrix “bed_ref_points_4″:

13.f  – BED_ZERO_REF_X,   6.4f – BED_ZERO_REF_Y,

216.f – BED_ZERO_REF_X,   6.4f – BED_ZERO_REF_Y,

13.f  – BED_ZERO_REF_X, 202.4f – BED_ZERO_REF_Y,

216.f – BED_ZERO_REF_X, 202.4f – BED_ZERO_REF_Y

18. These are the lines you need to copy into matrix “bed_ref_points”:

13.f  – BED_ZERO_REF_X,   6.4f – BED_ZERO_REF_Y,

115.f – BED_ZERO_REF_X,   6.4f – BED_ZERO_REF_Y,

216.f – BED_ZERO_REF_X,   6.4f – BED_ZERO_REF_Y,

216.f – BED_ZERO_REF_X, 104.4f – BED_ZERO_REF_Y,

115.f – BED_ZERO_REF_X, 104.4f – BED_ZERO_REF_Y,

13.f  – BED_ZERO_REF_X, 104.4f – BED_ZERO_REF_Y,

13.f  – BED_ZERO_REF_X, 202.4f – BED_ZERO_REF_Y,

115.f – BED_ZERO_REF_X, 202.4f – BED_ZERO_REF_Y,

216.f – BED_ZERO_REF_X, 202.4f – BED_ZERO_REF_Y


19. OK you’re done here! Press save and close the window. 

20. Open up the Arduino IDE you set up previously and open the “firmware.ino” file located in /Prusa-Firmware-MK3/Firmware using the File -> Open function in the Arduino window. 

21. Select the board type by pressing Tools -> Boards -> RAMbo

22. Let’s make sure that everything is working well by pressing Sketch -> Verify/Compile

23. If you didn’t get any errors from step 22, you can now press Sketch -> Export compiled binary

24. You will get a hex file in this directory /Prusa-Firmware-MK3/Firmware with this name “Firmware.ino.rambo”

25. Use Prusa’s firmware flashing guide to flash the file you got in step 24 into your printer (Start from step 4): LINK HERE

26. You’re done! If this worked for you comment below to let other users know. If you find a section confusing, please comment. If this didn’t work for you, please let me know where you got stuck!


If you ever end up getting the heated bed by itself, all you need to do is just reflash the original firmware from the Prusa website 🙂 

Disclaimer: Do this at your own risk. We are not responsible for any damage done.