Assets 5

This firmware version was focused on finalization of features from previous 3.5.0-RC1 firmware version. For the detailed description of all features and improvements please check also 3.5.0-RC1 change log.
New Slic3r settings which will contain new Tx and Tc codes used in single mode (for printers with MMU2) will be released soon.

Summary of changes (compared to 3.5.0-RC1):

  • Z-levelling fix
  • M500 - M503 fix
  • FINDA dependency on optical sensor fixed
  • Translation corrected
  • Progress bar display during M600 fixed
  • Pause print communication timeouts fixed

Detailed description of changes (compared to 3.5.0-RC1):

Z-levelling fix:

A feature called "Mesh bed levelling fail triggers Z-levelling" was added in previous firmware version. However, there was one bug which caused that after Z-levelling coordinates were shifted in Z. This has been fixed.

FINDA dependency on optical sensor fixed (printers with MMU2):

In the previous firmware version, we have improved FINDA independency on the optical filament sensor. However, there was still a scenario where FINDA was disabled in case that optical sensor was damaged or disconnected. This has been fixed.

M500 - M503 fix:

In previous firmware version, we have improved functions for storing settings to EEPROM and restoring them (M500 - M503) to provide improved reliability in the future and prevent issues which we had encountered in 3.4.0 firmware. Now we have fixed initialization of new variables, which were added to M500 recently. If you have encountered some issues with slow Z-axis movements in 3.5.0-RC1 version, please upgrade to 3.5.0. Otherwise, there is no change from the user's point of view.

@PavelSindler PavelSindler released this Nov 13, 2018 · 82 commits to MK3 since this release

