# How to re-program NEW Prusa MK3 MMU2 to accept taller Z axis

In a previous question, I have modified the Z-axis-height of my Prusa Mk3 from 250 mm to 350 mm.

Prior to the MMU2 upgrade, I changed the code in my printer to accept the new height the following way: I changed Arduino → Configuration_prusa.h → Axis settings → line 54 to #define Z_MAX_POS 210 (it worked perfectly).

However, the layout is different for the new firmware v. 3.4.1, and I have no idea where the Z axis settings have gone, if they are even still there. Can anyone point me in the right direction to find the Z MAX POS settings, please?

Obviously, I'm not very good with coding, but it looks like the entire code layout has changed for the v. 3.4.1

# Firmware

Prusa MK3 (firmware 3.4.1) MMU2 (firmware 1.0.1). The source code on Github is found here.

However, the layout is different for the new firmware v. 3.4.1, and I have no idea where the Z axis settings have gone, if they are even still there. Can anyone point me in the right direction to find the Z MAX POS settings, please?

To find where the setting is, you need to go to the source code repository of Prusa firmware (which is based on Marlin firmware) or download the zip file with the sources and use a "grep" search utility to search in files.

The setting Z_MAX_POS is located in the board configuration file (so in 1_75mm_MK3-EINSy10a-E3Dv6full.h if you have the MK3). This can be found in the online sources (the github page). The online repository is located here. Using the search functionality to search within the source code files on that page you are able to find any setting you need to find. If you type in "Z_MAX_POS" and scroll down till you see

#define Z_MAX_POS 210


You have found what you where looking for if you located the MK3 board.

How to re-program NEW Prusa MK3 MMU2 to accept taller Z axis?

Prusa development team has got rid of Configuration_prusa.h, you will not find this file in the repository anymore!

Instead, it is you that has to rename one of the board variant files (from the "Firmware/variants" folder) corresponding to the machine you have to "Configuration_prusa.h" and place it in the "Firmware" folder prior to compiling (note that these are simple actions that you can do on any operating system; i.e. copy file, paste file, rename file). Before you compile the sources, you need to change the value of Z_MAX_POS 210 to Z_MAX_POS 350. Please read the README file as this describes exactly in more detail than worded above what you need to do (e.g. use the correct Arduino IDE, e.g. 1.6.9 as this is used by Prusa development team themselves).

### section describing the renaming of the file:

in the subdirectory "Firmware/variants/" select the configuration file (.h) corresponding to your printer model, make copy named "Configuration_prusa.h" (or make simple renaming) and copy them into "Firmware/" directory

### section describing the compiling:

run "Arduino IDE"; select the file "Firmware.ino" from the subdirectory "Firmware/" at the location, where you placed the source codes File->Open make the desired code customizations; all changes are on your own risk!

select the target board "RAMBo" Tools->Board->RAMBo note: it is not possible to use any of the variants "Arduino Mega …", even though it is the same MCU

run the compilation Sketch->Verify/Compile

or you can also save the output code to the file (in so called HEX-format) "Firmware.ino.rambo.hex": Sketch->ExportCompiledBinary and then upload it to the printer using the program "FirmwareUpdater" note: this file is created in the directory "Firmware/"

To compile the sources correctly please take care in using the correct software versions and libraries (Arduino IDE 1.6.9, RepRap Arduino-compatible Mother Board RAMBo by Ultimachine v. 1.0.1, Arduino AVR Boards Built-in by Arduino updated to v.1.6.23)

Sidenote:

A little more in depth for those who are interested to know (and have some programming skills) why you need to change the name of one of the variants configuration files. Basically, Prusa uses different boards with different settings for the different printers they sell. All the settings for these printer variations are stored in the Firmware/variants folder. When you rename the variant file and put it a folder layer higher to Configuration_prusa.h (e.g.Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.htoFirmware/Configuration_prusa.h), these specific printer and board settings are included into the Configuration.h file (line 43 to be precise) by the C-code include statement:

#include "Configuration_prusa.h"


This include statement will basically insert (like copy in memory) the statements from the Configuration_prusa.h file and thus set important constants like:

#define MOTHERBOARD BOARD_EINSY_1_0a


and many more.

Latest firmware: Prusa-Firmware-3.5.0\Prusa-Firmware-3.5.0 Arduino 1.6.9, RepRap Arduino-compatible Mother Board RAMBo by Ultimachine latest version 1.0.1, Arduino AVR Boards Built-in by Arduino latest version v.1.6.23.

Copy the 1_75mm_MK3-EINSy10a-E3Dv6full file from Prusa-Firmware-3.5.0\Prusa-Firmware-3.5.0\Firmware\variants into Prusa-Firmware-3.5.0\Prusa-Firmware-3.5.0\Firmware and rename it Configuration_prusa.h.
Open Firmware Arduino file. Configuration_prusa.h shows in the tabs next to Configuration_adv.h. Change //Travel limits after homing #define Z_MAX_POS from 210 to 350. Verify → Sketch uses 225,482 bytes (87%) of program storage space. Maximum is 258,048 bytes. Global variables use 6,091 bytes of dynamic memory.