Skip to content

3.1.0-RC1 firmware for Prusa i3 MK2/S/MMU with Hyperfine Bed Tuning and Filament Runout Sensor

Pre-release
Pre-release
Compare
Choose a tag to compare
@3d-gussner 3d-gussner released this 15 Oct 08:18

UPDATE 03 December 2017 please check the newest release https://github.com/3d-gussner/Prusa-Firmware/releases/latest

UPDATE: Removed the hex file for the moment as Prusa released a 3.1.0-RC2 with a warning.

Here more [info] (https://shop.prusa3d.com/forum/original-prusa-i3-mk2-f23/firmware-3-1-0-rc2-mk2-multi-material-mk2-s-mk1-t6454.html#p45064)

I will try to upload the newest release asap.

3.1.0-RC1 firmware for Prusa i3 MK2/S/MMU with Hyperfine Bed Tuning and Filament Runout Sensor

Remember that this a Beta version of the Prusa Beta version.

Hyperfine Bed Tuning

All the credit for the Hyperfine bed tuning goes to @Jeff-Jordan or JeffJordan and PJR who are incredible active, innovative, helpful and nice persons and can be found quite often in the Prusa forums !!! Also a big THANKS to @robrps who ported this idea to github!

  • If you have any issues/problems with my modifications please let me know via the issues section.
  • If you have questions or problems with Hyperfine bed tuning please use the Prusa Forum Topic Hyperfine bed leveling?

The Hyperfine Bed leveling/correction is an advanced 'Bed level correct' version of the original Prusa code, which allows to manually adjust Left/Right/Front/Rear bed heights. Next to the default Left/Right/Front/Rear it now allows to adjust the four corner points FrontLeft/FrontRight/RearRight/RearLeft.
Best explanation can be found here by JeffJordan https://shop.prusa3d.com/forum/prusa-i3-kit-building-calibrating-first-print-main-f6/hyperfine-bed-leveling--t4330-s110.html#p41311

hyperfine bed leveling jeffjordan

Here for Linear Advance Integration modified hyperfine bed calibration g-code based on the JeffJordan g-code.

This firmware has a filament runout sensor function activated!

Thanks a lot to @TheZeroBeast helping coding, testing, involving and making this possible!

  • If you have any issues/problems with my modifications please let me know via the issues section.
  • If you have questions or problems with Filament Runout Sensor please use the Prusa Forum Topic Wire up filament sensor to MK2, use thermister circuit?
  • As soon this feature is activated (check via LCD menu) you need a connected filament runout sensor otherwise your printer will not print until that sensor is connected or disabled via LCD menu!

You need to connect the filament runout switch to y-max 'S'ensor and '-' pins. You can see it quite good here and here
minirambo-medium_fr_sens

  • Filament runout sensor can be set via LCD menu Settings->Fil.Runout S
    • Fil.Runout S [ON/OFF] to active and de-active the function
    • Fil.RS [S to VCC/S to GND] to choose between sensors pulling the Signal to VCC(most optical) or GND(like xy endstops)
    • Fil.RSPullup [ON/OFF] set the internal pull-up resistor to get constant readings. This is needed with most mechanic sensors (like xy endstops)
    • The status of the Filament runout sensor if activated can be seen via g-code M119 or LCD menu 'Calibration->Show end stops'
  • During the print the filament runout sensor function can be de-/activated, this can be found under Tune LCD menu.

Here an nice PRUSA MK2S DUST FILTER/OPTO FILAMENT RUNOUT SENSOR on Thingiverse from TheZeroBeast.

Linear Advance Integration needs modifications to your slicing software, please read below!

  • Here a calibration gcode Sebastianv650 provided to get the right K-value for your PLA filament you are using K-Line.Test.gcode.zip

You may need to run the PID tuning and PID Bed tuning after uploading the firmware.

  • You can do it via g-code
  • or the LCD menu 'Calibration->PID calibration' for the hotend
  • and 'Calibration->PID Bed calibration' for the heated bed.

Modified filament change position

The stock change position is X=211, Y=0 and Z-ADD (Z lift) is 2 but below 10mm the hotend moves additional 10mm. I decided to move the position to X=0, Y=-2.2 and change the Z-Lift blow 20mm to additional 20mm so I have enough space for my tweezers.

Differences to previous version 3.0.12-2 firmware for Prusa i3 MK2 with Filament runout sensor and Linear Advance Integration

  • Hyperfine bed leveling tuning check prusa3d#211
  • Filament runout sensor can be set via LCD menu Settings->Filament Runout S

If you update from the previous Firmware version please double check the settings and calibration values. The some EEPROM positions for the additional features changed and may cause problems. I didn't have any but you never know.

Differences to original Prusa i3 MK2 firmware 3.1.0-RC1 firmware for Prusa i3 MK2/S/MMU

  • Hyperfine bed leveling tuning check prusa3d#211
  • Filament runout sensor can be set via LCD menu Settings->Fil.Runout S
    • Fil.Runout S [ON/OFF] to active and de-active the function
    • Fil.RS [S to VCC/S to GND] to choose between sensors pulling the Signal to VCC(most optical) or GND(like xy end stops)
    • Fil.RSPullup [ON/OFF] set the internal pull-up resistor to get constant readings. This is needed with most mechanic sensors (like xy end stops)
    • The status of the Filament runout sensor can be seen via g-code M119 or LCD menu 'Calibration->Show end stops'
    • 1 when filament is loaded.
    • flickering between 0 and 1 when filament run out
    • 0 is runout switch is not connected right OR if you use all three pins filament ran out.
  • Filament runout sensor changed to pin 24 'y-max' endstop
  • Added filament runout status to 'Show end stops' menu
  • Under 'Calibration' -> 'Show end stops' you will find new FR_S value, which has to to be
  • Change position change from x=211,y=0 and z-add (z-lift)= 2 to x=0, Y=-2.2, z-add =2
    • Using the gcode M600 change filament or the filament runout sensor triggers the extruder moves 2mm up and to x=0, y=-2.2 position. But is the layer height during 'change/filament runout' lower than 20mm the extruders moves additional 20mm up and to x=0, y=-2.2 position.
    • After changing the filament to print continues the print.
  • Updated German translation by 3d-gussner
  • Few English changes
  • PID calibration menu with 8 cycles
  • PID bed calibration menue mod by 3d-gussner
  • PID values for bed saving
  • Preheat order changed from ABS/PLA/... to PLA/ABS/...

Adding the Dutch translation gave me some strange errors after uploading the firmware. So i started to investigate and found there is no issue with the Dutch translation file, it seams to be that i hit a limit (RAM or something else).
Prusa didn't want to include my Dutch translation before and they mentioned possible issues with too much languages.

So i decided to upload different hex files:
1st will be the stock languages, except i run again into limits (EN,CZ,IT,ES,PL,DE)
2nd will be EN/DE/NL/IT/(FR). For Germany(DE), Netherlands (NL), Belgium (NL,FR,DE), Switzerland (DE,FR,IT), Italy (IT), France (FR)
3rd will be EN/ES/(FR)/(PT)/NL. For Spain (ES), France (FR), Portugal (PT), North/Mid America (EN,ES,FR,NL), South America (ES,PT,FR,NL), some parts of Africa (EN,FR,PT,ES,sort of NL), some Oceania Islands (EN,FR)

My French isn't that good anymore, Spanish and Italian are limited to basic things like: 'Dos cervezas por favor' or 'Due espresso per favore' and in Portuguese i am completely lost.

Due to the HD44780 A00 ROM LCD screen used by Prusa special European characters are not possible. It is a pity because there is also a HD44780 A02 European character ROM version available.
In German you can write ä,ö,ü,ß as ae,oe,ue,ss but á,é,è,ê etc. will be a problem.

So if you are interested in these firmware versions PLEASE help to translate.

Following information is from official Prusa 3.1.0-RC1 firmware for Prusa i3 MK2/S/MMU release.

Summary:

  • Linear Advance
  • Wizard
  • Host keep alive messages
  • SD card menu sorting
  • Check if file is complete
  • First layer calibration
  • Auto power mode
  • XYZ calibration details menu fixed
  • M220: Speed factor

Detailed description:

Linear advance

This feature has been ported from Marlin firmware by @Sebastianv650. Thank you for your kind help Sebastian.

Without linear advance, extruder motor moves in linear proportion to all the other motors. This simple approach does not take in the account that extruder is not linear system. This leads to extruding more material then desired at the end of each linear movement. Linear advance on the other hand takes nonlinearity into account and maintains correct pressure in nozzle during movements.

Advantages:

Better dimensional precision due to reduced bleeding edges.
Higher printing speeds are possible without any loss of print quality.
Visible and tangible print quality is increased even at lower printing speeds.
No longer need high acceleration and jerk values to get sharp edges.
On next figure, there is difference between print without linear advance on the left and with linear advance on the right:
compare linear advance

linear advance

For more information about Linear Advance please click here.

For printing with linear advance, we recommend start with following settings:

PLA: 100 mm/s; M900 K45
ABS: 100mm/s; M900 K25
PET: 100mm/s; M900 K45
We are still testing/developing linear advance settings for different materials and printing conditions.

Wizard

In order to make calibration process easier and more user friendly, there is now Wizard which guides user thru whole calibration process. Wizard is automaticaly invoked on printer setup in case that printer was not calibrated yet. It is also possible to run Wizard from menu Calibration -> Wizard. This option deletes all current calibration results and recalibrate printer using Wizard.

Host keep alive messages

Using our printer with host software devices (such as Octoprint) could led to communication timeout in some cases. Typical example is colorprint procedure. In this procedure, printer unloads current filament and waits for user to insert new filament. During waiting, serial communication was blocked. Printer did not send any messages to host nor replied to host requests. External host intepreted this state as lost communication and disconnected itself, which ruined print when printing over serial.
This has been fixed in current firmware version. If printer is in state when it can't reply to host requests, it send periodicaly messages on serial line. There are two types of messages:
echo:busy: processing
echo:busy: paused for user

First message is used typicaly when some long running blocking procedure such as M45 gcode (xyz calibration) is running. Second message is used in case that printer wait for user interaction (pressing the knob, choosing some option from menu etc.).

These messages ensures that host does not disconnect itself and also informs user what is currently happening. Messages are send periodically every 2 seconds.

SD card menu sorting

Items order in "Print from SD" menu were undefined in previous firmware version. File which was added most recently was usually shown as first item in menu. However this was not guaranteed. Deleting some files from SD card and then adding new file to the SD card could cause that this new file was not first item in menu and it was difficult to find it.
There is now possibility to sort items in "Print from SD" menu by time or aphabetically. Folders are shown on the top of SD card menu and then other files follow.
If user chooses sorting by time, items order is determined by time when files were added to SD card. Files which were added most recently to SD card are shown on top of menu.
Maximum number of items which can be sorted is 100. If there are more items, some of them will remain unsorted.
Switching between sorting by time and alphabetical sorting can be done in menu Settings -> Sort: [Type].
There is also option to turn off sorting.

Check if file is complete

Removing SD card from computer prematurely during write process leads to incomplete gcode files. There were no detection if file is complete in previous firmware versions. If user attempted to print incomplete file, print started normally and it was not possible to recognize that file is not complete and will fail.
In current firmware version when choosing file to print, printer first checks if file is complete. In case that printer detects incomplete file, user is informed by warning message.

First layer calibration

First layer calibration serves for setting correct distance between the nozzle and heatbed. In previous firmware versions, this calibration was not present in printer itself and printing V2_calibration.gcode file from SD card was used for this purpose. In current firmware version, this calibration can be run from menu Calibration -> First layer cal. Only version for PLA filament is present.
In first part of calibration, meander is printed (same as in V2 calibration) and user can adjust distance between nozzle and heatbed to correct value. One layer small rectangular object is then printed. This provides additional information to decide if first layer is set correctly or not.

Auto power mode

This is new mode for setting stepper currents which lies between silent mode and high power mode. In auto power mode, stepper currents depends on Z coordinate. They are low when Z coordinate is low and progressively enlarges during print with rising Z coordinate (when Z coordinate is higher, there is higher risk of layer shift/skipped steps, because of higher printed object mass).

XYZ calibration details menu fixed

If physical skew was lower than 0.12°, measured skew value shown in Support -> XYZ cal. details menu was 0. This is because printer does no skew compensation for very low skew (<0.12°) where measuring resolution is low and value shown in XYZ cal. details corresponded to that fact.
In current firmware version measured skew value is shown even for very low skew to provide more information about physical skew to user. Rerunning xyz calibration after uploading this new firmware version is needed to see measured skew.

M220: Speed factor

There is now possibility to save and restore speed factor using following gcodes:
M220 Sxxx sets speed factor
M220 Sxxx B sets speed factor and backups current speed factor
M220 R restore saved speed factor

Other

Improved "Print from SD" menu behavior when working with long filenames (better readability)
Saving E steps per mm to EEPROM fixed (issue prusa3d#144)
If printer waits for user to press the knob, check mark is shown in lower right display corner as shown on next figure:
wizzard_screen