Assets 5


  • Pause print improved
  • Preheat error improved
  • Mesh bed levelling fail runs Z calibration
  • Faster filament loading
  • Min. extrude temp. changed to 175 °C in all variants
  • Time remaining > 100 h screen fix (issue #1231)
  • Improved Wizard for assembled printers
  • Fixed bug in statistics (#1151, #931)
  • Filament change (M600): make space for opening idler
  • Bed power monitor (MK3)
  • Standard G-codes for setting TMC currents (MK3)
  • Crash detection -> stop print bug fixed (MK3)
  • The French language added
  • Other general improvements

Improvements specific for printers with MMU2:

  • Improved printing in single material mode (new Tx, Tc codes and T? fixed)
  • Load to nozzle added
  • Manage response improved: possibility to preheat nozzle
  • Fixed First layer calibration/Wizard
  • Filament sensor (dependency on optical sensor fixed)
  • T? menu changes feedrate fixed
  • Extruder stepper disabled during T-code execution (MK3)
  • Auto deplete menu improved
  • Filament change (M600): improved message synchronization

Detailed description of changes:

Pause print improved:

New pause print (for SD card printing) reacts immediately (without waiting to finish movements which are in progress and without waiting for execution all currently buffered commands).

Preheat error improved:

On older firmware version there was a zone where preheat error was not working properly. If thermistor would be damaged during the preheating phase in a particular way (resistance of damaged thermistor would be in the range corresponding to the measured temperature > 150 °C), preheat error was not triggered.
Improved preheat error now works in full range.

Improved printing in single material mode (printers with MMU2):

When using the multi-material printer for printing in single material mode (using just one filament), the user is asked which filament will be used during print. There is G-code "T?" which invokes menu for choosing filament and then loads chosen filament into the nozzle. Thus, the printer must be preheated when "T?" code is executed. This means that user must wait until preheat is done and the menu is invoked. To make single material print more user-friendly we have added new "Tx" and "Tc" codes. Tx invokes menu for choosing filament and loads chosen filament near the Bondtech gears. This G-code can be executed on the printer with a cold nozzle. Tc code then continues with loading (from Bondtech gears to nozzle). This two G-codes ensure that user can choose filament at the beginning of print without waiting for the nozzle to reach the target temperature. This two G-codes are not implemented in Slic3r settings yet. If you want to try it, here is part of G-code start sequence as an example:

M73 P0 R3
M73 Q0 S3
M201 X1000 Y1000 Z1000 E5000 ; sets maximum accelerations, mm/sec^2
M203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec
M204 P1250 R1250 T1250 ; sets acceleration (P, T) and retract acceleration (R), mm/sec^2
M205 X8.00 Y8.00 Z0.40 E1.50 ; sets the jerk limits, mm/sec
M205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec
M115 U3.4.1 ; tell printer latest FW version
M83  ; extruder relative mode
M104 S215 ; set extruder temp
M140 S60 ; set bed temp
M190 S60 ; wait for bed temp
M109 S215 ; wait for extruder temp
G28 W ; home all without mesh bed level
G80 ; mesh bed levelling

G21 ; set units to millimetres

;go outside the print area
G1 Y-3.0 F1000.0
G1 Z0.4 F1000.0
; select extruder
; purge line
G1 X55.0 E8.0 F2000.0
M73 Q0 S3
M73 P0 R3
G1 Z0.3 F1000.0
G92 E0.0
G1 X240.0 E25.0  F2200.0
G1 Y-2.0 F1000.0
G1 X55.0 E25 F1400.0
G1 Z0.20 F1000.0
G1 X5.0 E4.0 F1000.0

We have also fixed "T?" G-code function. There was a bug which caused that it didn't work for USB printing (for example with Octoprint).

Mesh bed levelling fail triggers Z-levelling:

In previous firmware versions, if mesh bed levelling failed, calibration was stopped with an error message, the user was forced to reset the printer and then fix the issue. Mesh bed levelling fails if Z coordinate where P.I.N.D.A. sensor triggers is higher or lower than expected or it does not trigger at all. If there is no hardware issue (P.I.N.D.A. cables etc.), this issue is caused by uneven X-axis and can be easily fixed by re-running Z calibration. In current firmware version, the user is not forced to reset printer in case that mesh bed levelling fails. Instead of that informative message appears and the procedure called Z-levelling is then invoked. Z-levelling is actually the first part of Z-calibration which is responsible for moving Z-axis to the top and levelling the axis. After Z-levelling is finished, mesh bed levelling is automatically re-run and printer continues printing.

Load to nozzle menu added (printers with MMU2):

There is now a possibility to load filament from the menu not only to MMU2 but also directly to nozzle. This is useful when printing older MK3/MK2.5 G-codes on the printer with MMU2.

Manage response improved (printers with MMU2):

If printer enters the state which requires the user to manually fix the issue on MMU2 (signalled by blinking LEDs on MMU2: for example failed load caused by missing filament during T-commands) and remains in that state for more than 5minutes, printer turns off heater and park extruder to the certain position. After the issue is fixed on MMU2, printer preheats nozzle, unparks and continues printing. However, sometimes it might be necessary (for example if unload failed and the user wants to repeat the action) or just useful (preheating nozzle in advance can save some time) to preheat nozzle before fixing manually issue on MMU2. In current firmware version, we have added the possibility to recover saved nozzle target temperature by a single click. Also, the nozzle temperature is always shown on the last line of printer display.

Fixed first layer calibration/Wizard for printers with MMU2:

The sequence for choosing/loading PLA filament which will be used during first layer calibration has been improved. When running Wizard on the printer with MMU2, it is possible to unload or eject current filament before loading new PLA filament.

Auto deplete menu improved (printers with MMU2):

Auto deplete function can be now turn on/off during print from tune menu. Dependency on filament sensor was added (in case that filament sensor is turned off, auto deplete is shown as "not available" in menu etc.).

Filament sensor for printers with MMU2 (dependency on optical sensor fixed):

There was a bug which caused that filament sensor (F.I.N.D.A.) couldn't be turned on printers which had optical filament sensor damaged or disconnected. This has been fixed.

Extruder stepper disabled during T-code execution (MK3 printers with MMU2):

This saves power, makes it easier to manually pull filament from Bondtech gears if necessary and lowers risk of filament damage when MMU2 is loading filament to the point right above Bondtech gears (especially in the case when MMU2 is not calibrated correctly).

Improved Wizard for assembled printers

Wizard for assembled printers now contains all steps, which are described in our manuals and which are necessary for getting printer ready for printing:

  • removing shipping helpers
  • removing test print
  • Z calibration
  • unloading current filament
  • loading new filament

Bed power monitor (MK3):

We have added the bed power monitor. It can be shown from menu "Support -> Voltages". Normal values are around 24 V. If value shown in the menu is zero it means that fuse is blown and needs replacement.

Setting TMC currents (G-codes) (MK3):

Standard M907 G-code can be now used for setting motor currents on MK3. Usage is the same as on MK2 printers: M907 Sxxx, where xxx is in mA. Please note that setting current too high leads to printer damage. Non-standard G-codes M910-M918 have been disabled. However, these G-codes can be still used by uncommenting line #ifdef TMC2130_SERVICE_CODES_M910_M918 in Configuration_prusa.h and rebuilding.

Crash detection -> stop print bug fixed (MK3)

After three consequent crashes print is paused and the user is asked if he wants to stop the print. There was a bug in stop print triggered by crash detection. This has been fixed.

M600: message synchronization, make space for opening the idler

Load filament messages synchronization for printers with MMU2 were improved.
If unload fails during filament change, the user is asked to open idler and manually pull the filament out. We have added extruder movement to make more space for this operation.

French language added

We have added the French language. However, it is still work in progress and will be finished in final 3.5.0 firmware.

@PavelSindler PavelSindler released this Oct 19, 2018 · 410 commits to MK3 since this release

Assets 13

This firmware version is specifically for users who use MK2.5 + MMU2 setup. If you are not using MMU2 or if you use MMU2 with MK3 printer it is not necessary to upgrade to this version.


  • MK2.5 + MMU2 setup loudness reduced
  • MK2.5 + MMU2 setup initialization

Detailed description of changes:

MK2.5 + MMU2 setup loudness reduced:

In previous firmware versions, the MMU2 operation was quite loud when using with MK2.5 printer. This firmware version solves the issue. MK2.5 printer sends command for setting MMU2 currents specifically for usage with MK2.5 and switches MMU2 drivers to stealth mode. For correct behaviour, it is necessary to use MMU firmware 1.0.2 and higher when running MMU2 with MK2.5. Users who use MK3 printer do not need to upgrade their MMU2 firmware.

MK2.5 + MMU2 setup initialization:

MK2.5 was unable to automatically detect MMU2 unit after turning on the printer. This has been fixed.

@PavelSindler PavelSindler released this Sep 27, 2018 · 416 commits to MK3 since this release

Assets 13


  • filament runout detection bug #1154 fixed
  • stealth mode bug #1152 fixed
  • "filament sensor response is poor, disable it?" feature temporarily disabled
  • statistics during active print bug #1151 fixed
  • OctoPrint "Printer reset detected" warning #1184 issue fixed

Detailed description of changes:

Stealth mode bug:

This issue manifests itself as slow Z-axis movements. This was caused by a bug in storing custom values to EEPROM (M500 and M501 G-codes). These two G-codes were updated to avoid a similar issue in the future.

"filament sensor response is poor, disable it?" temporarily disabled

This was a new feature introduced with filament sensor engine 2.0. Unfortunately, this feature seems to be too sensitive and unreliable so we disabled it for now and we are working on an improved version of it.

@PavelSindler PavelSindler released this Sep 12, 2018 · 443 commits to MK3 since this release

Assets 13


  • Multimaterial - version 2 (MMU2) support
  • Filament sensor engine 2.0
  • Improved power panic
  • Adjustable beeper notifications
  • Feedrate and acceleration limits improved for the MK3
  • PINDA state shown in menu (MK3)
  • Time remaining fix

Detailed description of changes (compared to 3.4.0-RC2):

Multi Material unload improved:

Filament unload now contains ramming sequence. This ensures that tip of unloaded filament has no significant "strings" and thus overal reliability of printer in multimaterial mode is improved (stringing during unload could sometimes cause false FINDa triggering or jamming).

Time remaining fix:

Fixed issues #1103 and #1120.
In case that printer shows estimated time remaining (it must be supported in gcode file) and user changes speed factor during print, estimated time became inaccurate. In this case, there is "?" character shown on status screen to inform user that estimated remaining time is accurate only for case that speed factor is not changed.

Menus fix:

In previous firmware versions (3.4.0-RC1 and 3.4.0-RC2) there was bug which caused undesired printer behaviour (clear screen at the beginning of PID calibration, fullscreen messages was sometimes returning to main menu instead of going to status screen etc.). This has been fixed.

New messages translated:

New messages was translated to supported languages. This affects especially users who will use priner together with MMU2 (multi material unit v2).

@PavelSindler PavelSindler released this Aug 30, 2018 · 501 commits to MK3 since this release

Assets 8


  • Multimaterial - version 2 (MMU2) support
  • Stealth mode loudness reduced (MK3)
  • Fixed bugs from RC1
  • PINDA state shown in menu (MK3)

Detailed description of changes:

Multimaterial - version 2 (MMU2) support:

This firmware version (both MK3 and MK2.5) is initial version with Multimaterial v2 support. Firmware detects automaticly if mmu2 unit is connected. More information about multimaterial features will be added later. Multimaterial specific messages are just in English now. Translation of all messages will be finished in final release.

Stealth mode loudness reduced:

In previous firmware version (3.4.0-RC1), stealth mode speed was increased which led to significantly increased loudness. In current firmware version stealth mode max. feedrate limit has been reduced to 100mm/s, which leads to reduced loudness and preserves reduced print time compared to older firmware versions (3.3.1 and older).

Fixed bugs from RC1:

  • Flow factor setting fixed

  • Bed level correction menu fixed (issue #1083)

  • Wizard fix: Before first layer calibration, user is asked if there is PLA filament loaded. If not, printer turn on nozzle heater and when target temperature is reached, user is asked to load filament. In this scenario, there was bug which caused that load filament sequence could be activated more then once. This led to undesirable extruder movements (too much material extruded). This bug has been fixed.

  • Linearity correction menu readded (MK3)

  • M600 fixes: There was bug which caused reseting during filament change when printing over USB (issue #1046) and also some extra material was extruded at the end of filament change procedure which formed little blob on printed object. These two bugs have been fixed.

  • Speed factor fix (issue #1047)

@XPila XPila released this Aug 14, 2018 · 623 commits to MK3 since this release

Assets 8


MK3 and MK2.5:

  • Filament sensor engine 2.0
  • Improved power panic
  • Adjustable beeper notifications
  • G-code M84 reenabled
  • Feedrate and acceleration limits fixed for the MK3

Detailed description of changes:

Filament sensor engine 2.0:

This release brings a major update to the filament sensor. Part of the software responsible for the analysis of the filament movement was rewritten to increase the precision and reliability of the sensor. With the new firmware, the filament runout should be always detected in time and the number of false detections drops significantly. Previously MK3 and MK2.5 shared similar values for the evaluation and it was sometimes causing issues on the MK2.5, this is now fixed.

Engine 2.0 brings also a new feature for the filament evaluation. During the filament load sequence, the filament is scanned using the IR sensor and evaluated. As soon as the filament is loaded to the extruder the printer knows, whether it can reliably control the filament flow during the print or not. In case the sensor can't read the filament movement properly, the user is informed on the printer's screen with an option to turn off the sensor.

Poor filament detection

Filament sensor precision is greatly influenced by the cleanliness of the sensor itself. The easiest way is to use a compressed air. There is a dedicated hole in the x-carriage exactly for this purpose. See the picture below to compare the clean and dirty sensor.

clean VS dirty sensor

Improved power panic:

During the power outage, MK3 saves the last position of the extruder and as soon as the power is restored, the printer reads the data and continues. In case there are more consecutive power outages, the restore sequence is interrupted and this can sometimes lead to a print failure. A similar failure of the print might occur after a very short power outage (<50 ms). New firmware release fixes both scenarios.

Adjustable beeper notifications:

Starting firmware 3.4.0 there are 4 levels of the acoustic signalization - Loud, Once, Silent and Mute. The user is able to choose between each level in the printer's menu -> Settings –> Sound. You can also change the sound settings during the print in the menu -> Tune.

Level description:
Loud - printer uses acoustic signalization for a failure or if confirmation is needed
Once - this level is similar to Loud, but all beeps are played only once.
Silent - most of the beeps are muted, the user is informed only in case of a serious error
Mute - printer stays muted regardless of the importance of the error

Beeper level

G-code M42 reenabled:

Due to the insufficient space in the printer's memory, the G-code M42 was previously removed from the firmware. The entire code of the firmware is now optimized and M42 returned back. You can use it to trigger or read from the pins on the board (e.g. trigger time-lapses on your camera).

Feed-rate and acceleration limits fixed for the MK3:

Until now the feedrate and acceleration values were compared to the hardcoded limits of the printer during the entire print at every movement, which caused high CPU load. New implementation checks for G-codes M201 and M203 only at the beginning of the print. If the input values are smaller than hardcoded values, no action is triggered. In case the values from G-code are bigger, the firmware replaces them with hardcoded ones.

Current limits for the MK3 in the firmware:

Stealth mode:
feed-rate 172 mm/s
acceleration 960 mm/s^2

Normal mode:
feed-rate 200 mm/s
acceleration 2500 mm/s^2

@PavelSindler PavelSindler released this Jul 16, 2018 · 925 commits to MK3 since this release

Assets 13


MK3 and MK2.5:

  • Filament statistics fix
  • G28 fix
  • Load filament improvement
  • Setup function fix

Detailed description of changes:

Filament statistics fix:

Fixes issue #901.

G28 fix:

There was missing OK after G28 (auto home) gcode execution (issue #924) which could cause communication timeouts and also undesired mesh bed leveling was run in the end of temperature calibration. Both was caused by bug in G28 gcode. It has been fixed.

Load filament improvement:

Load filament sequence now contains movement in Z axis if current Z coordinate is lower then 20mm when loading filament starts. This will ensure that there is always enough space for cleaning the nozzle.

Setup function fix:

  • Splash screen fix
  • Factory reset -> Shipping prep. enables filament sensor

@XPila XPila released this Jul 2, 2018 · 940 commits to MK3 since this release

Assets 13



  • recurring crash detection limit
  • crash detection and filament runout detection improvements and bugfixes (focused on Octoprint and USB printing)
  • fixed erroneous movements during stop print
  • supports multiple languages
  • M86 gcode for safety timer
  • temperature calibration improvements
  • power panic fix
  • supports remaining time estimation provided from Slicer (support in the future versions of Slicer)


  • Filament runout detection fixes and improvements (focused on Octoprint and USB printing)
  • fixed erroneous movements during stop print
  • different language variants
  • M86 gcode for safety timer
  • temperature calibration improvements
  • supports remaining time estimation provided from Slicer (support in the future versions of Slicer)

Detailed description of changes:

Crash detection and filament runout detection fixes and improvements:

Recurring crash detection limit:

Crash detection procedure has been extended. If three crash detection occurs in short time frame (less then 45 seconds between two following crash detections) print is paused and user is asked if he wants to resume print or stop print. This should overcome problems when printer is stucked in loop trying to automaticly resume printing (related to issue #815).

USB printing:

Crash detection and filament runout detection was inaccurate when printing over USB. Some gcode lines were skipped when resuming from crash detection/filament runout detection which caused discontinuity in printed object. This has been fixed in current firmware version and tested with Octoprint. For correct behaviour, lines sended over USB must be stamped with line number. Printer sends resend request with line number when resuming USB print after crash detection/filament runout detection.

During filament runout detection with Octoprint connected communiacation timeouts occured in some cases. This was caused by missing "busy: processing" messages. It has been fixed in curent firmware version (PR #831 ).

Crash detection/filament runout detection always set flag that it was previously printing from SD card even in case that crash detection/filament runout detection occured during USB printing. This led to undesired printer behaviour such as printer status line malfunction (issue #843) It has been fixed in current firmware version.

M27 - get SD status fix:

When M27 gcode is received and file from SD card is currently printed, printer sends information about filesize and byte which is currently printed. This usually serves for showing print progress. If there is no active SD card print, printer sends "Not SD printing" to host. When printing from SD card printer was returning "Not SD printing" during crash detection and filament runout detection which was undesired. For example when Octoprint sended M27 request during crash detection it received "Not SD printing" and reacted with turning off nozzle and heatbed heating.

Erroneous movements fixed:

This is related to issue #823 and could occur during crash detection/filament runout detection/stop print when printing objects with long linear segments. This has been fixed in PR #860.

Other improvements:

  • Crash detection retraction fix and Z axis movements improved
  • Crash detection fix for absolute Extruder coordinates
  • Safety timer not active during filament runout procedure

Different language versions:

There are new language variants added to MK3 firmware. Firmware currently supports these languages:

  • English
  • Czech
  • German
  • Spanish
  • Italian
  • Polish

It is necessary to use new Slic3r Prusa Edition 1.40.1-beta version or higher to flash firmware with all language variants into MK3. If you use standard firmware updater, there will be just English language present.

MK2.5 is currently just bilingual (English + secondary language) and there are different hex files for different languages and there is no need to use Slic3r for flashing MK2.5 firmware.

M86 gcode for safety timer:

Safety timer is feature which turns off nozzle and bed heaters in case that nozzle or heatbed target temperature is set to non-zero value and printer is idle for more than 30 minutes. We have added gcode which serves for setting safety timer period (in seconds) and it can also disable this feature by setting safety timer period to zero. Main reason for implementing this gcode was possibility to disable safety timer when pausing USB printing (by sending M86 S0) and then enable it again (M86 S1800) when resuming print (when USB print is paused, printer is actually in idle state, but heatbed should stay hot).

Temperature calibration improvements:

  • crash detection is always used (normal mode is forced) during temperature calibration Z movements, auto home and mesh bed leveling
  • all XY movements are always performed in safe distance from heatbed
  • Z axis homing improved
  • If XYZ calibration has not been run yet, temperature calibration is terminated and user is asked to run XYZ calibration first (because accurate position of calibration point for homing Z axis without steel sheet has to be known).

Power panic fix:

There was bug in storing/recovering short filenames during power panic. This caused that in some cases print was not resumed. It has been fixed.

Remaining time estimation support:

Current firmware version is ready to display remaining time estimation and accurate progress on printer status screen. Information about remaining time and progress will be accuratelly counted by Slic3r and inserted into gcode file. Gcode M73 is used for this. Using: M73 Pxxx Qxxx Rxxx Sxxx. P is percentage done for normal mode, R: time remaining for normal mode in minutes, Q: percentage done for stealth mode, S: time remaining for stealth mode. Current Slic3r version doesn't support it yet. In case that there are no M73 gcodes in file, printer behave as in previous release versions, i.e. showing time from print start. More information about this feature will be added after Slic3r release.

Status screen was slightly modified because of this feature. Symbol "SD" is now shown on printer status screen only during active SD print (i.e. not in idle state) together with progress in percentage. When printing over USB, there is "USB" symbol shown together with progress in percentage.


  • M860 communication timeouts fixed
  • MK2.5 with Rambo 1.0 - filament sensor function fixed